:root{--font-family: "Outfit", "Noto Sans Khmer", "Khmer OS Battambang", "Hanuman", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--bg-main: #0a0d14;--bg-sidebar: #0f131c;--bg-card: rgba(20, 27, 41, .65);--bg-card-hover: rgba(28, 38, 57, .85);--border-color: rgba(255, 255, 255, .08);--border-focus: #00f2fe;--text-primary: #f3f4f6;--text-secondary: #9ca3af;--text-muted: #6b7280;--primary-gradient: linear-gradient(135deg, #00f2fe 0%, #4facfe 100%);--accent-color: #00f2fe;--accent-hover: #4facfe;--color-excellent: #10b981;--color-good: #10b981;--color-fair: #f59e0b;--color-poor: #ef4444;--sidebar-width: 400px;--header-height: 70px;--ppi: 96}*{box-sizing:border-box;margin:0;padding:0;font-family:var(--font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background-color:var(--bg-main);color:var(--text-primary);overflow:hidden;height:100vh;width:100vw}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#fff3}.app-container{display:flex;height:100vh;width:100vw;background-color:var(--bg-main)}.sidebar{width:var(--sidebar-width);background-color:var(--bg-sidebar);border-right:1px solid var(--border-color);display:flex;flex-direction:column;height:100%;overflow-y:auto;flex-shrink:0;padding:24px;gap:24px}.app-header{border-bottom:1px solid var(--border-color);padding-bottom:16px}.header-top-row{display:flex;justify-content:space-between;align-items:center}.logo{display:flex;align-items:center;gap:10px}.logo-icon{width:28px;height:28px;color:var(--accent-color);filter:drop-shadow(0 0 8px rgba(0,242,254,.3))}.logo h1{font-size:22px;font-weight:700;letter-spacing:-.5px}.accent-text{background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.subtitle{font-size:12px;color:var(--text-secondary);margin-top:4px;letter-spacing:.2px}.lang-toggle-btn{background:#ffffff0d;border:1px solid var(--border-color);color:var(--accent-color);font-size:11px;font-weight:700;padding:4px 10px;border-radius:6px;cursor:pointer;transition:all .2s ease;font-family:var(--font-family)}.lang-toggle-btn:hover{background:#00f2fe1a;border-color:var(--accent-color);box-shadow:0 0 8px #00f2fe40}.control-section{display:flex;flex-direction:column;gap:16px}.section-title{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);display:flex;align-items:center;gap:8px}.step-num{background:var(--primary-gradient);color:var(--bg-main);font-size:11px;font-weight:700;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #00f2fe33}.upload-dropzone{border:2px dashed rgba(255,255,255,.15);background-color:#ffffff05;border-radius:12px;padding:24px;text-align:center;cursor:pointer;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);overflow:hidden}.upload-dropzone:hover,.upload-dropzone.dragover{border-color:var(--accent-color);background-color:#00f2fe08;box-shadow:inset 0 0 12px #00f2fe0d}.file-input{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.upload-icon{width:36px;height:36px;color:var(--text-secondary);margin-bottom:12px;transition:transform .3s ease}.upload-dropzone:hover .upload-icon{transform:translateY(-3px);color:var(--accent-color)}.main-prompt{font-size:14px;font-weight:500;color:var(--text-primary);margin-bottom:4px}.sub-prompt{font-size:12px;color:var(--text-muted)}.presets-container{display:flex;flex-direction:column;gap:8px}.presets-label{font-size:12px;color:var(--text-muted)}.presets-list{display:flex;gap:10px}.preset-btn{flex:1;background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;padding:8px 12px;display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease;text-align:left}.preset-btn:hover{background:var(--bg-card-hover);border-color:#ffffff26;color:var(--text-primary)}.preset-btn.active{background:#00f2fe14;border-color:var(--accent-color);color:var(--text-primary);box-shadow:0 0 10px #00f2fe1a}.preset-thumbnail{width:20px;height:20px;border-radius:4px;background-size:cover;background-position:center;flex-shrink:0;border:1px solid rgba(255,255,255,.1)}.preset-1-thumb{background-image:radial-gradient(circle at 20% 30%,#7c3aed,transparent),radial-gradient(circle at 80% 70%,#06b6d4,#0f172a)}.preset-2-thumb{background-image:linear-gradient(135deg,#f43f5e,#1e1b4b)}.info-card{background:#ffffff08;border:1px solid var(--border-color);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:8px}.info-row{display:flex;justify-content:space-between;font-size:12px}.info-label{color:var(--text-secondary)}.info-val{font-weight:500;color:var(--text-primary);max-width:180px}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hidden{display:none!important}.dimensions-form{background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:16px}.input-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.input-grid-2{display:grid;grid-template-columns:1fr;gap:10px}.input-group{display:flex;flex-direction:column;gap:6px}.input-group label{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.input-group input,.input-group select{background:#0000004d;border:1px solid var(--border-color);border-radius:8px;padding:8px 10px;color:var(--text-primary);font-size:13px;font-weight:500;transition:all .2s ease;width:100%}.input-group input:focus,.input-group select:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 8px #00f2fe40;background:#00000073}.input-help{font-size:10px;color:var(--text-muted);line-height:1.3}.form-toggle-row{display:flex;align-items:center}.checkbox-container{display:flex;align-items:center;position:relative;padding-left:26px;cursor:pointer;font-size:12px;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:50%;left:0;transform:translateY(-50%);height:16px;width:16px;background-color:#ffffff0d;border:1px solid var(--border-color);border-radius:4px;transition:all .2s ease}.checkbox-container:hover input~.checkmark{background-color:#ffffff1a;border-color:#ffffff4d}.checkbox-container input:checked~.checkmark{background:var(--primary-gradient);border-color:transparent}.checkmark:after{content:"";position:absolute;display:none}.checkbox-container input:checked~.checkmark:after{display:block}.checkbox-container .checkmark:after{left:5px;top:2px;width:4px;height:8px;border:solid #0a0d14;border-width:0 2px 2px 0;transform:rotate(45deg)}.checkbox-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sub-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;margin-bottom:6px;display:block}.custom-object-creator{border-top:1px solid var(--border-color);padding-top:12px}.custom-object-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr .8fr;gap:6px}.custom-object-grid input{background:#0000004d;border:1px solid var(--border-color);border-radius:6px;padding:6px;color:#fff;font-size:12px;width:100%}.custom-object-grid input:focus{outline:none;border-color:var(--accent-color)}.active-objects-list{display:flex;flex-direction:column;gap:6px;max-height:120px;overflow-y:auto;margin-top:6px}.active-object-item{display:flex;justify-content:space-between;align-items:center;background:#ffffff05;border:1px solid var(--border-color);border-radius:6px;padding:6px 10px;font-size:11px}.active-object-item-name{font-weight:600;color:var(--text-primary)}.active-object-item-dims{color:var(--text-muted)}.delete-object-btn{background:none;border:none;color:var(--color-poor);cursor:pointer;padding:2px;opacity:.7;transition:opacity .2s ease;display:flex;align-items:center}.delete-object-btn:hover{opacity:1}.delete-object-btn svg{width:14px;height:14px}.password-input-wrapper{position:relative;display:flex;align-items:center}.password-input-wrapper input{padding-right:36px}.toggle-password-btn{position:absolute;right:10px;background:none;border:none;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;padding:0;transition:color .2s ease}.toggle-password-btn:hover{color:var(--text-secondary)}.password-toggle-icon{width:16px;height:16px}.console-log-container{background:#06090e;border:1px solid #162031;border-radius:8px;padding:10px;font-family:monospace;font-size:11px;display:flex;flex-direction:column;gap:8px;box-shadow:inset 0 2px 8px #000c}.console-header{display:flex;justify-content:space-between;align-items:center;color:var(--text-muted);border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:4px}.console-body{max-height:80px;overflow-y:auto;display:flex;flex-direction:column;gap:4px;color:#a7f3d0;line-height:1.4;scroll-behavior:smooth}.console-line{word-break:break-all}.console-line-error{color:#fca5a5}.console-spinner{width:12px;height:12px;border:2px solid var(--accent-color);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.verdict-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:16px;position:relative;overflow:hidden;transition:border-color .3s ease}.verdict-header{display:flex;justify-content:space-between;align-items:center}.badge{padding:6px 12px;border-radius:20px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;background:#ffffff1a;color:var(--text-primary)}.badge.excellent{background:#10b98126;color:var(--color-excellent);border:1px solid rgba(16,185,129,.25)}.badge.good{background:#10b98126;color:var(--color-good);border:1px solid rgba(16,185,129,.25)}.badge.fair{background:#f59e0b26;color:var(--color-fair);border:1px solid rgba(245,158,11,.25)}.badge.poor{background:#ef444426;color:var(--color-poor);border:1px solid rgba(239,68,68,.25)}.dpi-display{display:flex;align-items:baseline;gap:2px}.dpi-number{font-size:32px;font-weight:700;letter-spacing:-1px}.dpi-unit{font-size:12px;font-weight:600;color:var(--text-secondary)}.gauge-container{display:flex;flex-direction:column;gap:6px}.gauge-track{height:6px;background:#ffffff0d;border-radius:3px;position:relative;overflow:hidden}.gauge-bar{height:100%;border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1),background-color .5s ease;background-color:var(--accent-color)}.gauge-markers{display:flex;justify-content:space-between;font-size:9px;color:var(--text-muted);font-weight:600;padding:0 2px}.verdict-description{font-size:13px;line-height:1.5;color:var(--text-secondary)}.distance-tip{display:flex;gap:12px;background:#ffffff05;border:1px solid rgba(255,255,255,.03);border-radius:8px;padding:10px 12px;align-items:center}.distance-icon{width:24px;height:24px;color:var(--accent-color);flex-shrink:0}.tip-title{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px}.tip-body{font-size:13px;font-weight:600;color:var(--text-primary)}.btn{border-radius:8px;font-size:13px;font-weight:600;padding:10px 16px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s cubic-bezier(.4,0,.2,1);border:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:6px 12px;font-size:11px;border-radius:6px}.btn-primary{background:var(--primary-gradient);color:var(--bg-main);box-shadow:0 4px 12px #00f2fe33}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 16px #00f2fe4d}.btn-secondary{background:#ffffff0a;border:1px solid var(--border-color);color:var(--text-secondary)}.btn-secondary:hover:not(:disabled){background:#ffffff14;border-color:#fff3;color:var(--text-primary)}.btn-full{width:100%}.btn-icon{width:16px;height:16px}.link-btn{background:none;border:none;color:var(--accent-color);font-size:12px;font-weight:600;cursor:pointer;text-decoration:underline;padding:0}.link-btn:hover{color:var(--accent-hover)}.content-area{flex-grow:1;display:flex;flex-direction:column;height:100%;background:var(--bg-main)}.tabs-header{display:flex;border-bottom:1px solid var(--border-color);background:var(--bg-sidebar);padding:0 24px;height:var(--header-height);align-items:flex-end;gap:12px}.tab-btn{background:none;border:none;border-bottom:3px solid transparent;padding:16px 20px;color:var(--text-secondary);font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:8px;transition:all .2s ease}.tab-btn:hover{color:var(--text-primary)}.tab-btn.active{color:var(--text-primary);border-color:var(--accent-color)}.tab-icon{width:18px;height:18px}.tabs-content{flex-grow:1;overflow:hidden;position:relative}.tab-pane{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;padding:24px;opacity:0;pointer-events:none;transition:opacity .3s ease}.tab-pane.active{opacity:1;pointer-events:auto}.pane-header{margin-bottom:24px}.pane-header h3{font-size:18px;font-weight:600;color:var(--text-primary)}.pane-header p{font-size:13px;color:var(--text-secondary);margin-top:4px}.room-visualizer-container{flex-grow:1;background-color:#0b0f19;border:1px solid var(--border-color);border-radius:16px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;padding:40px;box-shadow:inset 0 0 30px #00000080;background-image:radial-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.01) 1px,transparent 1px);background-size:20px 20px,100px 100px}.room-scene{width:800px;height:400px;position:relative;display:flex;justify-content:center;align-items:flex-end;border-bottom:2px solid rgba(255,255,255,.1);overflow:visible}.floor{position:absolute;bottom:0;left:-200px;right:-200px;height:12px;background:linear-gradient(180deg,#ffffff08,#ffffff03);transform:skew(-45deg);border-top:1px solid rgba(255,255,255,.08);z-index:2;pointer-events:none}.wallpaper-container{position:absolute;bottom:0;display:flex;align-items:flex-end;justify-content:center;z-index:1}.wallpaper-aspect-wrapper{position:relative;box-shadow:0 20px 50px #000c,0 0 2px #fff3;border-radius:4px;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:width .5s cubic-bezier(.4,0,.2,1),height .5s cubic-bezier(.4,0,.2,1);background-color:#121824}.wallpaper-glow{position:absolute;top:-10px;left:-10px;right:-10px;bottom:-10px;background:var(--primary-gradient);filter:blur(20px);opacity:.15;z-index:-1;transition:opacity .3s ease}.wallpaper-img{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .5s ease}.wallpaper-img.loaded{opacity:1}.fit-mode-fill{object-fit:cover}.fit-mode-fit{object-fit:contain;background:#000}.fit-mode-stretch{object-fit:fill}.room-object{position:absolute;z-index:4;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;display:flex;flex-direction:column;align-items:center;transition:transform .15s cubic-bezier(.2,.8,.2,1),filter .15s ease,opacity .3s ease}.room-object:hover{filter:brightness(1.1) drop-shadow(0 8px 12px rgba(0,0,0,.5))}.room-object.dragging{cursor:grabbing;z-index:10;transform:scale(1.04);filter:brightness(1.15) drop-shadow(0 15px 24px rgba(0,0,0,.6))}.room-object-svg{width:100%;height:100%;display:block}.room-object-label{position:absolute;top:-20px;font-size:9px;font-weight:600;background:#080c15d9;color:var(--text-secondary);border:1px solid rgba(255,255,255,.1);padding:1px 6px;border-radius:4px;white-space:nowrap;pointer-events:none;opacity:.7;transition:opacity .2s ease}.room-object:hover .room-object-label,.room-object.dragging .room-object-label{opacity:1}.object-sofa{color:#94a3b8cc}.object-bed{color:#818cf8cc}.object-rack{color:#f43f5ecc}.object-aircon{color:#ffffffe6}.object-custom{color:#00f2feb3}.object-person{color:#f59e0bcc}.custom-box-render{width:100%;height:100%;border:2px dashed var(--accent-color);background:#00f2fe14;border-radius:8px;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 10px #00f2fe26}.custom-box-text{font-size:10px;font-weight:700;color:var(--text-primary);text-align:center;padding:4px}.plant{position:absolute;bottom:0;left:40px;width:50px;height:90px;z-index:2;color:#ffffff2e;pointer-events:none}.plant-svg{width:100%;height:100%}.lamp{position:absolute;bottom:0;right:40px;width:40px;height:110px;z-index:2;color:#ffffff2e;pointer-events:none}.lamp-svg{width:100%;height:100%}.dimensions-ruler-w{position:absolute;bottom:-35px;display:flex;align-items:center;justify-content:space-between;width:0;color:var(--accent-color);font-size:11px;font-weight:700;transition:width .5s cubic-bezier(.4,0,.2,1),left .5s cubic-bezier(.4,0,.2,1);z-index:20}.dimensions-ruler-w .ruler-line{height:8px;width:1px;background-color:var(--accent-color)}.dimensions-ruler-w:after{content:"";position:absolute;left:0;right:0;height:1px;background-color:var(--accent-color);z-index:0}.ruler-text{background-color:var(--bg-main);padding:2px 8px;border-radius:10px;border:1px solid rgba(0,242,254,.2);z-index:1}.dimensions-ruler-h{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:space-between;height:0;color:var(--accent-color);font-size:11px;font-weight:700;transition:height .5s cubic-bezier(.4,0,.2,1),bottom .5s cubic-bezier(.4,0,.2,1);z-index:20}.dimensions-ruler-h .ruler-line{width:8px;height:1px;background-color:var(--accent-color)}.dimensions-ruler-h:after{content:"";position:absolute;top:0;bottom:0;width:1px;background-color:var(--accent-color);z-index:0}.inspector-layout{flex-grow:1;display:grid;grid-template-columns:1fr 340px;gap:24px;min-height:0}.canvas-panel{background-color:#0b0f19;border:1px solid var(--border-color);border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;position:relative;overflow:hidden;box-shadow:inset 0 0 20px #0006}.canvas-wrapper{position:relative;max-width:100%;max-height:82%;display:inline-block;cursor:crosshair;border-radius:4px;overflow:hidden;box-shadow:0 10px 30px #00000080;border:1px solid rgba(255,255,255,.1)}.canvas-wrapper img{display:block;max-width:100%;max-height:400px;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none}.inspection-reticle{position:absolute;border:2px solid var(--accent-color);background-color:#00f2fe1a;box-shadow:0 0 8px #00f2fe66;width:40px;height:40px;border-radius:4px;pointer-events:none;transform:translate(-50%,-50%);display:none}.hint-message{margin-top:16px;font-size:12px;color:var(--text-muted);display:flex;align-items:center;gap:6px}.hint-icon{width:14px;height:14px}.distance-selector{display:flex;align-items:center;gap:12px;margin-top:10px;background:#ffffff05;border:1px solid var(--border-color);border-radius:8px;padding:6px 12px;width:max-content}.distance-selector span{font-size:12px;color:var(--text-secondary);font-weight:500}.btn-group{display:flex;border-radius:6px;background:#00000040;overflow:hidden;border:1px solid var(--border-color)}.btn-group-item{background:none;border:none;color:var(--text-secondary);font-weight:500;padding:6px 12px;cursor:pointer;font-size:11px;transition:all .2s ease;border-right:1px solid var(--border-color)}.btn-group-item:last-child{border-right:none}.btn-group-item.active{background:var(--primary-gradient);color:var(--bg-main);font-weight:600}.inspector-panel{display:flex;flex-direction:column}.panel-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:16px;padding:24px;display:flex;flex-direction:column;gap:20px;height:100%}.glass-panel{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.panel-card-header{display:flex;justify-content:space-between;align-items:center}.panel-card-header h4{font-size:15px;font-weight:600;color:var(--text-primary)}.badge-outline{border:1px solid rgba(255,255,255,.15);color:var(--text-secondary);font-size:10px}.magnifier-window-container{display:flex;align-items:center;justify-content:center;flex-grow:1;min-height:250px;background:#00000026;border-radius:12px;border:1px solid rgba(255,255,255,.03)}.magnifier-lens{width:calc(3.937 * var(--ppi) * 1px);height:calc(3.937 * var(--ppi) * 1px);max-width:250px;max-height:250px;border-radius:12px;overflow:hidden;box-shadow:0 20px 40px #0009,0 0 0 3px #ffffff26;position:relative;background-color:#0d121c;transition:width .2s ease,height .2s ease}.magnifier-content{width:100%;height:100%;background-repeat:no-repeat;background-position:center}.magnifier-grid-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:10% 10%;box-shadow:inset 0 0 15px #00000080}.scale-disclaimer{display:flex;flex-direction:column;gap:12px;font-size:12px;line-height:1.5;color:var(--text-secondary)}.calibration-prompt-box{background:#ffffff05;border-top:1px solid var(--border-color);padding-top:12px;display:flex;justify-content:space-between;align-items:center}.calibration-prompt-box span{color:var(--text-muted)}.modal-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#04060ad9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:999;display:flex;align-items:center;justify-content:center;opacity:1;transition:opacity .2s ease}.modal-card{width:480px;background:#0f1422;border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:24px;display:flex;flex-direction:column;gap:20px;box-shadow:0 30px 60px #0009}.modal-header{display:flex;justify-content:space-between;align-items:center}.modal-header h3{font-size:18px;font-weight:600;color:var(--text-primary)}.close-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px;display:flex;align-items:center;transition:color .2s ease}.close-btn:hover{color:var(--text-primary)}.close-btn svg{width:20px;height:20px}.modal-body{display:flex;flex-direction:column;gap:16px}.modal-explanation{font-size:13px;line-height:1.5;color:var(--text-secondary)}.calibration-instructions{background:#00f2fe0a;border:1px solid rgba(0,242,254,.15);border-radius:8px;padding:12px;font-size:12px;line-height:1.4;color:var(--text-primary);display:flex;flex-direction:column;gap:4px}.step-badge{color:var(--accent-color);font-weight:700;text-transform:uppercase;font-size:9px;letter-spacing:1px}.virtual-card-container{display:flex;align-items:center;justify-content:center;height:160px;background:#0003;border-radius:12px}.virtual-card{width:calc(3.37 * var(--ppi) * 1px);height:calc(2.125 * var(--ppi) * 1px);max-width:300px;max-height:190px;background:linear-gradient(135deg,#1f2937,#111827);border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:12px;position:relative;color:#fff;box-shadow:0 10px 20px #00000080;display:flex;flex-direction:column;justify-content:space-between}.card-chip{width:24px;height:18px;background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:4px}.card-logo{position:absolute;top:12px;right:12px;width:24px;height:24px;border-radius:50%;background-color:#ffffff1a;border:1px solid rgba(255,255,255,.2)}.card-number{font-family:monospace;font-size:11px;letter-spacing:1.5px;color:#fffc;margin-top:10px}.card-name{font-size:8px;font-weight:700;letter-spacing:.5px;color:#fff6}.calibration-controls{display:flex;flex-direction:column;gap:12px}.slider-group{display:flex;flex-direction:column;gap:6px}.slider-group label{font-size:12px;font-weight:600;color:var(--text-secondary)}.range-slider{-webkit-appearance:none;width:100%;height:6px;background:#ffffff1a;border-radius:3px;outline:none}.range-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent-color);cursor:pointer;box-shadow:0 0 10px #00f2fe80;transition:transform .1s ease}.range-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.ppi-readout{display:flex;align-items:baseline;gap:6px}.ppi-value{font-size:20px;font-weight:700;color:var(--accent-color)}.ppi-label{font-size:12px;color:var(--text-secondary)}.presets-row{display:flex;gap:8px;align-items:center;font-size:11px;color:var(--text-muted)}.btn-preset{font-size:10px;padding:4px 8px;background:#ffffff08;border-color:#ffffff0d}.btn-preset:hover{background:#ffffff12}.modal-footer{border-top:1px solid var(--border-color);padding-top:16px;display:flex;justify-content:flex-end}.animate-pop{animation:popIn .3s cubic-bezier(.34,1.56,.64,1)}@keyframes popIn{0%{opacity:0;transform:scale(.92) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@media (max-width: 1024px){.app-container{flex-direction:column;overflow-y:auto;height:auto}.sidebar{width:100%;height:auto;border-right:none;border-bottom:1px solid var(--border-color)}.content-area{height:calc(100vh - 70px)}}
