:root{--color-primary: #1e40af;--color-primary-hover: #1e3a8a;--color-primary-light: #dbeafe;--color-primary-50: #eff6ff;--color-sidebar-bg: #0f172a;--color-sidebar-hover: rgba(255,255,255,.06);--color-sidebar-active: rgba(255,255,255,.1);--color-sidebar-text: rgba(255,255,255,.5);--color-sidebar-text-hover: rgba(255,255,255,.85);--color-sidebar-accent: #3b82f6;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-border-light: #f1f5f9;--color-text: #0f172a;--color-text-secondary: #64748b;--color-text-muted: #94a3b8;--color-success: #059669;--color-success-bg: #ecfdf5;--color-warning: #d97706;--color-warning-bg: #fffbeb;--color-error: #dc2626;--color-error-bg: #fef2f2;--color-info: #0284c7;--color-info-bg: #e0f2fe;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);--shadow-lg: 0 4px 12px rgba(0,0,0,.08);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--sidebar-width: 240px;--font-xs: .75rem;--font-sm: .8125rem;--font-base: .875rem;--font-md: .9375rem;--font-lg: 1.125rem;--font-xl: 1.375rem}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.6;font-size:var(--font-base);-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font:inherit}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--color-sidebar-bg);color:#fff;flex-shrink:0;position:fixed;top:0;left:0;bottom:0;overflow-y:auto;overflow-x:hidden;z-index:100;display:flex;flex-direction:column;transition:width .2s ease}.sidebar-collapsed .sidebar{width:52px}.sidebar-collapsed .container{margin-left:52px;width:calc(100% - 52px)}.sidebar-brand{font-size:var(--font-lg);font-weight:700;padding:1.5rem 1.25rem 1.25rem;letter-spacing:-.01em;color:#fff;display:flex;align-items:center;gap:.65rem}.brand-icon{width:28px;height:28px;background:var(--color-sidebar-accent);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.brand-icon svg{width:14px;height:14px;stroke:#fff;fill:none;stroke-width:2}.sidebar-toggle{background:none;border:none;color:#fff6;padding:.5rem 1.25rem;text-align:left;display:flex;align-items:center;width:100%;margin-bottom:.25rem}.sidebar-toggle:hover{color:#fffc}.sidebar-toggle svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}.sidebar-collapsed .sidebar-toggle{justify-content:center;padding:.5rem}.sidebar-divider{height:1px;background:#ffffff14;margin:0 1rem}.sidebar nav{padding:.5rem 0;flex:1}.nav-section-label{font-size:var(--font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#ffffff4d;padding:1rem 1.25rem .4rem}.sidebar nav a{display:flex;align-items:center;gap:.75rem;padding:.55rem 1.25rem;color:var(--color-sidebar-text);text-decoration:none;font-size:var(--font-sm);font-weight:450;transition:all .15s ease;border-left:3px solid transparent;margin:1px 0;white-space:nowrap}.sidebar-collapsed .sidebar nav a{padding:.6rem;justify-content:center}.sidebar nav a svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.75;flex-shrink:0;opacity:.7}.sidebar nav a:hover{background:var(--color-sidebar-hover);color:var(--color-sidebar-text-hover);text-decoration:none}.sidebar nav a:hover svg{opacity:1}.sidebar nav a.active{background:var(--color-sidebar-active);color:#fff;font-weight:550;border-left-color:var(--color-sidebar-accent)}.sidebar nav a.active svg{opacity:1;color:var(--color-sidebar-accent)}.container{margin-left:var(--sidebar-width);width:calc(100% - var(--sidebar-width));max-width:1400px;padding:2.25rem 2.5rem;transition:margin-left .2s ease,width .2s ease}header{margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--color-border);display:flex;align-items:flex-start;justify-content:space-between}header h1{font-size:var(--font-xl);font-weight:700;letter-spacing:-.02em;line-height:1.3}.subtitle{color:var(--color-text-secondary);margin-top:.3rem;font-size:var(--font-base)}.detail-header{flex-wrap:wrap;gap:1rem}.detail-header-left{display:flex;align-items:flex-start;gap:1rem}.detail-header-right{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.btn-back{background:none;border:none;color:var(--color-text-secondary);font-size:var(--font-sm);padding:.25rem 0;margin-top:.35rem}.btn-back:hover{color:var(--color-text)}.card{background:var(--color-surface);border-radius:var(--radius-lg);padding:1.5rem 1.75rem;margin-bottom:1.25rem;box-shadow:var(--shadow-md);border:1px solid var(--color-border)}.card h2{font-size:var(--font-md);font-weight:650;letter-spacing:-.01em;margin-bottom:1.1rem;color:var(--color-text)}.stats-row{display:flex;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.25rem 1.5rem;box-shadow:var(--shadow-sm);flex:1;min-width:120px}.stat-value{font-size:1.75rem;font-weight:700;letter-spacing:-.03em;line-height:1.1}.stat-label{font-size:var(--font-sm);color:var(--color-text-secondary);margin-top:.25rem}.stat-active{color:var(--color-info)}.toolbar{display:flex;gap:.75rem;margin-bottom:1.25rem;align-items:center;flex-wrap:wrap}.search-input{flex:1;min-width:200px;padding:.5rem .875rem;border:1px solid var(--color-border);border-radius:var(--radius-md);font:inherit;font-size:var(--font-sm);background:var(--color-surface);transition:border-color .15s}.search-input:focus{outline:none;border-color:var(--color-primary)}.btn{padding:.5rem 1rem;border-radius:var(--radius-md);font:inherit;font-size:var(--font-sm);font-weight:500;border:1px solid transparent;transition:all .15s ease;display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover{background:var(--color-bg)}.btn-icon{background:none;border:1px solid transparent;padding:.35rem;border-radius:var(--radius-sm);color:var(--color-text-muted);display:inline-flex;align-items:center;justify-content:center;transition:all .15s}.btn-icon:hover{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border)}.btn-danger:hover{color:var(--color-error);border-color:var(--color-error-bg);background:var(--color-error-bg)}.badge{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:999px;font-size:var(--font-xs);font-weight:600;white-space:nowrap}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-error{background:var(--color-error-bg);color:var(--color-error)}.badge-info{background:var(--color-info-bg);color:var(--color-info)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-muted{background:var(--color-border-light);color:var(--color-text-secondary)}.gl-badge{background:var(--color-primary-light);color:var(--color-primary);padding:.15rem .5rem;border-radius:var(--radius-sm);font-size:var(--font-xs);font-weight:600;font-family:monospace;white-space:nowrap}.gl-cell{display:flex;flex-direction:column;gap:.2rem}.gl-name{font-size:.68rem;color:var(--color-text-secondary);line-height:1.3}.gl-cell-edit{cursor:pointer;border-radius:var(--radius-sm);padding:.2rem .3rem;margin:-.2rem -.3rem;display:inline-flex;flex-direction:column;gap:.2rem}.gl-cell-edit:hover{background:var(--color-surface-hover, #f3f4f6)}.gl-cell-edit:hover .gl-edit-icon{opacity:1}.gl-edit-icon{font-size:.65rem;color:var(--color-text-secondary);opacity:0;line-height:1;transition:opacity .1s}.gl-empty{font-size:var(--font-xs);color:var(--color-text-secondary);font-style:italic}.gl-manual-row{display:flex;align-items:center;gap:.3rem}.gl-manual-badge{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-warning, #b45309);background:var(--color-warning-bg, #fef3c7);padding:.1rem .35rem;border-radius:var(--radius-sm)}.gl-reset-btn{font-size:.6rem;color:var(--color-text-secondary);cursor:pointer;padding:.1rem .3rem;border-radius:var(--radius-sm);white-space:nowrap}.gl-reset-btn:hover{background:var(--color-surface-hover, #f3f4f6);color:var(--color-text)}.gl-dropdown{position:fixed;z-index:1000;min-width:320px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md, 0 4px 16px rgba(0,0,0,.12))}.gl-search{display:block;width:100%;padding:.5rem .75rem;border:none;border-bottom:1px solid var(--color-border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;font-size:var(--font-sm);outline:none;background:transparent;box-sizing:border-box}.gl-options{max-height:240px;overflow-y:auto}.gl-option{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;cursor:pointer;font-size:var(--font-sm)}.gl-option:hover{background:var(--color-surface-hover, #f3f4f6)}.gl-option-name{color:var(--color-text-secondary);font-size:var(--font-xs);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gl-option-clear{color:var(--color-text-secondary);font-style:italic}.gl-option-empty{color:var(--color-text-secondary);font-style:italic;justify-content:center}.data-table{width:100%;border-collapse:collapse;font-size:var(--font-sm)}.data-table th{text-align:left;padding:.75rem 1rem;font-size:var(--font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);background:var(--color-bg)}.data-table td{padding:.7rem 1rem;border-bottom:1px solid var(--color-border-light);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.clickable-row{cursor:pointer;transition:background .1s}.clickable-row:hover td{background:var(--color-primary-50)}.cell-primary{font-weight:500}.cell-secondary{color:var(--color-text-secondary)}.cell-actions{text-align:right;white-space:nowrap}.code-cell{font-family:monospace;font-size:var(--font-sm);background:var(--color-border-light);padding:.15rem .4rem;border-radius:var(--radius-sm)}.row-inactive td{opacity:.5}.text-muted{color:var(--color-text-muted)}.financials-table .section-header-row td{background:var(--color-bg);font-weight:700;font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);padding:.6rem 1rem}.financials-table .col-amount{text-align:right;font-variant-numeric:tabular-nums;min-width:130px}.financials-table .col-gl{text-align:center;min-width:90px}.financials-table .row-total td{font-weight:650;background:var(--color-border-light)}.financials-table .row-child .cell-desc{padding-left:0}.financials-table .indent{padding-left:1.25rem;display:block;color:var(--color-text-secondary)}.empty-cell{text-align:center;color:var(--color-text-muted);padding:2rem!important}.upload-area{border:2px dashed #cbd5e1;border-radius:var(--radius-lg);padding:2.5rem 2rem;text-align:center;cursor:pointer;transition:all .2s ease;background:var(--color-bg)}.upload-area:hover,.upload-area.dragover{border-color:var(--color-primary);background:var(--color-primary-50)}.upload-area.uploading{opacity:.7;cursor:default}.upload-area input[type=file]{display:none}.upload-icon{color:var(--color-text-muted);margin-bottom:.75rem}.upload-label{font-weight:500;color:var(--color-text);margin-bottom:.25rem}.upload-hint{font-size:var(--font-xs);color:var(--color-text-muted)}.upload-warning{font-size:var(--font-sm);color:var(--color-warning);margin-top:.75rem}.processing-banner{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-info);border-radius:var(--radius-lg);padding:1rem 1.25rem;margin-bottom:1.25rem;box-shadow:var(--shadow-sm)}.processing-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.processing-label-group{flex:1;display:flex;flex-direction:column;gap:.15rem}.processing-label{font-weight:500}.processing-hint{font-size:var(--font-xs);color:var(--color-text-secondary)}.processing-pct{font-size:var(--font-sm);color:var(--color-text-secondary)}.progress-bar{height:4px;background:var(--color-border);border-radius:999px;overflow:hidden;margin-bottom:.75rem}.progress-fill{height:100%;background:var(--color-info);border-radius:999px;transition:width .4s ease}@keyframes indeterminate{0%{left:-40%;width:40%}60%{left:60%;width:40%}to{left:100%;width:40%}}.progress-fill-indeterminate{position:relative;width:40%;animation:indeterminate 1.4s ease-in-out infinite}.processing-steps{display:flex;gap:.5rem}.step-dot{width:8px;height:8px;border-radius:50%;background:var(--color-border)}.step-dot.done{background:var(--color-success)}.step-dot.active{background:var(--color-info);box-shadow:0 0 0 3px var(--color-info-bg)}.error-banner{background:var(--color-error-bg);border:1px solid #fecaca;border-radius:var(--radius-lg);padding:.875rem 1.25rem;color:var(--color-error);margin-bottom:1.25rem;font-weight:500}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-info);border-radius:50%;animation:spin .6s linear infinite;flex-shrink:0}.tab-bar{display:flex;gap:.25rem;border-bottom:1px solid var(--color-border);margin-bottom:1.5rem}.tab{background:none;border:none;padding:.65rem 1rem;font-size:var(--font-sm);font-weight:500;color:var(--color-text-secondary);border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s;display:flex;align-items:center;gap:.4rem}.tab:hover{color:var(--color-text)}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.tab-count{background:var(--color-primary-light);color:var(--color-primary);font-size:10px;font-weight:700;padding:0 .35rem;border-radius:999px;min-width:18px;text-align:center}.period-tabs{display:flex;gap:.5rem;margin-bottom:1.25rem;flex-wrap:wrap}.period-tab{padding:.4rem .875rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);font-size:var(--font-sm);font-weight:500;color:var(--color-text-secondary);transition:all .15s;display:flex;align-items:center;gap:.35rem}.period-tab:hover{border-color:var(--color-primary);color:var(--color-primary)}.period-tab.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.period-tab-type{font-size:var(--font-xs);opacity:.8}.period-tab-budget{color:var(--color-warning, #d97706);opacity:1;font-weight:600}.metrics-row{display:flex;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.metric-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1rem 1.25rem;box-shadow:var(--shadow-sm);flex:1;min-width:110px}.metric-value{font-size:1.25rem;font-weight:700;letter-spacing:-.02em}.metric-label{font-size:var(--font-xs);color:var(--color-text-secondary);margin-top:.2rem;text-transform:uppercase;letter-spacing:.04em}.overview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem}.card-full{grid-column:1 / -1}.field-row{display:flex;justify-content:space-between;align-items:baseline;padding:.45rem 0;border-bottom:1px solid var(--color-border-light);gap:1rem}.field-row:last-child{border-bottom:none}.field-row-block{flex-direction:column;gap:.5rem}.field-label{font-size:var(--font-sm);color:var(--color-text-secondary);flex-shrink:0}.field-value{font-size:var(--font-sm);font-weight:500;text-align:right}.room-types,.tag-list{display:flex;flex-wrap:wrap;gap:.4rem}.highlight-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.highlight-list li{padding:.6rem .75rem;background:var(--color-bg);border-radius:var(--radius-sm);font-size:var(--font-sm);border-left:3px solid var(--color-primary)}.gl-form{padding:1.25rem}.form-row{display:flex;gap:.75rem}.form-group{display:flex;flex-direction:column;gap:.35rem;flex:1}.form-group-wide{flex:2}.form-group label{font-size:var(--font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.label-hint{font-weight:400;text-transform:none;letter-spacing:0;color:var(--color-text-muted)}.form-group input,.form-group select{padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-md);font:inherit;font-size:var(--font-sm);background:var(--color-surface);transition:border-color .15s}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--color-primary)}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--color-border)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:200;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-box{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:560px;box-shadow:var(--shadow-lg);overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-header h3{font-size:var(--font-md);font-weight:650}.modal-close{background:none;border:none;font-size:1.25rem;color:var(--color-text-muted);width:28px;height:28px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.modal-close:hover{background:var(--color-bg);color:var(--color-text)}.alert{border-radius:var(--radius-md);padding:.875rem 1.25rem;margin-bottom:1.25rem;font-size:var(--font-sm);position:relative}.alert-success{background:var(--color-success-bg);color:var(--color-success);border:1px solid #a7f3d0}.alert-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid #fde68a}.alert-detail{margin-top:.25rem;font-size:var(--font-xs);opacity:.8}.alert-close{position:absolute;top:.75rem;right:1rem;background:none;border:none;font-size:1.1rem;color:inherit;opacity:.6}.alert-close:hover{opacity:1}.view-toggle{display:inline-flex;background:var(--color-border-light);border-radius:var(--radius-md);padding:3px;margin-bottom:1.25rem}.toggle-btn{padding:.35rem .875rem;border-radius:calc(var(--radius-md) - 2px);border:none;background:none;font-size:var(--font-sm);font-weight:500;color:var(--color-text-secondary);transition:all .15s}.toggle-btn.active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.toggle-btn:hover:not(.active){color:var(--color-text)}.side-by-side-table .col-desc{min-width:220px}.side-by-side-table .col-period{text-align:right;min-width:130px;font-variant-numeric:tabular-nums;vertical-align:middle}.side-by-side-table .col-period .period-amount{display:block}.delta{display:block;font-size:var(--font-xs);margin-top:1px;font-variant-numeric:tabular-nums}.delta-pos{color:var(--color-success)}.delta-neg{color:var(--color-error)}.metrics-comparison{display:grid;gap:1px;background:var(--color-border);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:1.25rem;font-size:var(--font-sm)}.mc-cell{background:var(--color-surface);padding:.6rem 1rem}.mc-header-blank{background:var(--color-bg)}.mc-period-header{background:var(--color-bg);font-weight:650;text-align:center;font-size:var(--font-sm);letter-spacing:-.01em}.mc-label{color:var(--color-text-secondary);font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.mc-value{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}.mc-section{background:var(--color-bg);font-size:var(--font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);padding:.4rem 1rem;border-top:1px solid var(--color-border)}.empty-state{text-align:center;padding:3rem 2rem;color:var(--color-text-muted)}.loading-state{display:flex;align-items:center;gap:.75rem;padding:2rem;color:var(--color-text-secondary)}.loading-full{display:flex;align-items:center;justify-content:center;height:200px}.loading-full .spinner{width:28px;height:28px;border-width:3px}.spinner-sm{width:11px;height:11px;border:2px solid var(--color-border);border-top-color:var(--color-info);border-radius:50%;animation:spin .6s linear infinite;display:inline-block;vertical-align:middle;margin-right:5px}.sidebar-footer{margin-top:auto;padding-bottom:.75rem}.sidebar-user-email{font-size:var(--font-xs);color:#fff6;padding:.65rem 1.25rem .35rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-logout{background:none;border:none;width:100%;text-align:left;display:flex;align-items:center;gap:.75rem;padding:.55rem 1.25rem;color:#ffffff73;font-size:var(--font-sm);cursor:pointer;transition:all .15s ease;white-space:nowrap}.sidebar-logout:hover{color:#ffffffd9;background:#ffffff0f}.sidebar-logout svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.75;flex-shrink:0;opacity:.7}.sidebar-logout:hover svg{opacity:1}.sidebar-collapsed .sidebar-logout{justify-content:center;padding:.6rem}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-sidebar-bg);padding:1.5rem}.login-card{background:var(--color-surface);border-radius:var(--radius-lg);padding:2.5rem 2rem;width:100%;max-width:380px;box-shadow:0 20px 48px #00000059}.login-brand{display:flex;align-items:center;gap:.9rem;margin-bottom:2rem}.login-brand-icon{width:44px;height:44px;background:var(--color-primary);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}.login-brand-icon svg{stroke:#fff}.login-title{font-size:var(--font-xl);font-weight:700;letter-spacing:-.02em;line-height:1.1}.login-subtitle{font-size:var(--font-sm);color:var(--color-text-secondary);margin-top:1px}.login-form{display:flex;flex-direction:column;gap:1rem}.login-error{background:var(--color-error-bg);color:var(--color-error);border:1px solid #fecaca;border-radius:var(--radius-sm);padding:.6rem .875rem;font-size:var(--font-sm)}.login-btn{width:100%;margin-top:.25rem;justify-content:center}
