.code-debug-panel{background:#2a2a2a;border:1px solid #ff6b6b;border-radius:6px;margin:12px 0;overflow:hidden;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px}.debug-header{background:#3a3a3a;padding:10px 14px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none;border-bottom:1px solid #ff6b6b}.debug-header:hover{background:#404040}.debug-title{color:#ff6b6b;font-weight:600;font-size:14px}.debug-actions{display:flex;align-items:center;gap:8px}.debug-button{background:transparent;border:none;color:#999;cursor:pointer;padding:2px 6px;font-size:16px;line-height:1}.debug-button:hover{color:#fff}.expand-icon{color:#999;font-size:12px}.debug-content{padding:14px;max-height:500px;overflow-y:auto}.debug-section{margin-bottom:16px}.debug-section:last-child{margin-bottom:0}.debug-label{color:#aaa;font-size:12px;font-weight:600;margin-bottom:6px;display:flex;justify-content:space-between;align-items:center}.debug-text{color:#fff;line-height:1.4;padding:8px;background:#1a1a1a;border-radius:4px}.error-type{color:#ff6b6b;font-weight:600}.error-message{color:#fc6}.debug-code,.debug-traceback{margin:0;padding:10px;background:#1a1a1a;border-radius:4px;overflow-x:auto;color:#e0e0e0;line-height:1.5;max-height:300px;overflow-y:auto}.debug-code code,.debug-traceback code{font-family:inherit;font-size:inherit}.copy-button{background:#4a4a4a;border:1px solid #666;color:#fff;padding:4px 10px;border-radius:4px;cursor:pointer;font-size:11px;font-weight:500;transition:all .2s}.copy-button:hover{background:#5a5a5a;border-color:#888}.debug-actions-bar{margin-top:12px;padding-top:12px;border-top:1px solid #444;display:flex;gap:8px}.retry-button{background:#4a90e2;border:none;color:#fff;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500;transition:background .2s}.retry-button:hover{background:#357abd}.retry-button:active{background:#2a5d8f}.debug-content::-webkit-scrollbar,.debug-code::-webkit-scrollbar,.debug-traceback::-webkit-scrollbar{width:8px;height:8px}.debug-content::-webkit-scrollbar-track,.debug-code::-webkit-scrollbar-track,.debug-traceback::-webkit-scrollbar-track{background:#1a1a1a;border-radius:4px}.debug-content::-webkit-scrollbar-thumb,.debug-code::-webkit-scrollbar-thumb,.debug-traceback::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.debug-content::-webkit-scrollbar-thumb:hover,.debug-code::-webkit-scrollbar-thumb:hover,.debug-traceback::-webkit-scrollbar-thumb:hover{background:#555}.welcome-guide{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;background:#3a3a5ad9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overflow-y:auto;padding:40px 24px}.welcome-guide.landing-mode{position:relative;inset:unset;background:#0d0f14;-webkit-backdrop-filter:none;backdrop-filter:none;flex:1;overflow-y:auto;padding:48px 24px;min-height:0}.welcome-content{max-width:680px;margin:0 auto;display:flex;flex-direction:column;gap:24px}.welcome-card{background:#1a1d27;border:1px solid #2e3040;border-radius:8px;padding:24px}.welcome-hero{text-align:center}.welcome-hero h1{font-size:1.75rem;font-weight:700;color:#fff;margin:0 0 8px}.welcome-subtitle{font-size:1rem;color:#aaa;margin:0 0 24px}.welcome-pathways{display:flex;gap:16px}.welcome-pathway{flex:1;background:#0d0f14;border:1px solid #2e3040;border-radius:8px;padding:20px 16px;color:#888}.welcome-pathway h3{font-size:.95rem;font-weight:600;color:#fff;margin:12px 0 8px}.welcome-pathway p{font-size:.8rem;color:#999;margin:0;line-height:1.4}.welcome-card h2{font-size:1rem;font-weight:600;color:#fff;margin:0 0 16px}.welcome-steps{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.welcome-step{display:flex;align-items:flex-start;gap:12px}.step-number{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#5b8def;color:#fff;font-size:.8rem;font-weight:600}.welcome-step strong{font-size:.875rem;color:#ddd}.welcome-step p{font-size:.8rem;color:#999;margin:2px 0 0}.welcome-examples-label{font-size:.8rem;color:#888;margin-bottom:8px}.welcome-example{background:#0d0f14;border:1px solid #2e3040;border-radius:8px;padding:12px 16px;font-family:monospace;font-size:.8rem;color:#ccc;margin-bottom:8px}.welcome-example:last-child{margin-bottom:0}.welcome-tips{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.welcome-tips li{font-size:.85rem;color:#ccc;padding-left:16px;position:relative;line-height:1.4}.welcome-tips li:before{content:"•";position:absolute;left:0;color:#5b8def}.welcome-sketch-btn{display:inline-flex;align-items:center;gap:8px;margin-top:16px;padding:10px 20px;border:1px solid #5b8def;border-radius:8px;background:transparent;color:#5b8def;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.welcome-sketch-btn:hover{background:#5b8def;color:#fff}.welcome-card-text{font-size:.85rem;color:#ccc;margin:0 0 12px;line-height:1.4}.welcome-card-hint{font-size:.8rem;color:#888;margin:12px 0 0;font-style:italic}.welcome-footer{display:flex;flex-direction:column;align-items:center;gap:12px;padding:8px 0 16px}.welcome-cta-btn{background:#5b8def;color:#fff;border:none;border-radius:8px;padding:14px 40px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.welcome-cta-btn:hover{background:#7aa3f5}.welcome-footer-hint{font-size:.8rem;color:#666;margin:0}.welcome-footer-hint strong{color:#888}.auth-button-container{position:relative;display:flex;align-items:center;gap:6px}.auth-credit-badge{display:flex;align-items:center;gap:3px;padding:3px 7px;border-radius:10px;background:#5b8def26;border:1px solid rgba(91,141,239,.3);color:#8ab4f8;font-size:11px;font-weight:600;white-space:nowrap}.auth-credit-badge.low{background:#ffc10726;border-color:#ffc1074d;color:#ffc107}.auth-credit-badge.empty{background:#f4433626;border-color:#f443364d;color:#f44336}.auth-signin-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#ccc;padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px}.auth-signin-btn:hover{background:#ffffff26;color:#fff}.auth-avatar-btn{background:none;border:none;cursor:pointer;padding:0}.auth-avatar{width:32px;height:32px;border-radius:50%;border:2px solid rgba(255,255,255,.2)}.auth-avatar-fallback{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#5b8def;color:#fff;font-size:14px;font-weight:600}.auth-menu{position:absolute;top:100%;right:0;margin-top:6px;background:#1e2a45;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:6px 0;min-width:180px;z-index:100;box-shadow:0 4px 12px #0000004d}.auth-menu-email{padding:8px 14px;font-size:12px;color:#888;border-bottom:1px solid rgba(255,255,255,.05)}.auth-menu-hint{padding:6px 14px 4px;font-size:11px;color:#555;border-bottom:1px solid rgba(255,255,255,.05)}.auth-menu-item{display:block;width:100%;text-align:left;background:none;border:none;color:#ccc;padding:8px 14px;font-size:13px;cursor:pointer}.auth-menu-item:hover{background:#ffffff0d;color:#fff}.credit-cost-flash{color:#f44336;font-size:10px;font-weight:700;margin-left:2px;animation:cost-fade 3s ease-out forwards}@keyframes cost-fade{0%{opacity:1;transform:translateY(0)}70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}.credit-get-more{font-size:9px;font-weight:600;opacity:.8;margin-left:2px;text-transform:uppercase;letter-spacing:.03em}.feature-manifest-panel{margin:12px 16px 0;border-radius:8px;overflow:hidden;flex-shrink:0;border:1px solid #2a2a3a}.manifest-header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#1a1d27;border-bottom:1px solid #2a2a3a;cursor:pointer;-webkit-user-select:none;user-select:none}.manifest-title{font-size:.75rem;font-weight:600;color:#88c;text-transform:uppercase;letter-spacing:.05em;flex:1}.manifest-confidence{font-size:.65rem;font-weight:600;padding:1px 6px;border-radius:3px}.manifest-confidence.high{background:#88cc8826;color:#8c8}.manifest-confidence.med{background:#cccc6626;color:#cc6}.manifest-confidence.low{background:#cc666626;color:#c66}.manifest-dismiss{padding:2px 8px;border:1px solid #2a2a3a;border-radius:4px;background:transparent;color:#88c;font-size:.7rem;cursor:pointer;transition:all .2s}.manifest-dismiss:hover{background:#2a2a3a;color:#aad}.manifest-collapse{font-size:.6rem;color:#666}.manifest-body{background:#12121e}.manifest-section{padding:6px 12px;font-size:.78rem;color:#aaa;border-bottom:1px solid #1a1a2a}.manifest-label{color:#888;font-weight:600}.manifest-value{color:#ccc}.manifest-dims{display:block;font-size:.72rem;color:#777;margin-top:2px}.manifest-features{display:flex;flex-direction:column}.manifest-feature{display:flex;align-items:center;gap:6px;padding:5px 12px;font-size:.78rem;border-bottom:1px solid #1a1a2a}.manifest-feature.found{color:#8c8}.manifest-feature.missing{color:#ca6;background:#2e2a1a}.feature-icon{flex-shrink:0;font-size:.8rem}.feature-id{font-weight:600;min-width:24px;color:inherit}.feature-type{color:inherit;opacity:.8}.feature-dim{color:inherit;opacity:.7;font-size:.72rem}.feature-face{margin-left:auto;font-size:.68rem;color:#777;font-style:italic}.manifest-status{padding:6px 12px;font-size:.72rem;font-weight:600}.manifest-status.pass{background:#1a2e20;color:#8c8}.manifest-status.warn{background:#2e2a1a;color:#ca6}.manifest-disclaimer{padding:5px 12px;font-size:.68rem;color:#666;font-style:italic;border-top:1px solid #1a1a2a}.feedback-rating{position:absolute;bottom:72px;left:12px;display:flex;align-items:center;gap:4px;background:#1a1a2ed9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #2e3040;border-radius:8px;padding:4px 8px;z-index:20}.feedback-btn{background:none;border:none;color:#888;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;transition:color .15s,background .15s}.feedback-btn:hover{color:#ccc;background:#ffffff14}.feedback-btn:disabled{opacity:.5;cursor:default}.feedback-up.active{color:#4ade80}.feedback-down.active{color:#f87171}.feedback-comment{display:flex;align-items:center;gap:4px;margin-left:4px}.feedback-comment input{background:#ffffff0f;border:1px solid #2e3040;border-radius:4px;color:#e0e0e0;padding:3px 8px;font-size:12px;width:160px;outline:none}.feedback-comment input:focus{border-color:#4a4a7a}.feedback-comment button{background:#6366f14d;border:1px solid rgba(99,102,241,.4);color:#c4b5fd;font-size:11px;padding:3px 8px;border-radius:4px;cursor:pointer;white-space:nowrap}.feedback-comment button:hover{background:#6366f180}.feedback-thanks{font-size:11px;color:#888;margin-left:4px}.feedback-prompt-label{font-size:11px;color:#aaa;margin-right:2px;white-space:nowrap}.feedback-rating.prompted{animation:feedback-pulse .5s ease-out;border-color:#6366f180}@keyframes feedback-pulse{0%{box-shadow:0 0 #6366f180}70%{box-shadow:0 0 0 6px #6366f100}to{box-shadow:0 0 #6366f100}}.gear-spec-sheet{border:1px solid #2e3040;border-radius:6px;overflow:hidden;margin-top:6px}.gear-spec-header{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;background:#6366f114;cursor:pointer;-webkit-user-select:none;user-select:none}.gear-spec-header:hover{background:#6366f124}.gear-spec-title{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:#c4b5fd;letter-spacing:.02em}.gear-spec-header-actions{display:flex;align-items:center;gap:8px}.gear-spec-copy{background:none;border:1px solid rgba(99,102,241,.3);color:#a78bfa;font-size:10px;padding:2px 8px;border-radius:3px;cursor:pointer;white-space:nowrap}.gear-spec-copy:hover{background:#6366f133}.gear-spec-chevron{color:#666;transition:transform .15s}.gear-spec-chevron.open{transform:rotate(180deg)}.gear-spec-table{width:100%;border-collapse:collapse;font-size:11.5px}.gear-spec-table tr{border-bottom:1px solid rgba(46,48,64,.6)}.gear-spec-table tr:last-child{border-bottom:none}.gear-spec-table tr:nth-child(2n){background:#ffffff04}.gear-spec-note-row .gear-spec-label{color:#666;font-style:italic}.gear-spec-label{padding:4px 10px;color:#888;width:55%;white-space:nowrap}.gear-spec-value{padding:4px 10px 4px 0;color:#e0e0e0;font-variant-numeric:tabular-nums;font-weight:500}.gear-spec-unit{color:#666;font-weight:400;font-size:10px}.gear-spec-formula{color:#888;font-size:10.5px;font-family:monospace;font-style:italic}.gear-hint{font-size:12px;color:#888;border-top:1px solid #1e1e2e;padding-top:6px;margin-top:2px}.gear-hint-toggle{background:none;border:none;color:#666;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:11px;padding:2px 0;width:100%;text-align:left}.gear-hint-toggle:hover{color:#999}.gear-hint-chevron{margin-left:auto;transition:transform .15s}.gear-hint-chevron.open{transform:rotate(180deg)}.gear-hint-body{margin-top:6px;padding:8px 10px;background:#ffffff08;border:1px solid #1e1e2e;border-radius:6px}.gear-hint-section{display:flex;flex-direction:column;gap:3px}.gear-hint-row{display:flex;align-items:baseline;gap:5px;font-size:11px;line-height:1.5}.gear-hint-check{width:12px;flex-shrink:0;font-size:10px}.supported .gear-hint-check{color:#4ade80}.unsupported .gear-hint-check{color:#555}.gear-hint-name{color:#ccc;white-space:nowrap}.unsupported .gear-hint-name{color:#555}.gear-hint-desc{color:#555;font-size:10px}.gear-hint-divider{height:1px;background:#1e1e2e;margin:6px 0}.gear-hint-dismiss{background:none;border:none;color:#444;font-size:10px;cursor:pointer;padding:4px 0 0;display:block;margin-left:auto}.gear-hint-dismiss:hover{color:#666}.issue-reporter-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200}.issue-reporter{position:absolute;top:48px;left:12px;width:260px;background:#1a1a2e;border:1px solid #2e3040;border-radius:8px;padding:12px;box-shadow:0 4px 24px #00000080;z-index:201}.issue-reporter-header{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:#ccc;margin-bottom:10px}.issue-reporter-close{background:none;border:none;color:#666;cursor:pointer;font-size:16px;line-height:1;padding:0 2px}.issue-reporter-close:hover{color:#ccc}.issue-reporter-select{width:100%;background:#ffffff0f;border:1px solid #2e3040;border-radius:4px;color:#e0e0e0;padding:6px 8px;font-size:12px;margin-bottom:8px;cursor:pointer}.issue-reporter-select option{background:#1a1a2e;color:#e0e0e0}.issue-reporter-textarea{width:100%;background:#ffffff0f;border:1px solid #2e3040;border-radius:4px;color:#e0e0e0;padding:6px 8px;font-size:12px;resize:vertical;margin-bottom:10px;box-sizing:border-box;font-family:inherit}.issue-reporter-textarea:focus{outline:none;border-color:#4a4a7a}.issue-reporter-actions{display:flex;gap:8px;justify-content:flex-end}.issue-reporter-cancel{background:none;border:1px solid #2e3040;color:#888;font-size:12px;padding:4px 12px;border-radius:4px;cursor:pointer}.issue-reporter-cancel:hover{color:#ccc;border-color:#4a4a7a}.issue-reporter-submit{background:#ef444433;border:1px solid rgba(239,68,68,.4);color:#fca5a5;font-size:12px;padding:4px 14px;border-radius:4px;cursor:pointer}.issue-reporter-submit:hover:not(:disabled){background:#ef444459}.issue-reporter-submit:disabled{opacity:.4;cursor:default}.issue-reporter-thanks{font-size:13px;color:#4ade80;text-align:center;margin:8px 0}.admin-page{background:#1a1d27;width:100%;height:100vh;display:flex;flex-direction:column;overflow:hidden}.admin-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #2e3040}.admin-header h2{margin:0;color:#eee;font-size:18px}.admin-close{background:none;border:none;color:#888;font-size:24px;cursor:pointer;padding:0 4px;line-height:1}.admin-close:hover{color:#eee}.admin-content{padding:20px 24px;overflow-y:auto;flex:1}.admin-loading,.admin-forbidden,.admin-error{padding:40px;text-align:center;color:#888;font-size:14px}.admin-forbidden{color:#e06}.admin-error{color:#f44}.admin-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:24px}.admin-card{background:#1a1d27;border:1px solid #2e3040;border-radius:8px;padding:16px}.admin-card h3{margin:0 0 12px;color:#5b8def;font-size:12px;text-transform:uppercase;letter-spacing:1px}.admin-stat{color:#eee;font-size:20px;font-weight:600;display:inline-block;margin-right:16px;margin-bottom:4px}.admin-stat span{display:block;font-size:11px;color:#888;font-weight:400;margin-top:2px}.admin-section{margin-bottom:24px}.admin-section h3{color:#5b8def;font-size:13px;text-transform:uppercase;letter-spacing:1px;margin:0 0 12px}.admin-chart{display:flex;align-items:flex-end;gap:8px;height:120px;padding:0 4px}.admin-chart-bar-container{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end}.admin-chart-bar{width:100%;max-width:60px;background:#5b8def;border-radius:4px 4px 0 0;min-height:2px;position:relative;transition:height .3s ease}.admin-chart-count{position:absolute;top:-18px;left:50%;transform:translate(-50%);font-size:11px;color:#aaa}.admin-chart-label{font-size:11px;color:#888;margin-top:6px}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th{text-align:left;color:#888;font-weight:500;padding:8px 12px;border-bottom:1px solid #2e3040}.admin-table td{color:#ddd;padding:8px 12px;border-bottom:1px solid rgba(42,42,74,.5)}.admin-table tr:hover td{background:#5b8def1a}.admin-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.admin-section-header h3{margin:0}.admin-clear-btn{background:#f4433626;border:1px solid rgba(244,67,54,.3);color:#ef5350;padding:4px 12px;border-radius:4px;cursor:pointer;font-size:12px}.admin-clear-btn:hover{background:#f4433640}.admin-clear-btn:disabled{opacity:.5;cursor:not-allowed}.admin-errors-log{max-height:250px;overflow-y:auto}.admin-error-entry{display:flex;gap:12px;padding:8px 0;border-bottom:1px solid rgba(42,42,74,.5);font-size:12px;align-items:baseline}.admin-error-time{color:#888;white-space:nowrap;flex-shrink:0}.admin-error-type{color:#e06;white-space:nowrap;flex-shrink:0;font-weight:500}.admin-error-msg{color:#ccc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-grant-btn{background:#5b8def33;border:1px solid rgba(91,141,239,.4);color:#8ab4f8;padding:3px 10px;border-radius:4px;cursor:pointer;font-size:12px}.admin-grant-btn:hover{background:#5b8def59}.admin-grant-form{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.admin-grant-form input{background:#1a1d27;border:1px solid #2e3040;color:#ddd;padding:6px 10px;border-radius:6px;font-size:13px;flex:1;min-width:100px}.admin-grant-form input:focus{outline:none;border-color:#5b8def}.admin-grant-form input[type=number]{max-width:100px;flex:0}.admin-grant-form button{background:#5b8def;border:none;color:#fff;padding:6px 16px;border-radius:6px;cursor:pointer;font-size:13px;white-space:nowrap}.admin-grant-form button:hover{background:#7aa3f5}.admin-grant-form button:disabled{opacity:.5;cursor:not-allowed}.admin-grant-message{margin-top:8px;padding:6px 10px;border-radius:4px;font-size:12px}.admin-grant-message.success{background:#4caf5026;color:#81c784}.admin-grant-message.error{background:#f4433626;color:#ef5350}.admin-trace-section{margin-top:8px}.admin-trace-controls{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.admin-trace-controls input[type=date]{background:#1a1d27;border:1px solid #2e3040;color:#ddd;padding:6px 10px;border-radius:6px;font-size:13px}.admin-trace-controls input[type=date]:focus{outline:none;border-color:#5b8def}.admin-trace-controls button{background:#5b8def;border:none;color:#fff;padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px}.admin-trace-controls button:hover{background:#7aa3f5}.admin-trace-controls button:disabled{opacity:.5;cursor:not-allowed}.admin-trace-count{color:#888;font-size:12px;margin-left:4px}.admin-trace-error{color:#ef5350;font-size:13px;margin-bottom:8px}.admin-trace-empty{color:#888;font-size:13px;padding:16px 0}.admin-trace-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-trace-table{min-width:500px}.admin-trace-row{cursor:pointer;transition:background .15s}.admin-trace-row:hover td{background:#5b8def26}.admin-trace-row.expanded td{background:#5b8def1a;border-bottom-color:transparent}.admin-trace-model{font-size:11px;color:#aaa}.admin-trace-status{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.admin-trace-status-ok{background:#4caf5026;color:#81c784}.admin-trace-status-error{background:#f4433626;color:#ef5350}.admin-trace-status-unknown{background:#ffc10726;color:#ffc107}.admin-trace-detail-row td{padding:0 12px 12px;border-bottom:1px solid #2e3040}.admin-trace-detail{padding:8px 0}.admin-trace-detail-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:#aaa;margin-bottom:10px}.admin-trace-details-block{margin-bottom:6px}.admin-trace-details-block summary{cursor:pointer;font-size:12px;font-weight:600;color:#8ab4f8;padding:4px 0;-webkit-user-select:none;user-select:none}.admin-trace-details-block summary:hover{color:#aad0ff}.admin-trace-prompt{background:#0d1117;border:1px solid #2e3040;border-radius:6px;padding:10px 12px;font-family:Courier New,Courier,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;max-height:400px;overflow-y:auto;margin:4px 0 0}.admin-trace-error-text{color:#ef5350}.admin-tabs{display:flex;border-bottom:1px solid #2e3040;overflow-x:auto;padding:0 24px;gap:0;flex-shrink:0}.admin-tab{background:none;border:none;color:#888;font-size:13px;font-weight:500;padding:10px 16px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;transition:color .15s,border-color .15s}.admin-tab:hover{color:#ccc}.admin-tab.active{color:#8ab4f8;border-bottom-color:#8ab4f8}.admin-filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;align-items:center}.admin-filter-bar select,.admin-filter-bar input{background:#1a1d27;border:1px solid #2e3040;color:#ddd;padding:6px 10px;border-radius:6px;font-size:13px}.admin-filter-bar select:focus,.admin-filter-bar input:focus{outline:none;border-color:#5b8def}.admin-filter-bar button{background:#5b8def;border:none;color:#fff;padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px}.admin-filter-bar button:hover{background:#7aa3f5}.admin-filter-bar button:disabled{opacity:.5;cursor:not-allowed}.admin-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:16px;font-size:13px;color:#888}.admin-pagination button{background:#1a1d27;border:1px solid #2e3040;color:#8ab4f8;padding:4px 12px;border-radius:4px;cursor:pointer;font-size:12px}.admin-pagination button:hover:not(:disabled){background:#2e3040}.admin-pagination button:disabled{opacity:.4;cursor:not-allowed}.admin-event-type-badge{display:inline-block;background:#8ab4f81f;color:#8ab4f8;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500}.admin-event-metadata{background:#0d1117;border:1px solid #2e3040;border-radius:6px;padding:10px 12px;font-family:Courier New,Courier,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;max-height:300px;overflow-y:auto;margin:4px 0}.admin-logs-list{display:flex;flex-direction:column;gap:2px;max-height:500px;overflow-y:auto}.admin-log-entry{display:flex;flex-wrap:wrap;gap:8px;padding:6px 8px;border-bottom:1px solid rgba(42,42,74,.5);font-size:12px;align-items:baseline}.admin-log-time{color:#888;white-space:nowrap;flex-shrink:0}.admin-log-level{font-size:10px;font-weight:600;padding:1px 6px;border-radius:8px;white-space:nowrap;flex-shrink:0}.admin-log-level-debug{background:#9e9e9e26;color:#9e9e9e}.admin-log-level-info{background:#8ab4f826;color:#8ab4f8}.admin-log-level-warning{background:#ffc10726;color:#ffc107}.admin-log-level-error{background:#f4433626;color:#ef5350}.admin-log-level-critical{background:#ff174433;color:#ff1744}.admin-log-logger{color:#5b8def;white-space:nowrap;flex-shrink:0;font-size:11px}.admin-log-msg{color:#ccc;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.admin-log-traceback{width:100%;margin-top:4px}.admin-log-traceback summary{cursor:pointer;font-size:11px;font-weight:600;color:#ef5350;padding:2px 0;-webkit-user-select:none;user-select:none}.admin-log-traceback pre{background:#f4433614;border:1px solid rgba(244,67,54,.2);border-radius:6px;padding:8px 10px;font-family:Courier New,Courier,monospace;font-size:11px;line-height:1.4;color:#ef9a9a;white-space:pre-wrap;word-wrap:break-word;max-height:300px;overflow-y:auto;margin:4px 0 0}.admin-grand-total{display:flex;align-items:center;gap:12px;background:#5b8def1f;border:1px solid rgba(91,141,239,.25);border-radius:8px;padding:10px 16px;margin-bottom:16px;font-size:14px;font-weight:600;color:#8ab4f8}.admin-grand-total-meta{font-size:12px;font-weight:400;color:#888}.admin-user-group{border:1px solid #2e3040;border-radius:8px;margin-bottom:10px;overflow:hidden}.admin-user-group-header{display:flex;align-items:center;gap:12px;padding:10px 16px;cursor:pointer;background:#1a1d27;transition:background .15s;-webkit-user-select:none;user-select:none}.admin-user-group-header:hover{background:#5b8def26}.admin-user-group-header.expanded{border-bottom:1px solid #2e3040}.admin-user-group-email{font-size:13px;font-weight:600;color:#eee;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-user-group-count{font-size:11px;color:#888;white-space:nowrap;flex-shrink:0}.admin-user-cost{display:inline-block;background:#4caf5026;color:#81c784;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;white-space:nowrap;flex-shrink:0}.admin-user-group-chevron{color:#888;font-size:11px;flex-shrink:0}.admin-user-group-body{padding:0}.admin-user-group-body .admin-table{margin:0}.admin-user-group-body .admin-table th{font-size:11px}.admin-event-cost{color:#81c784;font-size:11px;font-weight:500}.admin-log-func{color:#7c4dff;font-size:10px;white-space:nowrap;flex-shrink:0;font-family:Courier New,Courier,monospace}.admin-log-traceback pre{border-left:3px solid #ef5350}.admin-header-actions{display:flex;align-items:center;gap:12px}.admin-clear-all-btn{background:#f443361f;border:1px solid rgba(244,67,54,.3);color:#ef5350;padding:5px 14px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500;transition:background .15s}.admin-clear-all-btn:hover{background:#f4433640}.admin-user-detail{padding:12px 4px}.admin-user-detail-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px}.admin-user-detail-section{margin-bottom:16px}.admin-user-detail-section h3{color:#5b8def;font-size:12px;text-transform:uppercase;letter-spacing:1px;margin:0 0 8px}.admin-user-detail-section .admin-table{font-size:12px}.admin-user-detail-section .admin-table th{font-size:11px}.admin-event-status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle;flex-shrink:0}.admin-event-duration{color:#888;font-size:11px;font-weight:400}.admin-financials-breakdowns{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;margin-bottom:24px}.admin-financials-breakdowns .admin-section{margin-bottom:0}.billing-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.billing-modal{background:#1a1d27;border:1px solid #2e3040;border-radius:12px;width:90%;max-width:900px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000080}.billing-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #2e3040}.billing-header h2{margin:0;font-size:1.2rem;color:#eee}.billing-close{background:none;border:none;color:#888;font-size:1.5rem;cursor:pointer;padding:4px 8px;line-height:1}.billing-close:hover{color:#eee}.billing-summary{display:flex;gap:12px;padding:16px 20px;border-bottom:1px solid #2e3040}.billing-card{flex:1;background:#16162a;border:1px solid #2e3040;border-radius:8px;padding:12px 16px;text-align:center}.billing-card-label{font-size:.75rem;color:#888;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.billing-card-value{font-size:1.4rem;font-weight:600;color:#eee}.billing-table-container{flex:1;overflow-y:auto;padding:0}.billing-loading,.billing-error,.billing-empty{padding:40px 20px;text-align:center;color:#888}.billing-error{color:#ff6b6b}.billing-table{width:100%;border-collapse:collapse;font-size:.85rem}.billing-table thead{position:sticky;top:0;z-index:1}.billing-table th{background:#1a1d27;color:#888;font-weight:500;text-align:left;padding:10px 12px;border-bottom:1px solid #2e3040;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px}.billing-table td{padding:8px 12px;color:#ccc;border-bottom:1px solid #1e1e38}.billing-table tbody tr:nth-child(2n){background:#16162a}.billing-table tbody tr:hover{background:#22224a}.billing-date{white-space:nowrap;color:#888;font-size:.8rem}.billing-desc{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.billing-type-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.3px}.type-generation{background:#4caf5026;color:#66bb6a}.type-sketch{background:#26c6da26;color:#26c6da}.type-modification{background:#42a5f526;color:#42a5f5}.type-grant{background:#ffa72626;color:#ffa726}.type-trial{background:#ab47bc26;color:#ab47bc}.billing-amount{font-weight:600;font-variant-numeric:tabular-nums}.billing-amount.negative{color:#ef5350}.billing-amount.positive{color:#66bb6a}.billing-balance{font-variant-numeric:tabular-nums;color:#aaa}.billing-tokens,.billing-cost{font-size:.8rem;color:#888;font-variant-numeric:tabular-nums}.billing-success-banner{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;background:#4caf5026;border-bottom:1px solid rgba(76,175,80,.3);color:#66bb6a;font-size:.85rem}.billing-success-dismiss{background:none;border:none;color:#66bb6a;font-size:1.2rem;cursor:pointer;padding:0 4px;line-height:1}.billing-packs{padding:10px 20px;border-bottom:1px solid #2e3040}.billing-packs-title{margin:0 0 8px;font-size:.75rem;color:#666;text-transform:uppercase;letter-spacing:.5px;font-weight:500}.billing-packs-grid{display:flex;gap:8px;flex-wrap:wrap}.billing-pack-card{display:flex;align-items:center;gap:8px;background:#16162a;border:1px solid #2e3040;border-radius:6px;padding:6px 10px;transition:border-color .2s}.billing-pack-card:hover{border-color:#4a4a7a}.billing-pack-label{font-size:.8rem;font-weight:600;color:#ccc}.billing-pack-credits{font-size:.85rem;font-weight:700;color:#7c4dff}.billing-pack-price{font-size:.8rem;color:#666}.billing-pack-buy-btn{background:#7c4dff;color:#fff;border:none;border-radius:4px;padding:4px 10px;font-size:.75rem;font-weight:500;cursor:pointer;transition:background .2s;white-space:nowrap}.billing-pack-buy-btn:hover:not(:disabled){background:#651fff}.billing-pack-buy-btn:disabled{opacity:.6;cursor:not-allowed}.billing-clear-btn{background:#f443361f;border:1px solid rgba(244,67,54,.3);color:#ef5350;padding:4px 12px;border-radius:4px;cursor:pointer;font-size:12px}.billing-clear-btn:hover{background:#f4433640}.error-boundary{display:flex;align-items:center;justify-content:center;padding:24px;min-height:200px;background:#2e3040;border-radius:8px}.error-boundary-content{text-align:center;max-width:420px}.error-boundary-icon{width:48px;height:48px;border-radius:50%;background:#e74c3c33;color:#e74c3c;font-size:24px;font-weight:700;display:flex;align-items:center;justify-content:center;margin:0 auto 12px}.error-boundary-content h3{color:#eee;margin-bottom:8px;font-size:16px}.error-boundary-message{color:#999;font-size:13px;margin-bottom:12px}.error-boundary-details{text-align:left;margin-bottom:16px}.error-boundary-details summary{color:#888;font-size:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.error-boundary-details pre{background:#1a1d27;color:#e74c3c;padding:8px 12px;border-radius:4px;font-size:11px;margin-top:6px;overflow-x:auto;max-height:120px;overflow-y:auto}.error-boundary-actions{display:flex;gap:8px;justify-content:center}.error-boundary-btn{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:13px;background:#4a90d9;color:#fff}.error-boundary-btn:hover{background:#357abd}.error-boundary-btn.secondary{background:#444;color:#ccc}.error-boundary-btn.secondary:hover{background:#555}.viewer-error-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:300px;background:#252832;color:#999;gap:12px}.viewer-error-fallback button{padding:6px 14px;border:1px solid #555;border-radius:4px;background:transparent;color:#ccc;cursor:pointer;font-size:13px}.viewer-error-fallback button:hover{background:#444}.login-prompt-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1100}.login-prompt-modal{position:relative;background:#1a1d27;border:1px solid #2e3040;border-radius:12px;width:90%;max-width:380px;padding:28px 24px 24px;text-align:center;box-shadow:0 20px 60px #00000080}.login-prompt-close{position:absolute;top:8px;right:12px;background:none;border:none;color:#888;font-size:1.5rem;cursor:pointer;line-height:1}.login-prompt-close:hover{color:#eee}.login-prompt-title{margin:0 0 10px;font-size:1.15rem;color:#eee}.login-prompt-body{margin:0 0 20px;font-size:.9rem;color:#aaa;line-height:1.5}.login-prompt-actions{display:flex;flex-direction:column;gap:10px}.login-prompt-btn{border:none;border-radius:6px;padding:10px 16px;font-size:.9rem;font-weight:500;cursor:pointer;transition:opacity .2s}.login-prompt-btn.google{background:#4285f4;color:#fff}.login-prompt-btn.github{background:#333;color:#fff}.login-prompt-btn:hover{opacity:.9}.login-prompt-dismiss{background:#7c4dff;color:#fff;border:none;border-radius:6px;padding:10px 24px;font-size:.9rem;font-weight:500;cursor:pointer}.login-prompt-dismiss:hover{background:#651fff}.download-packs-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1100}.download-packs-modal{background:#1a1d27;border:1px solid #2e3040;border-radius:12px;width:90%;max-width:480px;padding:0 0 20px;box-shadow:0 20px 60px #00000080}.download-packs-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #2e3040}.download-packs-header h2{margin:0;font-size:1.1rem;color:#eee}.download-packs-close{background:none;border:none;color:#888;font-size:1.5rem;cursor:pointer;padding:4px 8px;line-height:1}.download-packs-close:hover{color:#eee}.download-packs-intro{margin:16px 20px 0;font-size:.85rem;color:#aaa;line-height:1.5}.download-packs-success-banner{display:flex;align-items:center;justify-content:space-between;margin:12px 20px 0;padding:10px 14px;background:#4caf5026;border:1px solid rgba(76,175,80,.3);border-radius:6px;color:#66bb6a;font-size:.85rem}.download-packs-success-dismiss{background:none;border:none;color:#66bb6a;font-size:1.2rem;cursor:pointer;padding:0 4px;line-height:1}.download-packs-grid{display:flex;gap:12px;flex-wrap:wrap;padding:16px 20px 0}.download-pack-card{flex:1;min-width:160px;display:flex;flex-direction:column;align-items:center;gap:6px;background:#16162a;border:1px solid #2e3040;border-radius:8px;padding:16px;text-align:center;transition:border-color .2s}.download-pack-card:hover{border-color:#4a4a7a}.download-pack-label{font-size:.85rem;font-weight:600;color:#ccc}.download-pack-count{font-size:1.1rem;font-weight:700;color:#7c4dff}.download-pack-price{font-size:1rem;color:#eee;font-weight:600}.download-pack-buy-btn{margin-top:6px;background:#7c4dff;color:#fff;border:none;border-radius:6px;padding:8px 20px;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .2s;width:100%}.download-pack-buy-btn:hover:not(:disabled){background:#651fff}.download-pack-buy-btn:disabled{opacity:.6;cursor:not-allowed}.download-packs-empty{margin:16px 20px 0;padding:24px;text-align:center;color:#888;font-size:.85rem}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:#0f1117;color:#e8eaf2;min-height:100vh}#root{min-height:100vh}.app-container{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-container.landing-layout{overflow:auto;background:#0d0f14}.content-area{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.viewer-panel{flex:1;min-height:40vh;background:#252832;position:relative}.controls-sidebar{display:flex;flex-direction:column;flex-shrink:0;background:#1a1d27;overflow-y:auto;border-top:1px solid #2e3040;padding-bottom:16px}.input-panel{flex-shrink:0;background:transparent;border-top:1px solid #2e3040}.app-header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-bottom:1px solid #2e3040;background:#1a1d27;flex-shrink:0;position:sticky;top:0;z-index:30}.header-controls{display:flex;align-items:center;gap:10px}.app-header h1{font-family:Orbitron,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:1.7rem;font-weight:800;letter-spacing:.06em;background:linear-gradient(135deg,#7fa6ff,#5b8def 45%,#9b6bff);-webkit-background-clip:text;background-clip:text;color:transparent}.unit-toggle{display:flex;align-items:center;gap:6px;font-size:.75rem;color:#666}.unit-toggle span.active{color:#5b8def;font-weight:600}.toggle-switch{width:36px;height:20px;border-radius:10px;background:#2e3040;border:none;cursor:pointer;position:relative;padding:0}.toggle-slider{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#5b8def;transition:transform .2s}.toggle-slider.metric{transform:translate(16px)}.help-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #2e3040;border-radius:6px;background:transparent;color:#888;cursor:pointer;transition:all .2s;padding:0;flex-shrink:0}.help-btn:hover{border-color:#5b8def;color:#fff}.help-btn.sketch-mode-active{border-color:#5b8def;background:#5b8def;color:#fff}.demo-buttons{display:flex;gap:8px;margin-top:12px}.demo-buttons button{flex:1;padding:8px 12px;border:1px solid #5b8def;border-radius:6px;background:transparent;color:#5b8def;font-size:.75rem;cursor:pointer;transition:all .2s}.demo-buttons button:hover:not(:disabled){background:#5b8def;color:#fff}.demo-buttons button:disabled{opacity:.5;cursor:not-allowed}.chat-input{padding:16px}.target-indicator{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;margin-bottom:8px;background:#1a2233;border:1px solid #5b8def;border-radius:6px;font-size:.8rem;color:#8ab4f8}.target-indicator strong{color:#fff}.clear-target{background:none;border:none;color:#888;font-size:1.1rem;cursor:pointer;padding:0 4px;line-height:1}.clear-target:hover{color:#f66}.image-upload-btn{display:flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border:1px solid #2e3040;border-radius:8px;background:transparent;color:#888;cursor:pointer;transition:all .2s}.image-upload-btn:hover:not(:disabled){border-color:#5b8def;color:#fff}.image-upload-btn:disabled{opacity:.4;cursor:not-allowed}.image-preview-strip{display:flex;align-items:center;gap:8px;padding:6px 10px;margin-bottom:8px;background:#1a1d27;border:1px solid #2e3040;border-radius:8px}.image-preview-thumb{width:40px;height:40px;object-fit:cover;border-radius:4px;border:1px solid #252832}.image-preview-name{flex:1;font-size:.8rem;color:#aaa;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-preview-remove{background:none;border:none;color:#888;font-size:1.2rem;cursor:pointer;padding:0 4px;line-height:1}.image-preview-remove:hover{color:#f66}.chat-input.drag-over{outline:2px dashed #5b8def;outline-offset:-2px;background:#5b8def14;border-radius:8px}.chat-input form{display:flex;gap:8px}.chat-input .input-wrapper{flex:1;position:relative;display:flex;align-items:center;gap:8px}.chat-input input[type=text]{flex:1;min-width:0;padding:12px 16px;border:1px solid #2e3040;border-radius:8px;background:#0d0f14;color:#fff;font-size:.9rem}.char-count{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:.7rem;color:#888;pointer-events:none}.char-count.over-limit{color:#f66}.chat-input input[type=text]:focus{outline:none;border-color:#5b8def}.chat-input input[type=text]::placeholder{color:#666}.chat-input button{padding:12px 24px;border:none;border-radius:8px;background:#5b8def;color:#fff;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .2s}.chat-input button:hover:not(:disabled){background:#7aa3f5}.chat-input button:disabled{background:#333;color:#666;cursor:not-allowed}.credit-hint{font-size:.68rem;color:#555;text-align:right;margin-top:4px;padding-right:4px}.feature-list{padding:16px;flex-shrink:0}.feature-list h2{font-size:.875rem;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px}.feature-item{background:#1a1d27;border-radius:8px;padding:12px;margin-bottom:8px}.feature-item .feature-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.feature-item .feature-header:empty{display:none;margin-bottom:0}.feature-item .feature-type{font-size:.625rem;font-weight:600;text-transform:uppercase;padding:2px 6px;border-radius:4px;background:#5b8def}.feature-item .feature-type.modify{background:#6b5b95}.feature-item .feature-type.remove{background:#a55a5a}.feature-item .feature-description{font-size:.875rem;color:#ccc;line-height:1.4}.feature-item .feature-actions{display:flex;gap:8px;margin-top:8px;justify-content:flex-end}.feature-item .remove-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid #2e3040;border-radius:4px;background:transparent;color:#888;cursor:pointer;transition:all .2s}.feature-item .remove-btn:hover{border-color:#a55a5a;color:#f66;background:#a55a5a1a}.feature-item .remove-btn svg{width:14px;height:14px}.confirm-label{font-size:.8rem;color:#aaa;margin-right:4px}.confirm-yes-btn,.confirm-no-btn{font-size:.75rem;padding:2px 8px;border-radius:4px;border:1px solid;cursor:pointer;transition:all .15s}.confirm-yes-btn{border-color:#a55a5a;color:#f66;background:transparent}.confirm-yes-btn:hover{background:#a55a5a26}.confirm-no-btn{border-color:#555;color:#aaa;background:transparent;margin-left:4px}.confirm-no-btn:hover{border-color:#888;color:#ddd}.empty-state{color:#666;font-size:.875rem;text-align:center;padding:32px 16px}.export-section{padding:12px 16px;border-top:1px solid #2e3040;flex-shrink:0}.export-compact{padding:10px 16px}.export-buttons{display:flex;gap:8px}.export-buttons button{flex:1;padding:10px 16px;border:1px solid #4a5270;border-radius:8px;background:#2e3450;color:#c8cfec;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,color .15s;min-height:40px}.export-buttons button:hover:not(:disabled){background:#5b8def;border-color:#5b8def;color:#fff}.export-buttons button:disabled{color:#3a3f52;border-color:#252838;background:#1e2130;cursor:not-allowed}.viewer-3d{width:100%;height:100%}.viewer-3d canvas{outline:none}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#c8c4bcd9;z-index:10}.loading-progress{display:flex;flex-direction:column;align-items:center;gap:10px;width:260px}.progress-bar-track{width:100%;height:6px;background:#00000026;border-radius:3px;overflow:hidden}.progress-bar-fill{height:100%;background:#5b8def;border-radius:3px;transition:width .25s ease-out}.progress-info{display:flex;justify-content:space-between;width:100%;font-size:.8125rem}.progress-stage{color:#333}.progress-percent{color:#555;font-variant-numeric:tabular-nums}.loading-spinner{display:flex;flex-direction:column;align-items:center;gap:12px}.spinner{width:40px;height:40px;border:3px solid rgba(0,0,0,.15);border-top-color:#5b8def;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-spinner span{font-size:.875rem;color:#444}.error-message{background:#3a2020;border:1px solid #5a3030;border-radius:8px;padding:12px 16px;margin:16px;font-size:.875rem;color:#f88;display:flex;align-items:center;justify-content:space-between;gap:8px}.error-message span{cursor:pointer;flex:1}.restore-btn{padding:5px 12px;border:1px solid #7aa3f5;border-radius:6px;background:transparent;color:#8ab4f8;font-size:.75rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:all .2s}.restore-btn:hover{background:#5b8def;color:#fff}.history-panel{padding:12px 16px;border-top:1px solid #2e3040;flex-shrink:0}.history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.history-header h2{font-size:.875rem;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.05em;margin:0}.history-undo-btn{display:flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid #2e3040;border-radius:5px;background:transparent;color:#aaa;font-size:.7rem;cursor:pointer;transition:all .2s}.history-undo-btn:hover:not(:disabled){border-color:#5b8def;color:#fff}.history-undo-btn:disabled{opacity:.4;cursor:not-allowed}.history-steps{display:flex;flex-direction:column;gap:4px;max-height:180px;overflow-y:auto}.history-step{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid transparent;border-radius:6px;background:#1a1d27;color:#ccc;font-size:.8rem;cursor:pointer;transition:all .15s;text-align:left;width:100%}.history-step:hover:not(:disabled){border-color:#5b8def;background:#22283a}.history-step.active{border-color:#5b8def;background:#5b8def26;color:#fff}.history-step:disabled{cursor:default}.history-step-num{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#2e3040;font-size:.7rem;font-weight:600;color:#888;flex-shrink:0}.history-step.active .history-step-num{background:#5b8def;color:#fff}.history-step-desc{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.history-step-time{font-size:.65rem;color:#666;flex-shrink:0}.dimension-panel{padding:16px;border-top:1px solid #2e3040;flex-shrink:0}.dimension-panel h2{font-size:.875rem;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.dim-part-name{font-size:.85rem;color:#ccc;margin-bottom:12px;font-weight:500}.dim-hint{font-size:.8rem;color:#666;font-style:italic}.sketch-dims-section{margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.08)}.sketch-dims-section .dim-hint{margin-bottom:6px}.sketch-dim-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:.85rem}.sketch-dim-value{color:#7ec8e3;font-weight:500}.trace-warning{background:#ffb4321f;border:1px solid rgba(255,180,50,.3);border-radius:6px;padding:6px 8px;margin-bottom:8px;font-size:.78rem}.trace-warning-text{color:#f0b040}.trace-toggle{background:none;border:none;color:#7ec8e3;cursor:pointer;font-size:.75rem;margin-left:6px;text-decoration:underline;padding:0}.trace-details{margin-top:6px;font-size:.73rem;color:#aaa}.trace-item{padding:2px 0}.trace-dropped{color:#e88}.trace-modified{color:#f0b040}.trace-added{color:#8e8}.dim-fields{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.dim-field{display:flex;flex-direction:column;gap:4px}.dim-field label{font-size:.75rem;color:#888}.dim-source-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-left:6px;vertical-align:middle}.dot-explicit{background:#7ec8e3}.dot-inferred{background:#888}.dim-explicit label{color:#7ec8e3}.dim-inferred label{color:#888}.dim-input-wrap{display:flex;align-items:center;gap:6px}.dim-input-wrap input{flex:1;padding:6px 10px;border:1px solid #2e3040;border-radius:6px;background:#0d0f14;color:#fff;font-size:.85rem;font-family:inherit}.dim-input-wrap input:focus{outline:none;border-color:#5b8def}.dim-input-wrap input:disabled{opacity:.5}.dim-input-wrap input.dim-input-readonly{color:#888;background:#0a0c10;border-color:#1e2230;cursor:default;opacity:1}.dim-field.changed .dim-input-wrap input{border-color:#fd0}.dim-select{flex:1;padding:6px 28px 6px 10px;border:1px solid #2e3040;border-radius:6px;background:#0d0f14;color:#fff;font-size:.85rem;font-family:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%23888' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.dim-select:focus{outline:none;border-color:#5b8def}.dim-select:disabled{opacity:.5;cursor:not-allowed}.dim-field.changed .dim-select{border-color:#fd0}.dim-unit{font-size:.75rem;color:#666;min-width:24px}.dim-actions{display:flex;gap:8px}.dim-btn{flex:1;padding:8px 12px;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s;border:1px solid transparent}.dim-btn:disabled{opacity:.4;cursor:not-allowed}.dim-btn-apply{background:#5b8def;color:#fff;border-color:#5b8def}.dim-btn-apply:hover:not(:disabled){background:#7aa3f5}.dim-btn-reset{background:transparent;color:#888;border-color:#2e3040}.dim-btn-reset:hover:not(:disabled){border-color:#5b8def;color:#ccc}.warnings-panel{margin:12px 16px 0;border-radius:8px;overflow:hidden;flex-shrink:0}.warnings-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#1a2e20;border-bottom:1px solid #2a3a2a}.warnings-title{font-size:.75rem;font-weight:600;color:#8c8;text-transform:uppercase;letter-spacing:.05em}.warnings-dismiss{padding:2px 8px;border:1px solid #2a3a2a;border-radius:4px;background:transparent;color:#8c8;font-size:.7rem;cursor:pointer;transition:all .2s}.warnings-dismiss:hover{background:#2a3a2a;color:#ada}.warning-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;font-size:.8rem;line-height:1.4}.warning-item.info{background:#1a2e20;color:#8c8}.warning-item.warning{background:#2e2a1a;color:#ca6}.warning-icon{flex-shrink:0;font-size:.85rem;line-height:1.3}.warning-label{flex-shrink:0;font-size:.65rem;font-weight:600;text-transform:uppercase;padding:1px 5px;border-radius:3px;line-height:1.5}.warning-item.info .warning-label{background:#88cc8826}.warning-item.warning .warning-label{background:#ccaa6626}.warning-message{flex:1}.project-manager{padding:12px 16px;border-bottom:1px solid #2e3040;flex-shrink:0}.project-name-row{margin-bottom:8px}.project-name-input{width:100%;padding:6px 10px;border:1px solid #2e3040;border-radius:6px;background:#0d0f14;color:#fff;font-size:.85rem;font-family:inherit}.project-name-input:focus{outline:none;border-color:#5b8def}.project-actions{display:flex;gap:4px}.project-actions button{display:flex;align-items:center;gap:4px;padding:5px 8px;border:1px solid #2e3040;border-radius:5px;background:transparent;color:#aaa;font-size:.7rem;cursor:pointer;transition:all .2s;white-space:nowrap}.project-actions button:hover:not(:disabled){border-color:#5b8def;color:#fff}.project-actions button:disabled{opacity:.4;cursor:not-allowed}.saved-projects-list{margin-top:8px;border:1px solid #2e3040;border-radius:6px;background:#0d0f14;max-height:200px;overflow-y:auto}.no-projects{padding:12px;text-align:center;font-size:.8rem;color:#666}.project-item{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border-bottom:1px solid #1a1d27}.project-item:last-child{border-bottom:none}.project-item-info{display:flex;flex-direction:column;gap:2px;min-width:0}.project-item-name{font-size:.8rem;color:#ccc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-item-date{font-size:.65rem;color:#666}.project-item-actions{display:flex;gap:4px;flex-shrink:0}.project-item-actions button{padding:3px 8px;border:1px solid #2e3040;border-radius:4px;background:transparent;color:#888;font-size:.7rem;cursor:pointer;transition:all .2s}.project-item-actions button:hover{border-color:#5b8def;color:#fff}.project-item-actions .delete-btn{display:flex;align-items:center;justify-content:center;padding:3px 5px}.project-item-actions .delete-btn:hover{border-color:#a55a5a;color:#f66}.measure-toolbar{position:absolute;top:12px;left:12px;z-index:20;display:flex;align-items:center;gap:6px;padding:6px 8px;background:#1a1a2ed9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:8px;border:1px solid #2e3040}.measure-toggle{display:flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid #2e3040;border-radius:6px;background:transparent;color:#aaa;font-size:.75rem;cursor:pointer;transition:all .2s}.measure-toggle:hover{border-color:#5b8def;color:#fff}.measure-toggle.active{background:#5b8def;border-color:#5b8def;color:#fff}.measure-type-selector{display:flex;gap:2px}.measure-type-selector button{display:flex;align-items:center;gap:4px;padding:4px 8px;border:1px solid #2e3040;border-radius:4px;background:transparent;color:#888;font-size:.7rem;cursor:pointer;transition:all .2s}.measure-type-selector button:hover{border-color:#5b8def;color:#fff}.measure-type-selector button.active{background:#2e3040;border-color:#5b8def;color:#fff}.measure-clear{padding:4px 8px;border:1px solid #2e3040;border-radius:4px;background:transparent;color:#888;font-size:.7rem;cursor:pointer;transition:all .2s}.measure-clear:hover{border-color:#a55a5a;color:#f66}.measure-report-issue{padding:4px 8px;border:1px solid #2e3040;border-radius:4px;background:transparent;color:#888;font-size:.7rem;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .2s;margin-left:auto}.measure-report-issue:hover:not(:disabled){border-color:#ef444480;color:#fca5a5}.measure-report-issue:disabled{opacity:.3;cursor:default}.measure-result{display:flex;align-items:center;gap:6px;padding:4px 8px;background:#ffdd001a;border-radius:4px;border:1px solid rgba(255,221,0,.3)}.measure-result .measure-label{font-size:.7rem;color:#aaa}.measure-result .measure-value{font-size:.8rem;font-weight:600;color:#fd0}.measure-label-3d{background:#1a1a2ee6;border:1px solid rgba(255,221,0,.5);border-radius:4px;padding:3px 8px;font-size:12px;font-weight:600;color:#fd0;white-space:nowrap;pointer-events:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.sketch-upload-zone{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:center;justify-content:center;background:#25283299;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background .2s}.sketch-upload-zone.drag-over{background:#5b8def40;outline:3px dashed #5b8def;outline-offset:-12px}.sketch-upload-cta{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:32px}.sketch-upload-cta h2{font-size:1.25rem;font-weight:600;color:#fff;margin:0}.sketch-upload-cta p{font-size:.875rem;color:#aaa;margin:0}.sketch-upload-icon{width:96px;height:96px;display:flex;align-items:center;justify-content:center;border:2px dashed #555;border-radius:16px;color:#888;margin-bottom:4px}.sketch-upload-btn{padding:12px 32px;border:none;border-radius:8px;background:#5b8def;color:#fff;font-size:.95rem;font-weight:500;cursor:pointer;transition:background .2s}.sketch-upload-btn:hover:not(:disabled){background:#7aa3f5}.sketch-upload-btn:disabled{opacity:.5;cursor:not-allowed}.sketch-upload-hint{font-size:.75rem;color:#666}.sketch-preview-container{display:flex;flex-direction:column;align-items:center;gap:16px;padding:24px;max-width:600px;width:100%}.sketch-preview-image-wrap{position:relative;display:inline-block}.sketch-preview-image{max-height:50vh;max-width:100%;border-radius:8px;border:1px solid #252832;box-shadow:0 4px 24px #0006}.sketch-preview-remove{position:absolute;top:-10px;right:-10px;width:28px;height:28px;border-radius:50%;border:none;background:#a55a5a;color:#fff;font-size:1.1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.sketch-preview-remove:hover{background:#c44}.sketch-preview-hint{color:#888;font-size:.85rem;margin-top:8px;text-align:center}.sketch-reference{padding:12px 16px;border-bottom:1px solid #2e3040;flex-shrink:0}.sketch-reference summary{font-size:.75rem;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;-webkit-user-select:none;user-select:none}.sketch-reference summary:hover{color:#aaa}.sketch-reference-img{width:100%;border-radius:6px;max-height:200px;object-fit:contain;margin-top:8px;border:1px solid #2e3040}@media (min-width: 768px){.app-container{overflow:hidden}.content-area{flex-direction:row}.viewer-panel{flex:1;min-height:0}.controls-sidebar{width:340px;flex-shrink:0;border-top:none;border-left:1px solid #2e3040;overflow-y:auto;max-height:100%}}@media (max-width: 1024px){.app-header{padding:8px 12px}.app-header h1{font-size:1.4rem}}@media (max-width: 768px){.viewer-panel{flex:0 0 40vh;min-height:35vh}.controls-sidebar{flex:1;min-height:0}.chat-input{padding:12px}.chat-input button{padding:10px 16px;font-size:.85rem}.feature-list,.dimension-panel,.export-section{padding:12px}.project-manager{padding:8px 12px}.measure-toolbar{max-width:calc(100vw - 24px);overflow-x:auto;flex-wrap:nowrap}.sketch-preview-container{padding:16px}.sketch-upload-cta{padding:20px}.sketch-upload-icon{width:72px;height:72px}}@media (max-width: 480px){.chat-input input[type=text]{font-size:16px}.chat-input button{padding:10px 14px;min-height:44px}.app-header{padding:8px 10px}.app-header h1{font-size:1.25rem}.header-controls{gap:6px}.unit-toggle{font-size:.65rem}.measure-toolbar{max-width:calc(100vw - 24px);overflow-x:auto;flex-wrap:nowrap;font-size:.65rem}.measure-toggle,.measure-type-selector button,.measure-clear{padding:4px 6px;font-size:.65rem}.export-buttons button,.dim-btn{min-height:44px}.project-actions button{min-height:36px;padding:6px 10px}}
