.login-page{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:var(--space-4);background:linear-gradient(135deg,var(--color-brand-900) 0%,var(--color-brand-700) 50%,var(--color-brand-500) 100%)}.login-card{width:100%;max-width:420px;background:var(--color-bg);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl),0 0 80px #0003;padding:var(--space-10) var(--space-8);animation:fadeUp var(--duration-normal) var(--ease-default)}.login-logo{text-align:center;margin-bottom:var(--space-8)}.login-logo h1{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--color-brand-600);letter-spacing:-.5px}.login-logo p{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1);text-transform:uppercase;letter-spacing:2px}.login-card h2{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--color-text);margin-bottom:var(--space-6);text-align:center}.auth-form{display:flex;flex-direction:column;gap:var(--space-4)}.auth-field{display:flex;flex-direction:column;gap:var(--space-1)}.auth-field label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary)}.auth-field input{padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--color-bg-subtle);color:var(--color-text);transition:border-color var(--duration-fast) var(--ease-default),box-shadow var(--duration-fast) var(--ease-default)}.auth-field input:focus{outline:none;border-color:var(--color-brand-400);box-shadow:0 0 0 3px var(--color-brand-100)}.auth-field input::placeholder{color:var(--color-text-muted)}.auth-submit{width:100%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-brand-500);color:var(--color-neutral-0);font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;border:none;transition:background var(--duration-fast) var(--ease-default),transform var(--duration-fast) var(--ease-default);min-height:var(--touch-target)}.auth-submit:hover:not(:disabled){background:var(--color-brand-600);transform:translateY(-1px)}.auth-submit:active:not(:disabled){transform:translateY(0)}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-divider{display:flex;align-items:center;gap:var(--space-3);color:var(--color-text-muted);font-size:var(--text-xs)}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.auth-alt-btn{width:100%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-bg-subtle);border:1px solid var(--color-border);color:var(--color-text);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--space-2);transition:background var(--duration-fast) var(--ease-default),border-color var(--duration-fast) var(--ease-default);min-height:var(--touch-target)}.auth-alt-btn:hover:not(:disabled){background:var(--color-bg-muted);border-color:var(--color-border-strong)}.auth-error{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-danger-light);color:var(--color-danger);font-size:var(--text-sm);border-left:3px solid var(--color-danger);animation:fadeUp var(--duration-fast) var(--ease-default)}.auth-success{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-success-light);color:var(--color-success);font-size:var(--text-sm);border-left:3px solid var(--color-success);animation:fadeUp var(--duration-fast) var(--ease-default)}.auth-links{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);margin-top:var(--space-2)}.auth-link{background:none;border:none;color:var(--color-brand-500);font-size:var(--text-sm);cursor:pointer;padding:0;transition:color var(--duration-fast) var(--ease-default)}.auth-link:hover{color:var(--color-brand-700);text-decoration:underline}.auth-code-input{display:flex;justify-content:center;gap:var(--space-2)}.auth-code-input input{width:48px;height:56px;text-align:center;font-size:var(--text-xl);font-weight:var(--font-bold);border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-subtle);color:var(--color-text);transition:border-color var(--duration-fast) var(--ease-default)}.auth-code-input input:focus{outline:none;border-color:var(--color-brand-500);box-shadow:0 0 0 3px var(--color-brand-100)}.auth-help{text-align:center;font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.5}.admin-page{display:flex;flex-direction:column;flex:1;min-height:100dvh}.admin-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);background:var(--color-bg);border-bottom:1px solid var(--color-border)}.admin-header h1{font-size:var(--text-xl);font-weight:var(--font-bold)}.admin-tabs{display:flex;gap:var(--space-1);padding:0 var(--space-6);background:var(--color-bg);border-bottom:1px solid var(--color-border)}.admin-tab{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.admin-tab:hover{color:var(--color-text)}.admin-tab.active{color:var(--color-brand-600);border-bottom-color:var(--color-brand-500)}.admin-content{flex:1;padding:var(--space-6);background:var(--color-bg-subtle)}.admin-table{width:100%;border-collapse:collapse;background:var(--color-bg);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.admin-table th,.admin-table td{padding:var(--space-3) var(--space-4);text-align:left;font-size:var(--text-sm);border-bottom:1px solid var(--color-border)}.admin-table th{font-weight:var(--font-semibold);color:var(--color-text-secondary);background:var(--color-bg-subtle);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.5px}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:var(--color-bg-subtle)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium);white-space:nowrap}.badge-success{background:var(--color-success-light);color:#047857}.badge-danger{background:var(--color-danger-light);color:#b91c1c}.badge-warning{background:var(--color-warning-light);color:#b45309}.badge-info{background:var(--color-info-light);color:#1d4ed8}.badge-neutral{background:var(--color-bg-muted);color:var(--color-text)}[data-theme=dark] .badge-success{color:#6ee7b7}[data-theme=dark] .badge-danger{color:#fca5a5}[data-theme=dark] .badge-warning{color:#fcd34d}[data-theme=dark] .badge-info{color:#93c5fd}.admin-actions{display:flex;gap:var(--space-1)}.admin-action-btn{padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);cursor:pointer;background:var(--color-bg-muted);border:1px solid var(--color-border);color:var(--color-text-secondary);transition:all var(--duration-fast) var(--ease-default)}.admin-action-btn:hover{background:var(--color-bg);border-color:var(--color-border-strong);color:var(--color-text)}.admin-action-btn.danger:hover{background:var(--color-danger-light);border-color:var(--color-danger);color:#b91c1c}[data-theme=dark] .admin-action-btn.danger:hover{color:#fca5a5}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.security-settings{max-width:720px}.security-settings h2{font-size:var(--text-xl);font-weight:var(--font-bold);margin-bottom:var(--space-6)}.security-section{background:var(--color-bg);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.security-section h3{font-size:var(--text-base);font-weight:var(--font-semibold);margin-bottom:var(--space-4)}.security-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0}.security-list{display:flex;flex-direction:column;gap:var(--space-1)}.security-list .security-row{padding:var(--space-3);border-radius:var(--radius-md);transition:background var(--duration-fast) var(--ease-default)}.security-list .security-row:hover{background:var(--color-bg-subtle)}.security-session{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.security-totp-uri{display:block;padding:var(--space-3);background:var(--color-bg-subtle);border-radius:var(--radius-md);font-size:var(--text-xs);word-break:break-all;margin-top:var(--space-2);border:1px solid var(--color-border)}.security-codes{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2);margin-top:var(--space-2)}.security-code{padding:var(--space-2);background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-sm);text-align:center;font-family:monospace}.fm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:fm-fade-in .15s ease-out}@keyframes fm-fade-in{0%{opacity:0}to{opacity:1}}.fm-dialog{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-xl, 16px);box-shadow:0 25px 50px -12px #00000040;width:90vw;max-width:640px;max-height:90vh;display:flex;flex-direction:column;animation:fm-slide-up .2s ease-out;overflow:hidden;color:var(--color-text)}.fm-drag-handle{display:none}@media(max-width:768px){.fm-overlay{align-items:flex-end;padding:0}.fm-dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:16px 16px 0 0;border-left:none;border-right:none;border-bottom:none;padding-bottom:env(safe-area-inset-bottom)}.fm-body{max-height:none!important;flex:1}.fm-drag-handle{display:block;position:absolute;top:8px;left:50%;transform:translate(-50%);width:40px;height:4px;border-radius:2px;background:var(--color-border-strong, rgba(0, 0, 0, .25));pointer-events:none}.fm-header{position:relative;padding-top:20px;touch-action:pan-y;cursor:grab}.fm-footer{position:sticky;bottom:0;background:var(--color-bg)}}@keyframes fm-slide-up{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.fm-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4, 16px) var(--space-5, 20px);border-bottom:1px solid var(--color-border)}.fm-title{margin:0;font-size:1.1rem;font-weight:600;color:var(--color-text)}.fm-close{background:none;border:none;color:var(--color-text-muted);font-size:1.5rem;cursor:pointer;padding:0 4px;line-height:1;transition:color .15s}.fm-close:hover{color:var(--color-text)}.fm-body{padding:var(--space-5, 20px);display:flex;flex-direction:column;gap:var(--space-4, 16px);max-height:78vh;overflow-y:auto}.fm-date{cursor:pointer}.fm-date::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.7}.fm-footer{display:flex;justify-content:flex-end;gap:var(--space-3, 12px);padding:var(--space-4, 16px) var(--space-5, 20px);border-top:1px solid var(--color-border)}.fm-field{display:flex;flex-direction:column;gap:var(--space-1, 4px)}.fm-label{font-size:.8rem;font-weight:500;color:var(--color-text-secondary)}.fm-required{color:var(--color-danger);margin-left:2px}.fm-input,.fm-select,.fm-textarea{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md, 8px);padding:var(--space-2, 8px) var(--space-3, 12px);font-size:.875rem;color:var(--color-text);outline:none;transition:border-color .15s}.fm-input:focus,.fm-select:focus,.fm-textarea:focus{border-color:var(--color-brand-500);box-shadow:0 0 0 2px var(--color-brand-100)}.fm-textarea{min-height:80px;resize:vertical}.fm-select{cursor:pointer}.fm-select option{background:var(--color-bg);color:var(--color-text)}.fm-row{display:flex;gap:var(--space-3, 12px)}.fm-row>.fm-field{flex:1}.project-selector{position:relative}.project-selector-trigger{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;transition:all .2s ease;font-size:.9rem;white-space:nowrap}.project-selector-trigger:hover{background:var(--color-bg-muted);border-color:var(--color-border-strong)}.project-selector-trigger:focus{outline:none;border-color:var(--color-brand-500);box-shadow:0 0 0 2px var(--color-brand-100)}.project-icon{font-size:1rem;flex-shrink:0}.project-name{font-weight:500;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-name.text-muted{color:var(--color-text-muted);font-weight:400}.project-status{font-size:.65rem;padding:2px 8px;border-radius:var(--radius-sm);text-transform:uppercase;font-weight:600;letter-spacing:.5px;flex-shrink:0}.status-active{background:#10b981;color:#fff}.status-completed{background:#6b7280;color:#fff}.status-archived{background:#ef4444;color:#fff}.dropdown-arrow{font-size:.7rem;margin-left:auto;transition:transform .2s ease;flex-shrink:0}.dropdown-arrow.open{transform:rotate(180deg)}.project-selector-dropdown{position:absolute;top:calc(100% + 8px);left:0;min-width:360px;max-width:480px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 8px 32px #00000026;z-index:1000;overflow:hidden;animation:dropdown-appear .15s ease-out;color:var(--color-text)}@keyframes dropdown-appear{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.dropdown-header{padding:var(--space-3);border-bottom:1px solid var(--color-border)}.dropdown-search{width:100%;padding:var(--space-2) var(--space-3);background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:.9rem;transition:all .2s ease}.dropdown-search:focus{outline:none;background:var(--color-bg);border-color:var(--color-brand-500);box-shadow:0 0 0 2px var(--color-brand-100)}.dropdown-search::placeholder{color:var(--color-text-muted)}.dropdown-list{max-height:320px;overflow-y:auto;padding:var(--space-2) 0}.dropdown-list::-webkit-scrollbar{width:8px}.dropdown-list::-webkit-scrollbar-track{background:var(--color-bg-subtle)}.dropdown-list::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.dropdown-list::-webkit-scrollbar-thumb:hover{background:var(--color-border-strong)}.dropdown-loading,.dropdown-empty{padding:var(--space-4) var(--space-3);text-align:center;color:var(--color-text-muted);font-size:.85rem}.dropdown-item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-3) var(--space-3);background:transparent;border:none;color:var(--color-text);text-align:left;cursor:pointer;transition:background .15s ease;position:relative}.dropdown-item:hover{background:var(--color-bg-subtle)}.dropdown-item.selected{background:var(--color-brand-50)}.dropdown-item.selected:hover{background:var(--color-brand-100)}.check{font-size:.9rem;color:var(--color-brand-500);font-weight:700;flex-shrink:0}.item-content{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.item-name{font-weight:500;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-client{font-size:.75rem;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-status{font-size:.65rem;padding:2px 8px;border-radius:var(--radius-sm);text-transform:uppercase;font-weight:600;letter-spacing:.5px;flex-shrink:0}.dropdown-footer{padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border)}.btn-view-all{width:100%;padding:var(--space-2) var(--space-3);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease;font-size:.85rem;font-weight:500}.btn-view-all:hover{background:var(--color-bg-subtle);border-color:var(--color-border-strong);color:var(--color-text)}.btn-view-all:focus{outline:none;border-color:var(--color-brand-500);box-shadow:0 0 0 2px var(--color-brand-100)}@media(max-width:768px){.project-selector-dropdown{min-width:320px;left:auto;right:0}.project-name{max-width:150px}}.voice-input-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-subtle);color:var(--color-text);font-size:.85rem;font-weight:500;cursor:pointer;min-height:36px;transition:background .15s,border-color .15s}.voice-input-btn:hover:not(:disabled){background:var(--color-bg);border-color:var(--color-border-strong)}.voice-input-btn:disabled{opacity:.55;cursor:not-allowed}.voice-input-btn--recording{background:#dc26261f;border-color:#dc2626;color:#dc2626;font-variant-numeric:tabular-nums;animation:voice-pulse 1.2s ease-in-out infinite}.voice-input-btn--uploading{background:#2563eb1a;border-color:var(--color-primary, #2563eb);color:var(--color-primary, #2563eb);cursor:wait}@keyframes voice-pulse{0%,to{box-shadow:0 0 #dc262666}50%{box-shadow:0 0 0 6px #dc262600}}@media(pointer:coarse){.voice-input-btn{min-height:44px;padding:10px 16px;font-size:.95rem}}.pep-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:10010;display:flex;align-items:center;justify-content:center;padding:16px}.pep{background:var(--color-bg);border:1px solid var(--color-border);border-radius:12px;width:100%;max-width:1200px;height:92vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 64px #0009}.pep__header{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--color-border)}.pep__header h2{margin:0;font-size:1rem;font-weight:700;color:var(--color-text);flex:1}.pep__nav{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--color-text-muted)}.pep__nav button{width:30px;height:28px;border:1px solid var(--color-border);background:var(--color-bg-muted);color:var(--color-text);border-radius:6px;cursor:pointer;font-size:1rem}.pep__nav button:disabled{opacity:.4;cursor:not-allowed}.pep__close{width:32px;height:32px;border:none;border-radius:50%;background:var(--color-bg-muted);color:var(--color-text-muted);cursor:pointer;font-size:14px}.pep__sheets{flex:1;overflow-y:auto;padding:16px}.pep__hint{font-size:.9rem;color:var(--color-text-muted);margin:0 0 12px}.pep__loading{padding:30px;text-align:center;color:var(--color-text-muted)}.pep__sheet-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.pep__sheet-btn{display:flex;gap:12px;align-items:center;width:100%;padding:10px 12px;background:var(--color-bg-muted, rgba(255,255,255,.03));border:1px solid var(--color-border);border-radius:8px;cursor:pointer;color:var(--color-text);text-align:left;font-family:inherit}.pep__sheet-btn:hover{border-color:var(--color-brand-500, #6366f1)}.pep__sheet-num{font-family:ui-monospace,monospace;font-weight:700;font-size:.8rem;color:var(--color-brand-500, #6366f1);min-width:60px}.pep__sheet-title{font-size:.9rem}.pep__toolbar{display:flex;align-items:center;gap:12px;padding:8px 16px;border-bottom:1px solid var(--color-border);background:var(--color-bg-muted, rgba(255,255,255,.02))}.pep__plan-label{font-weight:600;font-size:.88rem;color:var(--color-text)}.pep__modes{display:flex;gap:4px}.pep__mode-btn{padding:5px 10px;border:1px solid var(--color-border);background:var(--color-bg-muted);color:var(--color-text);border-radius:6px;cursor:pointer;font-size:.78rem}.pep__mode-btn.is-active{background:var(--color-brand-500, #6366f1);border-color:var(--color-brand-500, #6366f1);color:#fff}.pep__zoom{display:flex;align-items:center;gap:6px;margin-left:auto}.pep__zoom button{width:30px;height:28px;border:1px solid var(--color-border);background:var(--color-bg-muted);color:var(--color-text);border-radius:6px;cursor:pointer;font-size:1.1rem;line-height:1}.pep__zoom button:disabled{opacity:.4;cursor:not-allowed}.pep__zoom span{font-size:.82rem;min-width:50px;text-align:center;color:var(--color-text);font-variant-numeric:tabular-nums}.pep__fit{font-size:.95rem!important}.pep__viewer{position:relative;flex:1;overflow:hidden;background:#1f1f2a}.pep__rendering{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:.95rem;z-index:3}.pep__stage{position:absolute;top:0;left:0;will-change:transform}.pep__canvas{display:block;background:#fff;box-shadow:0 8px 24px #0006}.pep__annot{position:absolute;top:0;left:0;pointer-events:none}.pep__rect{position:absolute;border-style:dashed;border-color:#ef4444;background:#ef44441f;pointer-events:none}.pep__footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-top:1px solid var(--color-border);background:var(--color-bg-muted, rgba(255,255,255,.02))}.pep__footer-hint{font-size:.82rem;color:var(--color-text-muted)}@keyframes cmd-palette-in{0%{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.cmd-palette-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:600;display:flex;justify-content:center;padding-top:22vh;background:#00000073;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.cmd-palette{width:520px;max-width:92vw;max-height:420px;background:var(--glass-surface-active);backdrop-filter:blur(var(--glass-blur-heavy));-webkit-backdrop-filter:blur(var(--glass-blur-heavy));border:1px solid var(--glass-border-hover);border-radius:12px;box-shadow:0 24px 64px #00000080;display:flex;flex-direction:column;overflow:hidden;animation:cmd-palette-in .18s ease-out}.cmd-palette-search{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--glass-border)}.cmd-palette-search-icon{color:var(--glass-text-muted);flex-shrink:0}.cmd-palette-input{flex:1;background:transparent;border:none;color:var(--glass-text);font-size:15px;font-weight:500;outline:none}.cmd-palette-input::placeholder{color:var(--glass-text-muted)}.cmd-palette-kbd{padding:2px 6px;border:1px solid var(--glass-border);border-radius:4px;font-size:10px;color:var(--glass-text-muted);background:#ffffff0a;font-family:monospace}.cmd-palette-results{flex:1;overflow-y:auto;padding:6px 0;scrollbar-width:thin;scrollbar-color:var(--glass-border) transparent}.cmd-palette-group{padding:4px 16px 2px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--glass-text-muted)}.cmd-palette-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;background:transparent;border:none;color:var(--glass-text);font-size:13px;cursor:pointer;transition:background .1s;text-align:left}.cmd-palette-item:hover,.cmd-palette-item--active{background:#6366f11a}.cmd-palette-item-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#ffffff0a;border-radius:6px;font-size:16px;flex-shrink:0}.cmd-palette-item-text{flex:1;min-width:0}.cmd-palette-item-title{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmd-palette-highlight{color:var(--glass-accent);font-weight:700;background:var(--glass-accent-soft);border-radius:2px;padding:0 1px}.cmd-palette-item-meta{font-size:11px;color:var(--glass-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmd-palette-item-shortcut{font-size:10px;color:var(--glass-text-muted);font-family:monospace;flex-shrink:0}.cmd-palette-empty{text-align:center;padding:32px 16px;color:var(--glass-text-muted);font-size:13px}.cmd-palette-footer{display:flex;align-items:center;gap:12px;padding:8px 16px;border-top:1px solid var(--glass-border);font-size:10px;color:var(--glass-text-muted)}.cmd-palette-footer kbd{padding:1px 4px;border:1px solid var(--glass-border);border-radius:3px;background:#ffffff0a;font-family:monospace;font-size:10px}.app-layout{display:flex;min-height:100dvh}.sidebar{width:260px;background:var(--color-bg-subtle);border-right:1px solid var(--color-border);display:flex;flex-direction:column;transition:width .2s ease;flex-shrink:0;z-index:var(--z-sidebar);overflow-y:auto;overflow-x:hidden}.sidebar.collapsed{width:56px}.sidebar-brand{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-3);border-bottom:1px solid var(--color-border);min-height:56px}.sidebar-logo{display:flex;align-items:center;gap:var(--space-2);text-decoration:none;color:var(--color-text)}.sidebar-logo-icon{font-size:1.4rem;flex-shrink:0}.sidebar-logo-text{font-size:var(--text-lg);font-weight:var(--font-bold);background:linear-gradient(135deg,var(--color-brand-500),var(--color-brand-300));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;white-space:nowrap}.sidebar-toggle{width:24px;height:24px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--color-text-muted);transition:background .15s}.sidebar-toggle:hover{background:var(--color-bg-muted)}.sidebar.collapsed .sidebar-brand{justify-content:center}.sidebar.collapsed .sidebar-toggle{margin:0 auto}.sidebar-project-context{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-bg-muted)}.sidebar-project-context--empty{background:transparent}.sidebar-project-name{display:flex;align-items:center;gap:var(--space-2);text-decoration:none;color:var(--color-text);font-size:var(--text-sm);font-weight:var(--font-semibold);line-height:1.3;transition:color .15s}.sidebar-project-name:hover{color:var(--color-brand-500)}.sidebar-project-icon{font-size:1rem;flex-shrink:0}.sidebar-project-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-project-meta{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-1);padding-left:calc(1rem + var(--space-2))}.sidebar-project-status{font-size:.7rem;font-weight:600;letter-spacing:.02em}.sidebar-project-status--active{color:var(--color-success)}.sidebar-project-status--completed{color:var(--color-brand-500)}.sidebar-project-status--archived{color:var(--color-text-muted)}.sidebar-project-change{font-size:.7rem;color:var(--color-text-muted);text-decoration:none;transition:color .15s}.sidebar-project-change:hover{color:var(--color-brand-500);text-decoration:underline}.sidebar-project-empty-link{display:flex;align-items:center;gap:var(--space-2);text-decoration:none;color:var(--color-text-muted);font-size:var(--text-sm);font-style:italic;transition:color .15s}.sidebar-project-empty-link:hover{color:var(--color-brand-500)}.sidebar-top-nav{padding:var(--space-2) var(--space-2) 0}.sidebar-nav{flex:1;padding:var(--space-1) var(--space-2);display:flex;flex-direction:column;gap:2px;overflow-y:auto;overflow-x:hidden}.sidebar-section{margin-bottom:2px}.sidebar-section.has-active .sidebar-section-header{color:var(--color-brand-500)}.sidebar-section-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:.7rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-muted);text-decoration:none;transition:all .15s;white-space:nowrap;overflow:hidden;width:100%;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none}.sidebar-section-header:hover{background:var(--color-bg-muted);color:var(--color-text-secondary)}.sidebar-section-label{flex:1;overflow:hidden;text-overflow:ellipsis}.sidebar-section-chevron{font-size:14px;transition:transform .2s ease;transform:rotate(0);flex-shrink:0;line-height:1}.sidebar-section-chevron.expanded{transform:rotate(90deg)}.sidebar-section-items{display:flex;flex-direction:column;gap:1px;padding-left:var(--space-2);animation:sidebar-expand .15s ease-out}@keyframes sidebar-expand{0%{opacity:0;max-height:0}to{opacity:1;max-height:500px}}.sidebar-link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-secondary);text-decoration:none;transition:all .15s;white-space:nowrap;overflow:hidden;width:100%;text-align:left}.sidebar-link:hover{background:var(--color-bg-muted);color:var(--color-text)}.sidebar-link.active{background:var(--color-brand-500);color:#fff}.sidebar-sub-link{font-size:.8rem;padding:5px var(--space-3) 5px calc(var(--space-3) + 4px)}.sidebar-sub-link .sidebar-link-icon{font-size:.85rem;width:20px}.sidebar-link-icon{font-size:1.1rem;flex-shrink:0;width:24px;text-align:center}.sidebar-link-label{overflow:hidden;text-overflow:ellipsis}.collapsed .sidebar-link-label,.collapsed .sidebar-section-label,.collapsed .sidebar-section-chevron,.collapsed .sidebar-section-items,.collapsed .sidebar-top-nav .sidebar-link-label{display:none}.sidebar-footer{padding:var(--space-2);border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:2px}.sidebar-footer .sidebar-logout:hover{color:var(--color-danger)}.main-area{flex:1;display:flex;flex-direction:column;min-width:0;overflow-x:hidden}.app-header{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-bg);flex-shrink:0}.header-left{display:flex;align-items:center;gap:var(--space-3)}.header-hamburger{display:flex;align-items:center;justify-content:center;width:40px;height:40px;font-size:1.4rem;padding:0;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;transition:background .15s,border-color .15s}.header-hamburger:hover{background:var(--color-bg-muted);border-color:var(--color-border-strong)}@media(pointer:coarse){.header-hamburger{width:44px;height:44px;font-size:1.5rem}}.header-right{display:flex;align-items:center;gap:var(--space-3)}.header-avatar{width:32px;height:32px;border-radius:50%;background:var(--color-brand-500);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:var(--font-bold);font-size:var(--text-sm)}.header-search-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;color:var(--color-text-secondary);cursor:pointer;transition:background .1s ease,border-color .1s ease;min-height:36px}.header-search-btn:hover{background:var(--color-bg);border-color:var(--color-border-strong);color:var(--color-text)}.header-search-btn:focus-visible{outline:2px solid var(--color-brand-500);outline-offset:2px}.header-search-btn__label{font-size:.875rem}.header-search-btn__kbd{font-family:ui-monospace,monospace;font-size:.6875rem;padding:1px 6px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted)}@media(max-width:640px){.header-search-btn__label,.header-search-btn__kbd{display:none}}[data-theme=dark] .sidebar-link-label,[data-theme=dark] .sidebar-section-label,[data-theme=dark] .sidebar-project-label,[data-theme=dark] .sidebar-project-meta,[data-theme=dark] .sidebar-project-status,[data-theme=dark] .sidebar-project-change,[data-theme=dark] .header-search-btn,[data-theme=dark] .header-search-btn__label,[data-theme=dark] .header-search-btn__kbd,[data-theme=dark] .header-viewas__btn,[data-theme=dark] .header-viewas__label,[data-theme=dark] .header-viewas__chevron,[data-theme=dark] .project-name,[data-theme=dark] .project-selector-trigger{color:var(--color-neutral-200)}[data-theme=dark] .sidebar-link-icon{color:var(--color-neutral-300)}[data-theme=dark] .sidebar-link.active .sidebar-link-label,.sidebar-link.active .sidebar-link-label{color:var(--color-neutral-0)}.header-viewas{position:relative}.header-viewas__btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.8125rem;color:var(--color-text-secondary);cursor:pointer;transition:background .1s ease,border-color .1s ease,color .1s ease;min-height:36px}.header-viewas__btn:hover{background:var(--color-bg-subtle);border-color:var(--color-border-strong);color:var(--color-text)}.header-viewas__btn:focus-visible{outline:2px solid var(--color-brand-500);outline-offset:2px}.header-viewas__btn--active{background:var(--color-brand-50);border-color:var(--color-brand-300);color:var(--color-brand-700)}.header-viewas__chevron{font-size:.625rem;color:var(--color-text-muted)}.header-viewas__menu{position:absolute;top:calc(100% + 4px);right:0;min-width:240px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);list-style:none;margin:0;padding:var(--space-2);z-index:100}.header-viewas__item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);background:transparent;border:none;border-radius:var(--radius-md);font-size:.875rem;color:var(--color-text);cursor:pointer;text-align:left;font:inherit}.header-viewas__item:hover{background:var(--color-bg-subtle)}.header-viewas__item.is-active{background:var(--color-brand-50);color:var(--color-brand-700);font-weight:600}.header-viewas__hint{font-size:.75rem;color:var(--color-text-muted);margin-left:auto}@media(max-width:768px){.header-viewas__label{display:none}}.breadcrumbs{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm)}.breadcrumb-sep{color:var(--color-text-muted);margin:0 var(--space-1)}.breadcrumb-link{color:var(--color-text-muted);text-decoration:none;transition:color .15s}.breadcrumb-link:hover{color:var(--color-brand-500)}.breadcrumb-current{color:var(--color-text);font-weight:var(--font-semibold)}.page-content{flex:1;overflow-y:auto}.skip-to-content{position:absolute;left:-9999px;top:var(--space-2);z-index:9999;padding:var(--space-2) var(--space-4);background:var(--color-brand-500);color:#fff;border-radius:var(--radius-md);font-weight:600}.skip-to-content:focus{left:var(--space-4)}@media(max-width:768px){.sidebar{position:fixed;left:0;top:0;bottom:0;z-index:var(--z-sidebar);box-shadow:4px 0 20px #00000026}.sidebar.collapsed{width:0;overflow:hidden;border:none;box-shadow:none}.header-hamburger{display:flex}}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:2px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.pending-sync-badge-wrap{position:relative}.pending-sync-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--color-warning, #f59e0b);color:#fff;border:none;border-radius:999px;font-size:.85rem;font-weight:600;cursor:pointer;min-height:32px;transition:filter .15s}.pending-sync-badge:hover{filter:brightness(1.1)}.pending-sync-badge__count{background:#ffffff40;border-radius:999px;padding:0 6px;min-width:18px;text-align:center;font-variant-numeric:tabular-nums}.pending-sync-popover{position:absolute;top:calc(100% + 8px);right:0;min-width:280px;max-width:360px;padding:var(--space-4);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 10px 30px #00000026;z-index:100;display:flex;flex-direction:column;gap:var(--space-3)}.pending-sync-popover__title{font-weight:700;color:var(--color-text)}.pending-sync-popover__body{margin:0;font-size:.85rem;color:var(--color-text-secondary);line-height:1.4}.pending-sync-popover__warn{margin:0;padding:8px 10px;background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-md);font-size:.8rem;color:var(--color-text);line-height:1.4}.pending-sync-popover__action{padding:8px 14px;background:var(--color-primary, #2563eb);color:#fff;border:none;border-radius:var(--radius-md);font-size:.85rem;font-weight:600;cursor:pointer;min-height:36px}.pending-sync-popover__action:hover:not(:disabled){filter:brightness(1.1)}.pending-sync-popover__action:disabled{opacity:.6;cursor:wait}@media(pointer:coarse){.pending-sync-badge{min-height:44px;padding:10px 16px}.pending-sync-popover__action{min-height:44px}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-family);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:focus-visible{outline:2px solid var(--color-brand-500);outline-offset:2px}:root{--color-brand-50: hsl(230, 60%, 96%);--color-brand-100: hsl(230, 55%, 90%);--color-brand-200: hsl(230, 55%, 80%);--color-brand-300: hsl(230, 55%, 70%);--color-brand-400: hsl(230, 55%, 60%);--color-brand-500: hsl(230, 55%, 50%);--color-brand-600: hsl(230, 55%, 42%);--color-brand-700: hsl(230, 55%, 34%);--color-brand-800: hsl(230, 55%, 26%);--color-brand-900: hsl(230, 55%, 18%);--color-neutral-0: hsl(0, 0%, 100%);--color-neutral-50: hsl(220, 20%, 97%);--color-neutral-100: hsl(220, 16%, 93%);--color-neutral-200: hsl(220, 14%, 84%);--color-neutral-300: hsl(220, 12%, 72%);--color-neutral-400: hsl(220, 10%, 46%);--color-neutral-500: hsl(220, 8%, 42%);--color-neutral-600: hsl(220, 10%, 32%);--color-neutral-700: hsl(220, 12%, 22%);--color-neutral-800: hsl(220, 14%, 14%);--color-neutral-900: hsl(220, 18%, 8%);--color-success: #22c55e;--color-success-light: rgba(34, 197, 94, .15);--color-warning: #f59e0b;--color-warning-light: rgba(245, 158, 11, .15);--color-danger: #ef4444;--color-danger-light: rgba(239, 68, 68, .15);--color-info: #3b82f6;--color-info-light: rgba(59, 130, 246, .15);--color-priority-low: #22c55e;--color-priority-medium: #f59e0b;--color-priority-high: #f97316;--color-priority-critical: #ef4444;--color-measure: #22d3ee;--color-calibration: #facc15;--color-bg: var(--color-neutral-0);--color-bg-subtle: var(--color-neutral-50);--color-bg-muted: var(--color-neutral-100);--color-text: var(--color-neutral-900);--color-text-secondary: var(--color-neutral-500);--color-text-muted: var(--color-neutral-400);--color-border: var(--color-neutral-200);--color-border-strong: var(--color-neutral-300)}[data-theme=dark]{--color-bg: var(--color-neutral-900);--color-bg-subtle: var(--color-neutral-800);--color-bg-muted: var(--color-neutral-700);--color-text: var(--color-neutral-50);--color-text-secondary: var(--color-neutral-400);--color-text-muted: var(--color-neutral-500);--color-border: var(--color-neutral-700);--color-border-strong: var(--color-neutral-600)}:root{--font-family: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.75;--tracking-tight: -.025em;--tracking-normal: 0;--tracking-wide: .025em}:root{--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--touch-target: 44px}:root{--z-base: 0;--z-overlay-pin: 10;--z-overlay-stamp: 12;--z-overlay-draw: 15;--z-overlay-top: 20;--z-sidebar: 40;--z-sticky: 100;--z-toolbar: 200;--z-dropdown: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-toast: 600;--z-tooltip: 700}:root{--duration-fast: .1s;--duration-normal: .2s;--duration-slow: .3s;--duration-slower: .5s;--ease-default: cubic-bezier(.4, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1)}@media(prefers-reduced-motion:reduce){:root{--duration-fast: 0ms;--duration-normal: 0ms;--duration-slow: 0ms;--duration-slower: 0ms}}:root{--glass-bg-deep: #0a0a1a;--glass-bg-deep-end: #0f0f2a;--glass-surface: rgba(16, 16, 34, .7);--glass-surface-hover: rgba(16, 16, 34, .85);--glass-surface-active: rgba(20, 20, 45, .9);--glass-blur: 16px;--glass-blur-heavy: 24px;--glass-border: rgba(255, 255, 255, .06);--glass-border-hover: rgba(255, 255, 255, .12);--glass-border-active: rgba(255, 255, 255, .18);--glass-accent: #6366f1;--glass-accent-soft: rgba(99, 102, 241, .15);--glass-accent-glow: rgba(99, 102, 241, .3);--glass-cyan: #22d3ee;--glass-cyan-soft: rgba(34, 211, 238, .12);--glass-cyan-glow: rgba(34, 211, 238, .3);--glass-text: #e0e0ff;--glass-text-secondary: #a0a0c0;--glass-text-muted: #808090;--discipline-architecture: #6366f1;--discipline-structure: #f97316;--discipline-mecanique: #22c55e;--discipline-electrique: #eab308;--discipline-plomberie: #3b82f6;--discipline-civil: #a855f7;--discipline-demolition: #ef4444;--discipline-paysage: #10b981;--discipline-general: #94a3b8;--discipline-protection_incendie: #f43f5e;--discipline-telecom: #06b6d4;--discipline-instrumentation: #8b5cf6;--pulse-color-lo: rgba(34, 211, 238, .3);--pulse-color-hi: rgba(34, 211, 238, .7);--pulse-shadow: 0 0 20px rgba(34, 211, 238, .25);--pulse-shadow-hi: 0 0 28px rgba(34, 211, 238, .4);--glass-card-radius: 12px;--glass-card-padding: 16px;--glass-card-shadow: 0 8px 32px rgba(0, 0, 0, .3);--glass-card-shadow-hover: 0 16px 48px rgba(0, 0, 0, .4);--glass-transition-fast: .15s ease;--glass-transition: .25s ease;--glass-transition-slow: .4s ease;--glass-ease-bounce: cubic-bezier(.34, 1.56, .64, 1)}@media(prefers-reduced-motion:reduce){:root{--glass-transition-fast: 0ms;--glass-transition: 0ms;--glass-transition-slow: 0ms}}.flex-1{flex:1}.flex-row{display:flex;flex-direction:row}.flex-col{display:flex;flex-direction:column}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.self-end{align-self:flex-end}.flex-wrap{flex-wrap:wrap}.gap-1{gap:var(--space-1, 4px)}.gap-2{gap:var(--space-2, 8px)}.gap-3{gap:var(--space-3, 12px)}.gap-4{gap:var(--space-4, 16px)}.gap-5{gap:var(--space-5, 20px)}.p-0{padding:0}.p-3{padding:var(--space-3, 12px)}.p-4{padding:var(--space-4, 16px)}.p-5{padding:var(--space-5, 20px)}.px-4{padding-left:var(--space-4, 16px);padding-right:var(--space-4, 16px)}.px-5{padding-left:var(--space-5, 20px);padding-right:var(--space-5, 20px)}.py-3{padding-top:var(--space-3, 12px);padding-bottom:var(--space-3, 12px)}.pb-3{padding-bottom:var(--space-3, 12px)}.pb-4{padding-bottom:var(--space-4, 16px)}.mb-3{margin-bottom:var(--space-3, 12px)}.mb-4{margin-bottom:var(--space-4, 16px)}.ml-2{margin-left:var(--space-2, 8px)}.module-content{padding:0 var(--space-4, 16px) var(--space-4, 16px)}.module-kpi-strip{display:flex;gap:var(--space-3, 12px);padding:0 var(--space-5, 20px) var(--space-3, 12px);flex-wrap:wrap;align-items:center}.btn-group{display:flex;gap:var(--space-2, 8px);align-items:center}.view-mode-toggle{display:flex;gap:4px;background:#ffffff0a;border-radius:var(--radius-md, 8px);padding:2px}.import-export-group{display:flex;gap:var(--space-2, 8px);align-items:center;margin-left:var(--space-2, 8px);border-left:1px solid rgba(255,255,255,.1);padding-left:var(--space-3, 12px)}.text-warning{color:var(--color-warning, #f59e0b)}.text-info{color:var(--color-info, #3b82f6)}.kpi-milestone{background:var(--color-warning-light, rgba(245, 158, 11, .15));color:var(--color-warning, #f59e0b)}.kpi-danger{background:var(--color-danger-light, rgba(239, 68, 68, .15));color:var(--color-danger, #ef4444)}.kpi-success{background:var(--color-success-light, rgba(34, 197, 94, .15));color:var(--color-success, #22c55e)}.kpi-info{background:var(--color-info-light, rgba(59, 130, 246, .15));color:var(--color-info, #3b82f6)}.status-badge--approved{background:var(--color-success, #22c55e)}.status-badge--submitted{background:var(--color-info, #3b82f6)}.status-badge--draft{background:var(--color-warning, #f59e0b)}.status-badge--open{background:var(--color-danger, #ef4444)}.status-badge--closed{background:var(--color-text-muted, #64748b)}.task-progress-section{padding:var(--space-4, 16px);margin-bottom:var(--space-4, 16px);border:1px solid var(--color-border);border-radius:var(--radius-lg, 12px);background:var(--color-bg)}.task-progress-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3, 12px)}.task-progress-title{font-size:var(--text-sm, .875rem);font-weight:600}.task-progress-section--empty{padding:var(--space-4, 16px);margin-bottom:var(--space-4, 16px);border:1px dashed var(--color-border);border-radius:var(--radius-lg, 12px);background:var(--color-bg-muted, rgba(255, 255, 255, .03));color:var(--color-text-muted);font-size:.85rem;text-align:center}.task-progress-section--empty p{margin:0}.task-progress-hint{font-size:.75rem;color:var(--color-text-muted);font-style:italic}.dl-meta-inline{display:flex;flex-direction:column;gap:var(--space-2, 8px);padding:var(--space-3, 12px);margin-bottom:var(--space-3, 12px);background:var(--color-bg-muted, rgba(255, 255, 255, .04));border:1px solid var(--color-border);border-radius:var(--radius-md, 8px)}.dl-meta-inline__row{display:flex;align-items:center;gap:var(--space-2, 8px);flex-wrap:wrap}.dl-meta-inline__label{font-size:.8rem;color:var(--color-text-muted);font-weight:600}.dl-meta-inline__label--block{width:100%}.dl-meta-inline__select,.dl-meta-inline__input,.dl-meta-inline__textarea{padding:6px 10px;font-size:.85rem;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg);color:var(--color-text)}.dl-meta-inline__input--temp{width:80px}.dl-meta-inline__input--wide{flex:1;min-width:200px}.dl-meta-inline__textarea{width:100%;resize:vertical;font-family:inherit}.dl-create-hint{margin-top:var(--space-3, 12px);padding:var(--space-3, 12px);background:#6366f11a;border:1px solid rgba(99,102,241,.3);border-radius:8px;color:var(--color-text);font-size:.82rem;line-height:1.5}.checkbox-label{display:flex;align-items:center;gap:var(--space-2, 8px);cursor:pointer}.max-w-300{max-width:300px}.text-sm{font-size:var(--text-sm, .875rem)}.text-xs{font-size:.75rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.hidden{display:none}.dashboard-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:linear-gradient(165deg,var(--glass-bg-deep, #0a0a1a) 0%,var(--glass-bg-deep-end, #0f0f2a) 100%);overflow:hidden;pointer-events:none}.dashboard-bg:before{content:"";position:absolute;top:-25%;right:-25%;bottom:-25%;left:-25%;background:radial-gradient(ellipse 70% 60% at 30% 40%,rgba(99,102,241,.14),transparent 65%);animation:mesh-drift-1 37s ease-in-out infinite alternate;will-change:transform}.dashboard-bg:after{content:"";position:absolute;top:-25%;right:-25%;bottom:-25%;left:-25%;background:radial-gradient(ellipse 65% 55% at 75% 25%,rgba(34,211,238,.09),transparent 55%);animation:mesh-drift-2 53s ease-in-out infinite alternate;will-change:transform}.dashboard-bg-layer3{position:absolute;top:-25%;right:-25%;bottom:-25%;left:-25%;background:radial-gradient(ellipse 60% 70% at 55% 75%,rgba(49,46,129,.11),transparent 55%);animation:mesh-drift-3 71s ease-in-out infinite alternate;will-change:transform}.dashboard-bg-noise{position:absolute;top:0;right:0;bottom:0;left:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:128px 128px;opacity:.03;mix-blend-mode:overlay;pointer-events:none}@keyframes mesh-drift-1{0%{transform:translate(0) scale(1)}25%{transform:translate(2%,-1.5%) scale(1.02)}50%{transform:translate(3%,-2%) scale(1.04)}75%{transform:translate(-1%,2%) scale(.99)}to{transform:translate(1%,-1%) scale(1.02)}}@keyframes mesh-drift-2{0%{transform:translate(0) scale(1)}20%{transform:translate(-3%,1.5%) scale(1.03)}40%{transform:translate(-4%,2%) scale(1.05)}60%{transform:translate(2%,-2.5%) scale(.97)}80%{transform:translate(-1%,1%) scale(1.01)}to{transform:translate(3%,-2%) scale(1.03)}}@keyframes mesh-drift-3{0%{transform:translate(0) rotate(0) scale(1)}33%{transform:translate(-2%,3%) rotate(2deg) scale(1.03)}66%{transform:translate(-3%,4%) rotate(3deg) scale(1.06)}to{transform:translate(2%,-2%) rotate(-2deg) scale(.98)}}@media(prefers-reduced-motion:reduce){.dashboard-bg:before,.dashboard-bg:after,.dashboard-bg-layer3{animation:none}}#root{min-height:100dvh;display:flex;flex-direction:column}:focus-visible{outline:2px solid var(--color-brand-500, #6366f1);outline-offset:2px;border-radius:2px}:focus:not(:focus-visible){outline:none}.skip-to-content{position:absolute;top:-100%;left:var(--space-4, 16px);z-index:9999;padding:var(--space-2, 8px) var(--space-4, 16px);background:var(--color-brand-500, #6366f1);color:#fff;border-radius:var(--radius-md, 8px);font-weight:600;text-decoration:none;transition:top .2s}.skip-to-content:focus{top:var(--space-4, 16px)}@media(pointer:coarse){.btn,.toolbar-btn,.sidebar-link,.toolbar-zoom button{min-height:44px;min-width:44px}}.app-layout{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:var(--space-8);background:var(--color-bg)}.error-boundary__content{text-align:center;max-width:480px}.error-boundary__content h1{font-size:var(--text-xl);font-weight:var(--font-bold);margin-bottom:var(--space-3);color:var(--color-danger)}.error-boundary__content p{color:var(--color-text-secondary);margin-bottom:var(--space-4)}.error-boundary__details{padding:var(--space-3);background:var(--color-bg-muted);border-radius:var(--radius-md);font-size:var(--text-xs);color:var(--color-text-muted);overflow-x:auto;margin-bottom:var(--space-4);text-align:left;white-space:pre-wrap}.error-boundary__reload{padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);background:var(--color-brand-500);color:var(--color-neutral-0);font-weight:var(--font-semibold);cursor:pointer;border:none;transition:background var(--duration-fast)}.error-boundary__reload:hover{background:var(--color-brand-600)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-weight:var(--font-semibold);font-size:var(--text-sm);cursor:pointer;transition:all var(--duration-fast) var(--ease-default);border:1px solid transparent}.btn-primary{background:var(--color-brand-500);color:var(--color-neutral-0)}.btn-secondary{background:var(--color-bg-muted);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover{background:var(--color-border)}.btn:disabled{opacity:.5;cursor:not-allowed}.plan-viewer{position:relative;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;flex:1;overflow:hidden;background:var(--color-bg-muted);height:100vh;max-height:100vh;overscroll-behavior:none}.plan-viewer>.viewer-topbar{grid-column:1 / -1;grid-row:1;z-index:200;isolation:isolate;pointer-events:auto}.plan-viewer>.viewer-toolbar{grid-column:1;grid-row:2;z-index:200;isolation:isolate;pointer-events:auto}.plan-viewer>.viewer-page{grid-column:2;grid-row:2}.plan-viewer>.viewer-canvas-area{grid-column:2;grid-row:2}.viewer-page{display:flex;flex-direction:column;flex:1;position:relative}.viewer-canvas-area{flex:1;overflow:hidden;position:relative;cursor:grab;overscroll-behavior:none}.viewer-canvas-area:active{cursor:grabbing}.viewer-transform{position:relative;will-change:transform}.viewer-canvas{display:block;max-width:none;background:#fff}.viewer-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);background:#00000073;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:var(--z-overlay-pin);pointer-events:none;color:var(--color-neutral-0);font-size:var(--text-sm)}.viewer-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-8);color:var(--color-error);text-align:center}.viewer-topbar{display:flex;align-items:center;gap:2px;height:44px;padding:0 var(--space-2);background:var(--color-bg);border-bottom:1px solid var(--color-border);z-index:var(--z-toolbar);flex-shrink:0;grid-column:1 / -1;touch-action:manipulation;overscroll-behavior:none}.topbar-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px;min-width:32px;padding:0 8px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-size:var(--text-sm);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.topbar-btn:hover{background:var(--color-bg-muted);color:var(--color-text)}.topbar-btn:disabled{opacity:.3;cursor:default}.topbar-btn:disabled:hover{background:transparent}.topbar-back{font-weight:500;padding:0 8px}.topbar-back span{font-size:11px}.topbar-divider{width:1px;height:20px;background:var(--color-border);margin:0 4px}.topbar-group{display:flex;align-items:center;gap:2px}.topbar-sep{margin-left:8px;padding-left:8px;border-left:1px solid var(--color-border)}.topbar-zoom-input{width:48px;height:22px;text-align:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-muted);color:var(--color-text);font-size:11px;font-weight:600;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield;padding:0 2px}.topbar-zoom-input::-webkit-inner-spin-button,.topbar-zoom-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.topbar-zoom-input:focus{outline:none;border-color:var(--color-brand-500);box-shadow:0 0 0 2px #6366f133}.topbar-page-input{width:32px;height:22px;text-align:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-muted);color:var(--color-text);font-size:11px;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.topbar-page-input::-webkit-inner-spin-button,.topbar-page-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.topbar-page-total{font-size:11px;color:var(--color-text-muted);margin:0 2px}.viewer-toolbar{display:flex;flex-direction:column;background:var(--color-bg);border-right:1px solid var(--color-border);z-index:var(--z-toolbar);width:44px;flex-shrink:0;touch-action:manipulation}.toolbar-rail{flex:1;display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-1)}.toolbar-group{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-1) 0;border-bottom:1px solid var(--color-border)}.toolbar-group:last-child{border-bottom:none}.toolbar-btn{position:relative;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-md);cursor:pointer;background:transparent;color:var(--color-text, #e0e0e0);transition:all var(--duration-fast) var(--ease-default)}.toolbar-btn:hover{background:var(--color-bg-muted)}.toolbar-btn.active{background:var(--color-brand-500);color:var(--color-neutral-0)}.toolbar-icon{font-size:18px}.toolbar-dropdown{position:relative;width:100%;display:flex;flex-direction:column;align-items:center}.toolbar-dropdown-trigger{display:flex;align-items:center;justify-content:center;gap:2px}.toolbar-chevron{opacity:.5;flex-shrink:0}.toolbar-dropdown-menu{position:fixed;min-width:180px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:4px;box-shadow:0 8px 24px #0000004d;z-index:var(--z-dropdown, 500);animation:toolbar-dropdown-in .12s ease-out}@keyframes toolbar-dropdown-in{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.toolbar-dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;background:transparent;color:var(--color-text, #e0e0e0);cursor:pointer;border-radius:var(--radius-sm);font-size:var(--text-sm, .875rem);transition:background .1s;text-align:left;white-space:nowrap}.toolbar-dropdown-item:hover{background:var(--color-bg-muted)}.toolbar-dropdown-item.active{background:#6366f126;color:var(--color-brand-500, #6366f1)}.toolbar-shortcut{margin-left:auto;font-size:10px;padding:1px 5px;border-radius:3px;background:var(--color-bg-muted, #1e1e32);color:var(--color-text-muted, #888);font-family:monospace}.toolbar-badge{position:absolute;top:2px;right:2px;min-width:14px;height:14px;padding:0 3px;background:var(--color-brand-500, #6366f1);color:#fff;font-size:9px;font-weight:700;border-radius:7px;display:flex;align-items:center;justify-content:center;line-height:1}.toolbar-dropdown-label{padding:6px 10px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted, #888);-webkit-user-select:none;user-select:none}.icon-roundrect{border-radius:4px}@media(min-width:1600px){.viewer-topbar{height:44px}.topbar-btn{height:34px;min-width:34px;padding:0 8px}.topbar-btn svg{width:18px;height:18px}.topbar-zoom-input{width:56px;height:28px;font-size:13px}.topbar-page-input{width:38px;height:28px;font-size:13px}.topbar-page-total{font-size:13px}.viewer-toolbar{width:52px}.toolbar-btn{width:42px;height:42px}.toolbar-btn svg{width:20px;height:20px}}@media(max-width:1024px){.viewer-topbar{height:40px;gap:2px}.topbar-btn{height:36px;min-width:36px;padding:0 6px}.topbar-btn svg{width:16px;height:16px}.topbar-back span{display:none}.topbar-zoom-input{width:44px;height:28px;font-size:12px}.topbar-page-input{width:32px;height:28px;font-size:12px}.viewer-toolbar{width:44px}.toolbar-btn{width:36px;height:36px}.toolbar-btn svg{width:16px;height:16px}}.observation-pins-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.observation-pin{pointer-events:auto;background:none;border:none;padding:0;display:flex;flex-direction:column;align-items:center;cursor:pointer;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transition:transform var(--duration-fast) var(--ease-default)}.observation-pin:hover{transform:translate(-50%,-100%) scale(1.2)}.pin-icon{font-size:20px}.pin-dot{width:8px;height:8px;border-radius:var(--radius-full);margin-top:-4px}.sibling-nav{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-bg);border-top:1px solid var(--color-border)}.sibling-label{font-size:var(--text-sm);color:var(--color-text-muted)}.sibling-buttons{display:flex;gap:var(--space-1)}.sibling-buttons button{padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);background:var(--color-bg-muted);cursor:pointer;transition:background var(--duration-fast) var(--ease-default)}.sibling-buttons button:hover:not(:disabled){background:var(--color-border)}.sibling-buttons button:disabled{opacity:.4;cursor:not-allowed}.viewer-page-nav{display:flex;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-2);background:var(--color-bg);border-top:1px solid var(--color-border)}.viewer-page-nav button{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:var(--color-bg-muted);font-size:var(--text-lg);cursor:pointer}.viewer-page-nav button:disabled{opacity:.3;cursor:not-allowed}.viewer-toggle-pins{position:absolute;z-index:var(--z-sticky);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--color-bg);border:1px solid var(--color-border);font-size:var(--text-sm);cursor:pointer;box-shadow:0 2px 8px #0000001a;width:auto;height:auto;min-height:44px;min-width:44px}.viewer-action-bar{position:absolute;bottom:calc(16px + env(safe-area-inset-bottom,0px));right:calc(16px + env(safe-area-inset-right,0px));z-index:var(--z-sidebar);display:flex;gap:8px}@media(max-width:768px){.viewer-action-bar{flex-wrap:wrap;justify-content:flex-end;max-width:calc(100vw - 16px)}}.viewer-mobile-back{position:fixed;top:calc(var(--space-3, 12px) + env(safe-area-inset-top,0px));left:calc(var(--space-3, 12px) + env(safe-area-inset-left,0px));z-index:2147483647;display:none;align-items:center;gap:4px;min-width:44px;min-height:44px;padding:0 14px;border:1px solid var(--color-border);border-radius:999px;background:#141428eb;color:#fff;font-size:14px;font-weight:600;box-shadow:0 4px 16px #00000040;cursor:pointer;-webkit-tap-highlight-color:transparent;pointer-events:auto}.viewer-mobile-back:active{background:#141428c7;transform:scale(.97)}@media(pointer:coarse),(max-width:1024px){.viewer-mobile-back{display:inline-flex}}.slippage-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:250;display:flex;align-items:center;justify-content:center;padding:24px}.slippage-modal{background:var(--color-bg);border:1px solid var(--color-border);border-radius:12px;width:100%;max-width:820px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #00000080}.slippage-modal__header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-border)}.slippage-modal__header h2{margin:0;font-size:1.05rem;font-weight:700;color:var(--color-text)}.slippage-modal__header button{width:30px;height:30px;border:none;border-radius:50%;background:var(--color-bg-muted);color:var(--color-text-muted);font-size:14px;cursor:pointer}.slippage-modal__intro{margin:14px 20px;font-size:.88rem;color:var(--color-text-secondary);line-height:1.5}.slippage-modal__table-wrap{flex:1;overflow-y:auto;padding:0 12px}.slippage-modal__table{width:100%;border-collapse:collapse;font-size:.84rem;color:var(--color-text)}.slippage-modal__table thead th{position:sticky;top:0;background:var(--color-bg);text-align:left;padding:10px 8px;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.slippage-modal__table tbody td{padding:10px 8px;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:top}.slippage-modal__wbs{color:var(--color-text-muted);font-weight:400}.slippage-modal__actual{color:#f59e0b;font-weight:700}.slippage-modal__slip-days{color:#ef4444;font-weight:700}.slippage-modal__actions{padding:16px 20px;border-top:1px solid var(--color-border);display:flex;justify-content:space-between;gap:8px}.task-progress__slip-warn{font-size:.72rem;font-weight:700;padding:3px 9px;border-radius:999px;background:#f59e0b2e;color:#f59e0b;border:1px solid rgba(245,158,11,.35)}.viewer-page-nav-overlay{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);z-index:220;display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:#141428eb;border:1px solid var(--color-border, rgba(255,255,255,.12));border-radius:999px;box-shadow:0 6px 20px #00000059;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.viewer-page-nav-overlay__btn{width:44px;height:44px;border:none;border-radius:50%;background:#ffffff14;color:#fff;font-size:26px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;transition:background .1s,transform .1s}.viewer-page-nav-overlay__btn:hover:not(:disabled){background:#ffffff2e}.viewer-page-nav-overlay__btn:active:not(:disabled){transform:scale(.92)}.viewer-page-nav-overlay__btn:disabled{opacity:.35;cursor:not-allowed}.viewer-page-nav-overlay__indicator{display:inline-flex;align-items:center;gap:2px;color:#fff;font-size:14px;font-weight:600;padding:0 6px}.viewer-page-nav-overlay__input{width:48px;background:transparent;border:1px solid var(--color-border, rgba(255,255,255,.12));border-radius:6px;color:#fff;font-size:14px;font-weight:700;text-align:center;padding:6px 4px;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.viewer-page-nav-overlay__input::-webkit-outer-spin-button,.viewer-page-nav-overlay__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.viewer-page-nav-overlay__total{opacity:.6;font-weight:500}.viewer-version-pill{position:fixed;top:calc(var(--space-3, 12px) + env(safe-area-inset-top,0px) + 56px);left:50%;transform:translate(-50%);z-index:220;display:inline-flex;align-items:center;gap:10px;padding:8px 14px;background:#f59e0beb;color:#fff;font-size:.85rem;font-weight:600;border-radius:999px;box-shadow:0 4px 16px #0000004d;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.viewer-version-pill__divider{opacity:.5}.viewer-version-pill__action{background:#ffffff38;border:1px solid rgba(255,255,255,.35);color:#fff;padding:4px 10px;border-radius:999px;font-size:.78rem;font-weight:600;cursor:pointer;transition:background .15s}.viewer-version-pill__action:hover{background:#ffffff59}.toast-container{position:fixed;top:var(--space-4);right:var(--space-4);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-2);max-width:400px}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-bg);border:1px solid var(--color-border);box-shadow:0 4px 12px #00000026;animation:slideIn var(--duration-normal) var(--ease-default);font-size:var(--text-sm)}.toast-success{border-left:4px solid var(--color-success)}.toast-error{border-left:4px solid var(--color-error)}.toast-warning{border-left:4px solid var(--color-warning)}.toast-info{border-left:4px solid var(--color-brand-500)}.toast-icon{font-size:var(--text-lg);flex-shrink:0}.toast-message{flex:1}.toast-close{background:none;border:none;font-size:var(--text-lg);cursor:pointer;color:var(--color-text-muted);padding:0 var(--space-1)}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-8)}.loading-fullpage{min-height:100dvh;display:flex;align-items:center;justify-content:center}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-brand-500);border-radius:var(--radius-full);animation:spin var(--duration-slower) linear infinite}.loading-message{font-size:var(--text-sm);color:var(--color-text-muted)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-12) var(--space-8);text-align:center}.empty-state-icon{font-size:48px}.empty-state-title{font-size:var(--text-lg);font-weight:var(--font-semibold)}.empty-state-desc{color:var(--color-text-muted);font-size:var(--text-sm);max-width:360px}.skeleton{background:linear-gradient(90deg,var(--color-bg-muted) 25%,var(--color-border) 50%,var(--color-bg-muted) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media print{.no-print,.viewer-toolbar,.toast-container,.sibling-nav,.viewer-page-nav,.viewer-toggle-pins,.obs-list-sidebar,.obs-panel,.obs-modal-overlay,.stamp-picker,.calibration-modal,.export-overlay,.version-overlay,.qt-overlay,.notification-dropdown,.notification-bell-container,.notes-panel,.dashboard-header-actions,.project-header button,.measure-overlay{display:none!important}body{background:#fff!important;color:#000!important}.app-layout,.plan-viewer{display:block!important;width:100%!important;height:auto!important;overflow:visible!important}.app-sidebar{display:none!important}.viewer-canvas-area{overflow:visible!important;height:auto!important}.viewer-transform{transform:none!important}.viewer-canvas{max-width:100%!important;height:auto!important}.sheet-row{break-inside:avoid;page-break-inside:avoid}.dashboard-kpis{flex-wrap:wrap!important}}@keyframes spin{to{transform:rotate(360deg)}}.stats-bar{display:flex;gap:var(--space-3);padding:var(--space-4) 0;flex-wrap:wrap;position:relative}.kpi-card{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);border-left:3px solid;background:var(--color-bg);min-width:140px;flex:1;box-shadow:0 1px 3px #0000000f;transition:box-shadow .15s}.kpi-card:hover{box-shadow:0 4px 12px #0000001a}.kpi-icon{font-size:1.6rem;line-height:1}.kpi-data{display:flex;flex-direction:column;gap:2px}.kpi-value{font-size:var(--text-xl);font-weight:var(--font-bold);line-height:1}.kpi-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.kpi-subtitle{font-size:var(--text-xs);color:var(--color-text-muted)}.stats-progress-bar{width:100%;height:6px;border-radius:3px;background:var(--color-bg-muted);overflow:hidden;margin-top:var(--space-1)}.stats-progress-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--color-success),var(--color-success));transition:width .5s ease-out}.notification-bell-container{position:relative}.notification-bell{background:none;border:none;cursor:pointer;font-size:1.3rem;padding:var(--space-2);border-radius:var(--radius-md);transition:background .15s;position:relative}.notification-bell:hover{background:var(--color-bg-muted)}.notification-live-indicator{position:absolute;bottom:4px;right:4px;width:8px;height:8px;color:#10b981;font-size:8px;line-height:1;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.notification-badge{position:absolute;top:2px;right:2px;min-width:18px;height:18px;border-radius:9px;background:var(--color-error);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;animation:badgePop .2s ease-out}@keyframes badgePop{0%{transform:scale(0)}to{transform:scale(1)}}.notification-dropdown{position:absolute;top:100%;right:0;width:340px;max-height:400px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 12px 40px #0003;z-index:var(--z-dropdown);overflow:hidden;animation:slideIn .15s ease-out}.notification-dropdown-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);font-weight:var(--font-semibold);font-size:var(--text-sm)}.notification-mark-all{background:none;border:none;color:var(--color-brand-500);font-size:var(--text-xs);cursor:pointer;font-weight:500}.notification-mark-all:hover{text-decoration:underline}.notification-list{overflow-y:auto;max-height:350px}.notification-item{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);cursor:pointer;background:none;border:none;width:100%;text-align:left;transition:background .1s}.notification-item:hover{background:var(--color-bg-muted)}.notification-item.unread{background:#6366f10a}.notification-dot{width:8px;height:8px;border-radius:50%;background:transparent;margin-top:5px;flex-shrink:0}.notification-item.unread .notification-dot{background:var(--color-brand-500)}.notification-content{display:flex;flex-direction:column;gap:2px;min-width:0}.notification-title{font-size:var(--text-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notification-body{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notification-time{font-size:var(--text-xs);color:var(--color-text-muted)}.notification-empty{padding:var(--space-8) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.notes-panel{width:320px;background:var(--color-bg);border-left:1px solid var(--color-border);display:flex;flex-direction:column;height:100%;flex-shrink:0}.notes-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);font-weight:var(--font-semibold)}.notes-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--color-text-muted)}.notes-add{padding:var(--space-3);border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-2)}.notes-textarea{width:100%;resize:vertical;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2);font-size:var(--text-sm);font-family:inherit;background:var(--color-bg)}.notes-add-btn{align-self:flex-end;padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);background:var(--color-brand-500);color:#fff;border:none;cursor:pointer;font-size:var(--text-sm)}.notes-add-btn:disabled{opacity:.4;cursor:not-allowed}.notes-list{flex:1;overflow-y:auto}.note-item{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);position:relative}.note-item:hover .note-actions{opacity:1}.note-content{font-size:var(--text-sm);white-space:pre-wrap}.note-meta{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1);display:flex;gap:var(--space-1)}.note-actions{position:absolute;top:var(--space-2);right:var(--space-2);display:flex;gap:2px;opacity:0;transition:opacity .1s}.note-actions button{background:none;border:none;cursor:pointer;font-size:12px;padding:2px 4px;border-radius:3px}.note-actions button:hover{background:var(--color-bg-muted)}.note-edit{display:flex;flex-direction:column;gap:var(--space-2)}.note-edit-actions{display:flex;gap:var(--space-1)}.note-edit-actions button{padding:2px 8px;border-radius:3px;background:var(--color-bg-muted);border:none;cursor:pointer}.notes-loading,.notes-empty{padding:var(--space-8);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.export-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.export-modal{background:var(--color-bg);border-radius:var(--radius-lg);width:420px;max-width:95vw;box-shadow:0 20px 60px #0000004d;overflow:hidden}.export-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-border);font-weight:var(--font-semibold)}.export-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--color-text-muted)}.export-scope{padding:var(--space-3) var(--space-4)}.export-scope-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;display:block;margin-bottom:var(--space-2)}.export-scope-btns{display:flex;gap:var(--space-2)}.export-scope-btn{flex:1;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg);cursor:pointer;font-size:var(--text-sm);transition:all .15s}.export-scope-btn.active{border-color:var(--color-brand-500);background:#6366f114;color:var(--color-brand-500)}.export-actions{padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.export-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg);cursor:pointer;font-size:var(--text-sm);font-weight:500;transition:all .15s}.export-btn:hover{border-color:var(--color-brand-500);background:#6366f10a}.export-btn:disabled{opacity:.5;cursor:not-allowed}.export-btn-desc{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:400}.export-loading{text-align:center;padding:var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted)}.slipsheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.slipsheet-modal{background:var(--color-bg);border-radius:var(--radius-lg);width:480px;max-width:95vw;box-shadow:0 20px 60px #00000059;overflow:hidden;display:flex;flex-direction:column;max-height:90vh}.slipsheet-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-border);font-weight:var(--font-semibold)}.slipsheet-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--color-text-muted)}.slipsheet-body{padding:var(--space-4);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-3)}.slipsheet-desc{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.5;margin:0}.slipsheet-file-label{display:block;cursor:pointer}.slipsheet-file-input{display:none}.slipsheet-file-btn{display:block;padding:var(--space-3) var(--space-4);border:1.5px dashed var(--color-border);border-radius:var(--radius-md);text-align:center;font-size:var(--text-sm);color:var(--color-text-muted);transition:all .15s}.slipsheet-file-btn:hover{border-color:var(--color-brand-500);color:var(--color-brand-500);background:#6366f10a}.slipsheet-analyzing{padding:var(--space-2) var(--space-3);background:#6366f114;border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-brand-500)}.slipsheet-ratio{padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface)}.slipsheet-ratio h4{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--font-semibold)}.slipsheet-ratio-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.slipsheet-ratio-table td{padding:var(--space-1) var(--space-2)}.slipsheet-ratio-table td:first-child{color:var(--color-text-muted);width:55%}.slipsheet-ratio--warn{border-color:#f59e0b;background:#f59e0b0f}.slipsheet-warning{margin:var(--space-2) 0 0;font-size:var(--text-xs);color:#f59e0b}.slipsheet-notes-label{font-size:var(--text-sm);color:var(--color-text-muted);display:flex;flex-direction:column;gap:var(--space-1)}.slipsheet-notes{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:var(--text-sm);resize:vertical}.slipsheet-footer{display:flex;gap:var(--space-2);padding:var(--space-4);border-top:1px solid var(--color-border)}.slipsheet-btn-cancel{flex:1;padding:var(--space-2);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;font-size:var(--text-sm)}.slipsheet-btn-confirm{flex:2;padding:var(--space-2);border-radius:var(--radius-md);border:none;background:var(--color-brand-500, #6366f1);color:#fff;cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:opacity .15s}.slipsheet-btn-confirm:disabled{opacity:.5;cursor:not-allowed}.version-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.version-modal{background:var(--color-bg);border-radius:var(--radius-lg);width:500px;max-width:95vw;box-shadow:0 20px 60px #0000004d;overflow:hidden}.version-modal-wide{width:90vw;max-height:90vh;display:flex;flex-direction:column}.version-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.version-header h3{flex:1;font-weight:var(--font-semibold)}.version-header button{background:none;border:none;font-size:18px;cursor:pointer;color:var(--color-text-muted)}.version-selectors{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}.version-selectors select{padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);border:1px solid var(--color-border);font-size:var(--text-sm)}.version-vs{color:var(--color-text-muted)}.version-current{color:var(--color-brand-500);font-weight:500}.version-canvas-container{position:relative;flex:1;overflow:auto;display:flex;align-items:center;justify-content:center;background:var(--color-bg-muted)}.version-canvas{max-width:100%;max-height:70vh}.version-canvas-old,.version-canvas-new{position:absolute}.version-slider{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);font-size:var(--text-xs);color:var(--color-text-muted)}.version-slider input[type=range]{flex:1}.version-empty{padding:var(--space-8);text-align:center;color:var(--color-text-muted)}.qt-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.qt-modal{background:var(--color-bg);border-radius:var(--radius-lg);width:640px;max-width:95vw;max-height:85vh;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;overflow:hidden}.qt-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);font-weight:var(--font-semibold)}.qt-header button{background:none;border:none;font-size:18px;cursor:pointer;color:var(--color-text-muted)}.qt-list-view{flex:1;overflow-y:auto}.qt-create{display:flex;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.qt-create input{flex:1;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-sm)}.qt-create button{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--color-brand-500);color:#fff;border:none;cursor:pointer;font-size:var(--text-sm)}.qt-forms-list{display:flex;flex-direction:column}.qt-form-item{display:flex;flex-direction:column;gap:2px;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);text-align:left;background:none;border:none;cursor:pointer;transition:background .1s}.qt-form-item:hover{background:var(--color-bg-muted)}.qt-form-title{font-weight:500;font-size:var(--text-sm)}.qt-form-status{font-size:var(--text-xs)}.status-draft{color:var(--color-text-muted)}.status-pending{color:var(--color-warning)}.status-approved{color:var(--color-success)}.status-rejected{color:var(--color-danger)}.qt-form-meta{font-size:var(--text-xs);color:var(--color-text-muted)}.qt-empty{padding:var(--space-8);text-align:center;color:var(--color-text-muted)}.qt-editor{flex:1;display:flex;flex-direction:column;overflow:hidden}.qt-editor-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-border)}.qt-back{background:none;border:none;cursor:pointer;font-size:var(--text-sm);color:var(--color-brand-500)}.qt-title-input{width:100%;padding:var(--space-3) var(--space-4);border:none;border-bottom:1px solid var(--color-border);font-size:var(--text-lg);font-weight:var(--font-semibold);background:transparent}.qt-items{flex:1;overflow-y:auto;padding:var(--space-2)}.qt-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-sm)}.qt-item:hover{background:var(--color-bg-muted)}.qt-item-num{font-size:var(--text-xs);color:var(--color-text-muted);width:20px;text-align:center}.qt-item-label{flex:1;padding:var(--space-1) var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);font-size:var(--text-sm);background:transparent}.qt-item-label:focus{border-color:var(--color-border);background:var(--color-bg)}.qt-item-toggles{display:flex;gap:2px}.qt-toggle{width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-bg);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center}.qt-toggle.active-pass{background:var(--color-success-light);border-color:var(--color-success)}.qt-toggle.active-fail{background:var(--color-danger-light);border-color:var(--color-danger)}.qt-toggle.active-na{background:var(--color-bg-muted);border-color:var(--color-text-muted)}.qt-item-remove{background:none;border:none;cursor:pointer;color:var(--color-text-muted);font-size:14px;opacity:0}.qt-item:hover .qt-item-remove{opacity:1}.qt-add-item{width:100%;padding:var(--space-2);border:1px dashed var(--color-border);border-radius:var(--radius-sm);background:transparent;cursor:pointer;font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-2)}.qt-add-item:hover{border-color:var(--color-brand-500);color:var(--color-brand-500)}.qt-editor-actions{display:flex;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border)}.qt-editor-actions button{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-bg);cursor:pointer;font-size:var(--text-sm)}.qt-submit{background:var(--color-brand-500);color:#fff;border-color:var(--color-brand-500)}.qt-approve{background:var(--color-success);color:#fff;border-color:var(--color-success)}.qt-reject{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.project-page{display:flex;flex-direction:column;flex:1}.project-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);background:var(--color-bg);border-bottom:1px solid var(--color-border)}.project-header h1{font-size:var(--text-xl);font-weight:var(--font-bold)}.upload-confirm-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-bg-muted);border-bottom:1px solid var(--color-border);animation:upload-bar-slide .2s ease}@keyframes upload-bar-slide{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.upload-confirm-file{font-size:var(--text-sm);color:var(--color-text);display:flex;flex-direction:column;gap:2px;overflow:hidden;text-overflow:ellipsis;max-width:460px}.upload-confirm-type{font-size:11px;color:var(--color-text-muted, #888);font-style:italic}.upload-confirm-type strong{color:var(--color-text);font-style:normal}.upload-confirm-controls{display:flex;align-items:center;gap:var(--space-2)}.upload-confirm-label{font-size:var(--text-xs);color:var(--color-text-muted);display:flex;align-items:center;gap:6px}.upload-confirm-select{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);padding:2px 6px;font-size:var(--text-xs)}.btn-sm{padding:4px 10px;font-size:var(--text-xs)}.project-content{flex:1;padding:var(--space-4) var(--space-6);background:var(--color-bg-subtle)}.discipline-tabs{display:flex;gap:var(--space-1);padding:0 var(--space-6);background:var(--color-bg);border-bottom:1px solid var(--color-border);overflow-x:auto}.discipline-tab{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all var(--duration-fast) var(--ease-default);white-space:nowrap}.discipline-tab:hover{color:var(--color-text)}.discipline-tab.active{color:var(--color-brand-600);border-bottom-color:var(--color-brand-500)}.sheet-list{display:flex;flex-direction:column;background:var(--color-bg);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.sheet-row{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-bg);text-align:left;width:100%;cursor:pointer;transition:background var(--duration-fast) var(--ease-default)}.sheet-row:last-child{border-bottom:none}.sheet-row:hover{background:var(--color-bg-subtle)}.sheet-number{width:60px;font-family:JetBrains Mono,Fira Code,monospace;font-size:var(--text-sm);color:var(--color-text-muted);flex-shrink:0}.sheet-title{flex:1;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sheet-discipline{font-size:var(--text-xs);padding:2px var(--space-2);border-radius:var(--radius-full);background:var(--color-brand-100);color:var(--color-brand-700);font-weight:var(--font-medium);white-space:nowrap}.sheet-version{font-size:var(--text-xs);padding:2px var(--space-2);border-radius:var(--radius-full);background:var(--color-bg-muted);color:var(--color-text-secondary);font-weight:var(--font-medium)}.sheet-obs-count{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}.sheet-obs-open{color:var(--color-warning);font-weight:var(--font-semibold)}.sheet-thumb{width:48px;height:48px;border-radius:var(--radius-sm);background:var(--color-bg-muted);border:1px solid var(--color-border);overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center}.sheet-thumb canvas{width:100%;height:100%;object-fit:cover}.sheet-thumb-placeholder{font-size:20px;color:var(--color-text-muted)}.sheet-list-container{display:flex;flex-direction:column;gap:var(--space-3)}.sheet-list-toolbar{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0}.sheet-view-btn{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:4px 8px;font-size:16px;cursor:pointer;color:var(--color-text-muted);transition:all .15s}.sheet-view-btn.active,.sheet-view-btn:hover{background:var(--color-brand-500);color:#fff;border-color:var(--color-brand-500)}.sheet-list-count{font-size:var(--text-xs);color:var(--color-text-muted);margin-left:auto}.drawing-log-table{width:100%;border-collapse:collapse;background:var(--color-bg);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);font-size:var(--text-sm)}.drawing-log-th{padding:var(--space-2) var(--space-3);text-align:left;font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;background:var(--color-bg-muted);cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--color-border);white-space:nowrap}.drawing-log-th:hover{color:var(--color-text)}.drawing-log-th--actions{text-align:right;cursor:default}.drawing-log-row{border-bottom:1px solid var(--color-border);cursor:pointer;transition:background .1s}.drawing-log-row:last-child{border-bottom:none}.drawing-log-row:hover{background:var(--color-bg-subtle)}.drawing-log-td{padding:var(--space-2) var(--space-3)}.drawing-log-td--num{font-family:JetBrains Mono,monospace;font-size:var(--text-xs);color:var(--color-text-muted);width:64px}.drawing-log-td--title{font-weight:var(--font-medium)}.drawing-log-td--center{text-align:center}.drawing-log-td--actions{text-align:right;display:flex;gap:4px;justify-content:flex-end;padding-right:var(--space-3)}.drawing-log-zero{color:var(--color-text-muted);font-size:var(--text-xs)}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,var(--color-bg-muted) 25%,var(--color-bg-subtle, #e0e0e0) 50%,var(--color-bg-muted) 75%);background-size:800px 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm)}.skeleton-row{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.skeleton-thumb{width:48px;height:48px;border-radius:var(--radius-sm);flex-shrink:0}.skeleton-text-sm{height:10px;border-radius:4px}.skeleton-text-md{height:14px;border-radius:4px}.stale-banner{position:fixed;top:0;left:0;right:0;z-index:var(--z-toast);display:flex;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-warning);color:#1e293b;font-size:var(--text-sm);font-weight:var(--font-medium);animation:slideDown .3s ease-out}.stale-banner button{padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);border:1px solid rgba(0,0,0,.2);background:#ffffff4d;cursor:pointer;font-size:var(--text-sm);font-weight:var(--font-medium)}.stale-banner button:hover{background:#ffffff80}.stale-close{background:none;border:none;font-size:16px;cursor:pointer}@keyframes slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@media(max-width:640px){.sheet-row{flex-wrap:wrap;gap:var(--space-2)}.sheet-number{width:auto}.sheet-discipline,.sheet-version{display:none}.sheet-thumb{width:36px;height:36px}.discipline-tabs{padding:0 var(--space-3)}.project-header,.project-content{padding:var(--space-3) var(--space-4)}}.dashboard-page{min-height:100vh;background:var(--color-bg)}.dashboard-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border)}.dashboard-header h1{font-size:var(--text-xl);font-weight:var(--font-bold)}.dashboard-header-actions{display:flex;align-items:center;gap:var(--space-3)}.btn{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500;cursor:pointer;border:1px solid var(--color-border);transition:all .15s}.btn-primary{background:var(--color-brand-500);color:#fff;border-color:var(--color-brand-500)}.btn-primary:hover{background:var(--color-brand-600)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{background:var(--color-bg);color:var(--color-text)}.btn-secondary:hover{background:var(--color-bg-muted)}.dashboard-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-3);padding:var(--space-4) var(--space-6)}.kpi-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);text-align:center;position:relative;overflow:hidden}.kpi-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--color-brand-500)}.kpi-card.kpi-warn:before{background:var(--color-warning)}.kpi-card.kpi-success:before{background:var(--color-success)}.kpi-value{font-size:2rem;font-weight:800;font-variant-numeric:tabular-nums}.kpi-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-top:var(--space-1)}.kpi-bar{height:4px;background:var(--color-bg-muted);border-radius:2px;margin-top:var(--space-2);overflow:hidden}.kpi-bar-fill{height:100%;background:var(--color-success);border-radius:2px;transition:width .3s ease}.dashboard-content{padding:var(--space-4) var(--space-6)}.dashboard-columns{display:grid;grid-template-columns:1fr 320px;gap:var(--space-6)}@media(max-width:960px){.dashboard-columns{grid-template-columns:1fr}}.dashboard-projects h2,.dashboard-activity h2{font-size:var(--text-lg);font-weight:var(--font-semibold);margin-bottom:var(--space-3)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.project-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;text-align:left;transition:all .15s}.project-card:hover{border-color:var(--color-brand-500);box-shadow:0 4px 20px #6366f114;transform:translateY(-1px)}.project-card-top{display:flex;justify-content:space-between;align-items:center}.project-card-name{font-size:var(--text-base);font-weight:var(--font-semibold)}.project-card-client{font-size:var(--text-sm);color:var(--color-text-muted)}.project-card-status{font-size:var(--text-xs);padding:2px 8px;border-radius:12px;font-weight:500}.project-card-status.status-active{background:#22c55e1a;color:var(--color-success)}.project-card-status.status-archived{background:#64748b1a;color:var(--color-text-secondary)}.project-card-status.status-completed{background:#6366f11a;color:var(--color-brand-500)}.project-card-counts{display:flex;gap:var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.project-card-open{color:var(--color-danger);font-weight:600}.dashboard-activity{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4)}.activity-list{display:flex;flex-direction:column}.activity-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.activity-item:last-child{border-bottom:none}.activity-dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex-shrink:0}.activity-content{display:flex;flex-direction:column;gap:2px;min-width:0}.activity-title{font-size:var(--text-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-meta{font-size:var(--text-xs);color:var(--color-text-muted)}.dashboard-page--glass{min-height:100vh;background:transparent;position:relative;color:var(--glass-text);font-family:Inter,system-ui,sans-serif}.dashboard-glass-grid{padding:0 20px 24px}.project-glass-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.glass-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;display:flex;align-items:center;justify-content:center;background:#00000080;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:glass-fade-in .2s ease-out}@keyframes glass-fade-in{0%{opacity:0}to{opacity:1}}.glass-modal{width:90vw;max-width:420px;background:var(--glass-surface-active);backdrop-filter:blur(var(--glass-blur-heavy));-webkit-backdrop-filter:blur(var(--glass-blur-heavy));border:1px solid var(--glass-border-hover);border-radius:var(--glass-card-radius);box-shadow:0 24px 64px #00000080;animation:glass-modal-in .25s var(--glass-ease-bounce)}@keyframes glass-modal-in{0%{transform:translateY(16px) scale(.96);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.glass-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--glass-border)}.glass-modal-header h3{font-size:.95rem;font-weight:600;color:var(--glass-text)}.glass-modal-close{width:28px;height:28px;border-radius:50%;border:none;background:#ffffff0f;color:var(--glass-text-muted);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.glass-modal-close:hover{background:#ffffff1a;color:var(--glass-text)}.glass-modal-body{padding:16px 20px;display:flex;flex-direction:column;gap:12px}.glass-input{padding:9px 14px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text);font-size:14px;transition:border-color .15s}.glass-input::placeholder{color:var(--color-text-muted)}.glass-input:focus{outline:none;border-color:var(--glass-accent);box-shadow:0 0 0 2px var(--glass-accent-soft)}.glass-list{display:flex;flex-direction:column;background:var(--glass-surface);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--glass-card-radius);overflow:hidden}.glass-list-header{display:flex;align-items:center;gap:0;padding:10px 16px;background:#ffffff08;border-bottom:1px solid var(--glass-border);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--glass-text-muted)}.glass-list-row{display:flex;align-items:center;gap:0;padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.03);cursor:pointer;transition:background var(--glass-transition-fast);color:var(--glass-text);font-size:13px}.glass-list-row:hover{background:#ffffff0a}.glass-list-row:last-child{border-bottom:none}.glass-list-col{padding:0 8px}.glass-list-col--thumb{width:44px;flex-shrink:0;padding:0 8px 0 0}.glass-list-col--thumb .glass-card-thumb{width:36px;height:28px;aspect-ratio:auto;border-radius:4px}.glass-list-col--num{width:60px;flex-shrink:0;color:var(--glass-text-muted);font-weight:500}.glass-list-col--title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.glass-list-col--disc{width:120px;flex-shrink:0}.glass-list-col--ver{width:50px;flex-shrink:0;text-align:center}.glass-list-col--obs{width:60px;flex-shrink:0;text-align:center}.glass-list-col--actions{width:100px;flex-shrink:0;display:flex;gap:4px;justify-content:flex-end}.glass-card-actions{display:flex;justify-content:flex-end;gap:6px;padding:8px 10px;margin-top:auto;background:#0a0a1a8c;border-top:1px solid var(--glass-border, rgba(255,255,255,.08));border-radius:0 0 var(--glass-card-radius) var(--glass-card-radius)}.glass-action-btn{min-width:36px;min-height:36px;padding:6px 10px;background:#ffffff14;border:1px solid var(--glass-border);border-radius:8px;color:var(--glass-text-secondary);cursor:pointer;font-size:15px;display:inline-flex;align-items:center;justify-content:center;transition:all var(--glass-transition-fast);-webkit-tap-highlight-color:transparent}.glass-action-btn:hover{background:#ffffff24;color:var(--glass-text);border-color:var(--glass-border-hover)}.glass-action-btn--danger:hover{background:#ef444426;color:#ef4444;border-color:#ef44444d}@media(max-width:768px){.glass-list-col--disc,.glass-list-col--obs{display:none}.project-glass-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}.confirm-dialog{border:none;border-radius:var(--radius-lg, 12px);background:var(--color-surface, #1a1a2e);color:var(--color-text, #e0e0e0);padding:0;max-width:400px;width:90vw}.confirm-dialog::backdrop{background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.confirm-dialog-content{padding:var(--space-6, 24px)}.confirm-dialog-title{margin:0 0 var(--space-3, 12px);font-size:var(--text-lg, 1.125rem);font-weight:600}.confirm-dialog-message{margin:0 0 var(--space-6, 24px);font-size:var(--text-sm, .875rem);color:var(--color-text-muted, #888);line-height:1.5}.confirm-dialog-actions{display:flex;gap:var(--space-3, 12px);justify-content:flex-end}.confirm-dialog-cancel{padding:var(--space-2, 8px) var(--space-4, 16px);border-radius:var(--radius-sm, 6px);background:var(--color-surface-alt, #12121f);border:1px solid var(--color-border, #2d2d44);color:var(--color-text, #e0e0e0);cursor:pointer;font-size:var(--text-sm, .875rem)}.confirm-dialog-confirm{padding:var(--space-2, 8px) var(--space-4, 16px);border-radius:var(--radius-sm, 6px);background:var(--color-primary, #6366f1);border:none;color:#fff;cursor:pointer;font-weight:600;font-size:var(--text-sm, .875rem)}.confirm-dialog-confirm.danger{background:var(--color-danger, #dc2626)}.ios-install-dialog{border:none;border-radius:var(--radius-lg);background:var(--color-bg);color:var(--color-text);max-width:420px;width:calc(100vw - var(--space-8));padding:0;box-shadow:0 24px 80px #00000040;animation:dialogFadeIn var(--duration-normal) var(--ease-default)}.ios-install-dialog::backdrop{background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}@keyframes dialogFadeIn{0%{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.ios-install-content{padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.ios-install-header{display:flex;align-items:center;gap:var(--space-3)}.ios-install-icon{font-size:2rem;line-height:1}.ios-install-title{font-size:var(--text-lg);font-weight:var(--font-bold);margin:0}.ios-install-desc{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.5;margin:0}.ios-install-steps{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-3);counter-reset:ios-step}.ios-install-steps li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--color-bg-muted);border-radius:var(--radius-md);font-size:var(--text-sm);line-height:1.4;counter-increment:ios-step}.ios-install-steps li:before{content:counter(ios-step);display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-full);background:var(--color-brand-500);color:var(--color-neutral-0);font-size:12px;font-weight:var(--font-bold);flex-shrink:0}.ios-install-step-icon{display:flex;align-items:center;justify-content:center;width:24px;flex-shrink:0;color:var(--color-brand-500)}.ios-install-note{font-size:var(--text-xs);color:var(--color-warning);background:#f59e0b14;border:1px solid rgba(245,158,11,.2);border-radius:var(--radius-md);padding:var(--space-3);line-height:1.5;margin:0}.ios-install-actions{display:flex;gap:var(--space-3);justify-content:flex-end;padding-top:var(--space-2)}@media(max-width:768px){.qt-modal,.export-modal{width:100vw;max-width:100vw;max-height:100vh;border-radius:0}.notes-panel{width:100%}.dashboard-kpis{grid-template-columns:repeat(2,1fr);padding:var(--space-3)}.project-grid{grid-template-columns:1fr}.dashboard-header,.dashboard-content{padding:var(--space-3)}}@media(max-width:480px){.dashboard-kpis{grid-template-columns:1fr}}.ios-install-dialog{position:fixed;border:none;border-radius:16px;max-width:400px;width:calc(100% - 32px);padding:0;background:#ffffffeb;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);box-shadow:0 24px 48px #00000026,0 0 0 1px #fff3;animation:ios-slide-up .4s cubic-bezier(.34,1.56,.64,1)}[data-theme=dark] .ios-install-dialog{background:#1e1e28eb;box-shadow:0 24px 48px #0006,0 0 0 1px #ffffff14}.ios-install-dialog::backdrop{background:#00000080;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}@keyframes ios-slide-up{0%{opacity:0;transform:translateY(40px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.ios-install-content{padding:var(--space-6, 24px)}.ios-install-header{display:flex;align-items:center;gap:var(--space-3, 12px);margin-bottom:var(--space-4, 16px)}.ios-install-icon{font-size:2rem}.ios-install-title{margin:0;font-size:var(--text-lg, 1.125rem);font-weight:700;color:var(--color-text, #1a1a2e)}.ios-install-desc{margin:0 0 var(--space-4, 16px);font-size:var(--text-sm, .875rem);color:var(--color-text-muted, #666);line-height:1.6}.ios-install-steps{list-style:none;padding:0;margin:0 0 var(--space-4, 16px);display:flex;flex-direction:column;gap:var(--space-3, 12px)}.ios-install-steps li{display:flex;align-items:center;gap:var(--space-3, 12px);padding:var(--space-3, 12px);border-radius:10px;background:#6366f10f;border:1px solid rgba(99,102,241,.12);font-size:var(--text-sm, .875rem);line-height:1.4}[data-theme=dark] .ios-install-steps li{background:#6366f11a;border-color:#6366f133}.ios-install-step-icon{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--color-primary, #6366f1);color:#fff;font-size:.875rem}.ios-install-step-icon svg{stroke:#fff}.ios-install-note{margin:0 0 var(--space-5, 20px);padding:var(--space-3, 12px);border-radius:8px;background:#f59e0b14;border:1px solid rgba(245,158,11,.2);font-size:var(--text-xs, .75rem);color:var(--color-text-muted, #666);line-height:1.5}.ios-install-actions{display:flex;gap:var(--space-3, 12px);justify-content:flex-end}.viewer-topbar{background:var(--glass-bg-deep, #0a0a1a);border-bottom-color:var(--glass-border, rgba(255, 255, 255, .06))}.viewer-toolbar{background:var(--glass-bg-deep, #0a0a1a);border-right-color:var(--glass-border, rgba(255, 255, 255, .06))}.toolbar-group{border-bottom-color:var(--glass-border, rgba(255, 255, 255, .06))}.toolbar-btn{color:var(--glass-text-secondary, #a0a0c0)}.toolbar-btn:hover{background:#ffffff0f;color:var(--glass-text, #e0e0ff)}.toolbar-btn.active{background:var(--glass-accent, #6366f1);color:#fff}.topbar-btn{color:var(--glass-text-muted, #808090)}.topbar-btn:hover{background:#ffffff0f;color:var(--glass-text, #e0e0ff)}.topbar-divider{background:var(--glass-border, rgba(255, 255, 255, .06))}.viewer-canvas-area{background:var(--glass-bg-deep-end, #0f0f2a)}.module-page{padding:var(--space-6) var(--space-6);max-width:1400px;margin:0 auto}.module-header{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap}.module-header h1{font-size:var(--text-2xl);font-weight:var(--font-bold);margin:0}.module-count{font-size:var(--text-sm);color:var(--color-text-secondary);background:var(--color-bg-muted);padding:2px 10px;border-radius:var(--radius-full)}.module-kpi{font-size:var(--text-sm);font-weight:var(--font-semibold);padding:4px 12px;border-radius:var(--radius-md)}.kpi-danger{background:var(--color-danger-light, rgba(239, 68, 68, .15));color:#b91c1c}.kpi-success{background:var(--color-success-light, rgba(34, 197, 94, .15));color:#047857}[data-theme=dark] .kpi-danger{color:#fca5a5}[data-theme=dark] .kpi-success{color:#6ee7b7}.module-table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg)}.module-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.module-table thead{background:var(--color-bg-subtle);position:sticky;top:0;z-index:1}.module-table th{padding:var(--space-3) var(--space-4);text-align:left;font-weight:var(--font-semibold);color:var(--color-text-secondary);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border);white-space:nowrap}.module-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);color:var(--color-text);vertical-align:middle}.module-table tbody tr:hover{background:var(--color-bg-muted);cursor:pointer}.module-table tbody tr:last-child td{border-bottom:none}.status-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-full);font-size:.7rem;font-weight:var(--font-semibold);color:#fff;white-space:nowrap;letter-spacing:.02em}.mono{font-family:JetBrains Mono,monospace;font-size:.8rem}.capitalize{text-transform:capitalize}.text-muted{color:var(--color-text-muted);font-size:.85em}.text-danger{color:var(--color-danger, #ef4444)}.text-success{color:var(--color-success, #22c55e)}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.budget-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4);margin-bottom:var(--space-5)}.budget-kpi-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5)}.budget-kpi-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:var(--space-1)}.budget-kpi-value{font-size:var(--text-xl);font-weight:var(--font-bold)}.progress-bar-wrap{position:relative;height:20px;background:var(--color-bg-muted);border-radius:var(--radius-full);overflow:hidden;min-width:100px}.progress-bar{height:100%;border-radius:var(--radius-full);transition:width .3s ease}.progress-label{position:absolute;top:1px;left:50%;transform:translate(-50%);font-size:.65rem;font-weight:var(--font-semibold);color:var(--color-text)}.dashboard-kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);margin:0 var(--space-6) var(--space-5);position:relative;z-index:1}.dashboard-kpi{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:#ffffff0f;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg);cursor:pointer;transition:transform .15s ease,background .15s ease}.dashboard-kpi:hover{transform:translateY(-2px);background:#ffffff1a}.dashboard-kpi-icon{font-size:1.8rem}.dashboard-kpi-value{font-size:var(--text-xl);font-weight:var(--font-bold);line-height:1.2}.dashboard-kpi-label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.file-upload-zone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6) var(--space-5);text-align:center;cursor:pointer;transition:all .2s ease;background:var(--color-bg-subtle);margin-bottom:var(--space-3)}.file-upload-zone:hover{border-color:var(--color-accent, #3b82f6);background:#3b82f60a}.file-upload-dragging{border-color:var(--color-accent, #3b82f6);background:#3b82f614;transform:scale(1.01)}.file-upload-active{cursor:default;border-style:solid}.file-upload-disabled{opacity:.5;cursor:not-allowed}.file-upload-label{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);color:var(--color-text-muted)}.file-upload-progress{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.file-upload-done{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);color:var(--color-success, #22c55e)}.file-upload-error{color:var(--color-danger, #ef4444);font-size:.85em;font-weight:500}.file-upload-spinner{width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-accent, #3b82f6);border-radius:50%;animation:file-upload-spin .8s linear infinite}@keyframes file-upload-spin{to{transform:rotate(360deg)}}.module-page--glass{background:transparent;position:relative}.module-page--glass:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:var(--glass-bg, #0f172a);z-index:-1}.module-table-wrap--glass{background:var(--glass-surface, rgba(255, 255, 255, .04));backdrop-filter:blur(var(--glass-blur, 16px));-webkit-backdrop-filter:blur(var(--glass-blur, 16px));border:1px solid var(--glass-border, rgba(255, 255, 255, .08));border-radius:var(--glass-card-radius, 12px);overflow-x:auto}.module-table--glass{width:100%;border-collapse:collapse;font-size:var(--text-sm, .875rem)}.module-table--glass thead{background:#ffffff08;position:sticky;top:0;z-index:1}.module-table--glass th{padding:var(--space-3) var(--space-4);text-align:left;font-weight:var(--font-semibold, 600);color:var(--glass-text-secondary, #94a3b8);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--glass-border, rgba(255, 255, 255, .08));white-space:nowrap}.module-table--glass td{padding:var(--space-3) var(--space-4);border-bottom:1px solid rgba(255,255,255,.04);color:var(--glass-text, #e2e8f0);vertical-align:middle}.module-table--glass tbody tr{transition:background var(--glass-transition-fast, .15s ease)}.module-table--glass tbody tr:hover{background:#ffffff0a;cursor:pointer}.module-table--glass tbody tr:last-child td{border-bottom:none}.module-kpi--glass{font-size:var(--text-sm, .875rem);font-weight:var(--font-semibold, 600);padding:4px 12px;border-radius:var(--radius-md, 8px);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.status-badge--glass{background:#ffffff0f;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1)}@media(max-width:768px){.module-page{padding:var(--space-4) var(--space-3)}.module-header{flex-direction:column;align-items:flex-start;gap:var(--space-2)}}
