:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#17191c;background:#f4f5f6;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;background:#f4f5f6}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:grid;grid-template-columns:224px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;background:#17191c;color:#fff;padding:26px 16px 20px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:0 8px 30px}.brand-dot{width:11px;height:11px;border-radius:50%;background:#d7ff62;box-shadow:0 0 0 5px #d7ff6214}.brand-title{font-weight:760;letter-spacing:.08em;font-size:13px}.brand-subtitle{margin-top:3px;color:#8e939b;font-size:12px}.nav{display:grid;gap:5px}.nav-item{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;color:#aeb3ba;font-size:14px;transition:.15s ease}.nav-item:hover{color:#fff;background:#212428}.nav-item.active{color:#17191c;background:#f4f5f6;font-weight:650}.nav-icon{width:18px;text-align:center;font-size:15px}.sidebar-note{margin-top:auto;padding:14px 10px 0;border-top:1px solid #2b2e33;color:#737981;font-size:11px}.main-area{min-width:0}.topbar{height:76px;background:#ffffffeb;border-bottom:1px solid #e8eaec;display:flex;align-items:center;padding:0 34px;position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar-title{font-size:14px;font-weight:700}.topbar-subtitle{margin-top:2px;font-size:12px;color:#92979f}.content{padding:30px 34px 48px;max-width:1540px;margin:0 auto}.page{display:grid;gap:18px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:4px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:#969ba2;font-size:10px;font-weight:750;margin-bottom:7px}h1{margin:0;font-size:29px;letter-spacing:-.035em;line-height:1.15}h2{margin:0;font-size:18px;letter-spacing:-.02em}.muted{color:#858b93;font-size:13px}.subtle{color:#a1a6ad;font-size:12px}.panel{background:#fff;border:1px solid #e8eaec;border-radius:16px}.panel-pad{padding:20px}.panel-head{padding:17px 20px 13px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid #eff0f2}.panel-title{font-weight:720;font-size:14px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.kpi{background:#fff;border:1px solid #e8eaec;border-radius:16px;padding:18px 19px;min-height:122px;display:flex;flex-direction:column;justify-content:space-between}.kpi.dark{background:#17191c;border-color:#17191c;color:#fff}.kpi.accent{background:#efffc6;border-color:#e4f4b9}.kpi-label{color:#8c9299;font-size:12px}.kpi.dark .kpi-label{color:#9ca1a8}.kpi-value{font-size:27px;line-height:1.05;letter-spacing:-.04em;font-weight:760}.kpi-note{color:#a0a5ac;font-size:11px}.kpi.dark .kpi-note{color:#797f86}.negative{color:#d44545!important}.positive{color:#27724a!important}.status-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#e8eaec;border:1px solid #e8eaec;border-radius:15px;overflow:hidden}.status-cell{background:#fff;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px}.status-cell b{font-size:21px;letter-spacing:-.03em}.status-cell span{color:#80858d;font-size:12px}.badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:680;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}.badge.not_started{background:#f1f2f3;color:#7a8088}.badge.in_work{background:#fff4d6;color:#8f6a00}.badge.completed{background:#e8f7ee;color:#28734a}.badge.off{background:#f5e9ea;color:#9a4d52}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{position:sticky;top:0;background:#fafafa;color:#858b93;font-size:11px;font-weight:650;text-align:left;padding:11px 14px;border-bottom:1px solid #eceef0;white-space:nowrap}td{padding:13px 14px;border-bottom:1px solid #f0f1f2;vertical-align:middle;white-space:nowrap}tbody tr:last-child td{border-bottom:none}tbody tr.clickable:hover{background:#fafbfb;cursor:pointer}.cell-main{font-weight:650}.cell-sub{margin-top:3px;color:#969ba2;font-size:11px}.num{text-align:right;font-variant-numeric:tabular-nums}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.input,.select,.textarea{border:1px solid #dfe2e5;background:#fff;border-radius:10px;padding:10px 12px;outline:none;color:#202327;transition:.15s ease}.input:focus,.select:focus,.textarea:focus{border-color:#9ba1a9;box-shadow:0 0 0 3px #17191c0d}.input.search{width:280px}.select{min-width:170px}.textarea{min-height:84px;width:100%;resize:vertical}.button{border:1px solid #dfe2e5;background:#fff;color:#202327;border-radius:10px;padding:9px 13px;font-weight:650;font-size:12px}.button:hover{background:#f6f7f8}.button.primary{background:#17191c;color:#fff;border-color:#17191c}.button.primary:hover{background:#2a2d31}.button.accent{background:#d7ff62;border-color:#d7ff62;color:#17191c}.button.danger{color:#a93e45;border-color:#efcfd1}.button:disabled{opacity:.45;cursor:not-allowed}.link-button{border:0;background:none;padding:0;color:#4d535b;font-weight:650;font-size:12px}.grid-2{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.7fr);gap:16px;align-items:start}.metric-list{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:#eceef0}.metric-line{background:#fff;padding:18px 20px}.metric-line-label{color:#8d9299;font-size:11px;margin-bottom:6px}.metric-line-value{font-size:20px;font-weight:740;letter-spacing:-.025em}.layout-box{min-height:260px;display:grid;place-items:center;background:#f8f9fa;border-radius:12px;overflow:hidden}.layout-box img{width:100%;max-height:360px;object-fit:contain}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.field{display:grid;gap:6px}.field.full{grid-column:1 / -1}.field label{color:#777d84;font-size:11px;font-weight:650}.field-help{color:#a0a5ac;font-size:10px}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid #eff0f1}.switch-row:last-child{border-bottom:0}.switch{position:relative;width:40px;height:22px;background:#d8dce0;border-radius:999px;border:0;padding:0}.switch:after{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000002e;transition:.15s}.switch.on{background:#17191c}.switch.on:after{transform:translate(18px)}.notice{border-radius:10px;padding:11px 13px;font-size:12px;background:#eef7ee;color:#316b47;border:1px solid #d9ebdc}.notice.error{background:#fff0f0;color:#9a4247;border-color:#f2d4d6}.warning-box{background:#fff9e8;color:#765c10;border:1px solid #f2e5b9;border-radius:11px;padding:12px 14px;font-size:12px}.upload-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.upload-card{background:#fff;border:1px solid #e8eaec;border-radius:15px;padding:17px;display:grid;gap:13px}.upload-title{font-weight:720;font-size:14px}.upload-desc{color:#8c9299;font-size:11px;min-height:31px}.source-meta{color:#686e75;font-size:11px;padding:9px 10px;border-radius:9px;background:#f6f7f8}.file-input{width:100%;font-size:11px}.modal-backdrop{position:fixed;inset:0;background:#0a0c0e73;z-index:100;display:grid;place-items:center;padding:18px}.modal{width:min(560px,100%);background:#fff;border-radius:18px;box-shadow:0 22px 80px #00000038;overflow:hidden}.modal-head{padding:18px 20px;border-bottom:1px solid #eceef0;font-weight:720}.modal-body{padding:20px}.modal-actions{padding:14px 20px;border-top:1px solid #eceef0;display:flex;justify-content:flex-end;gap:8px}@media(max-width:1120px){.kpi-grid,.upload-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2{grid-template-columns:1fr}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;padding:14px 16px}.brand{padding-bottom:12px}.nav{grid-template-columns:repeat(3,1fr)}.nav-item{justify-content:center;padding:9px 6px}.nav-icon,.sidebar-note,.topbar{display:none}.content{padding:18px 14px 32px}.page-head{flex-direction:column}.kpi-grid,.status-strip,.upload-grid,.form-grid,.metric-list{grid-template-columns:1fr}.input.search,.select{width:100%}.filters{display:grid;grid-template-columns:1fr;width:100%}}.headline-stat{display:flex;align-items:baseline;gap:8px;padding:10px 0;color:#777d84}.headline-stat b{font-size:28px;color:#17191c;letter-spacing:-.04em}.headline-stat span{font-size:12px}.finance-section{background:#fff;border:1px solid #e8eaec;border-radius:18px;overflow:hidden}.section-heading{padding:18px 20px 14px;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;border-bottom:1px solid #eff0f2}.section-heading>div:first-child{display:flex;align-items:center;gap:12px}.section-index{width:29px;height:29px;border-radius:9px;display:grid;place-items:center;background:#f0f2f3;color:#777d84;font-size:10px;font-weight:800}.section-caption{max-width:620px;color:#8c9299;font-size:11px;line-height:1.45;text-align:right}.actual-section .section-index{background:#e8f7ee;color:#28734a}.forecast-section .section-index{background:#fff4d6;color:#8f6a00}.total-section .section-index{background:#17191c;color:#fff}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr)}.summary-metric{padding:21px 20px;border-right:1px solid #eff0f2;min-height:118px}.summary-metric:last-child{border-right:0}.summary-metric.strong{background:#fafbf8}.summary-label{color:#858b93;font-size:11px;margin-bottom:9px}.summary-value{font-size:28px;font-weight:760;letter-spacing:-.04em;line-height:1.05}.summary-note{margin-top:10px;color:#a0a5ac;font-size:11px}.action-line{width:100%;border:0;border-top:1px solid #f0e4b7;background:#fff9e8;padding:12px 20px;display:flex;justify-content:space-between;color:#765c10;font-size:12px;text-align:left}.action-line:hover{background:#fff6db}.text-warning{color:#a46d00;font-weight:650}.badge.neutral{background:#eef0f2;color:#5e646c}.header-badges{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.overview-panel{display:grid;grid-template-columns:1.35fr 1fr;overflow:hidden}.overview-main{padding:25px;background:#17191c;color:#fff}.overview-label{color:#a4a9b0;font-size:11px;margin-bottom:10px}.overview-value{font-size:36px;font-weight:760;letter-spacing:-.045em}.overview-note{color:#9da2a9;font-size:11px;line-height:1.5;margin-top:13px;max-width:580px}.overview-main .text-warning{color:#f1cd6d}.overview-side{display:grid;grid-template-rows:repeat(3,1fr)}.overview-side>div{padding:15px 18px;display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid #eff0f2}.overview-side>div:last-child{border-bottom:0}.overview-side span{color:#8d9299;font-size:11px}.overview-side b{font-size:15px}.layouts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.layout-card{background:#f8f9fa;border-radius:12px;overflow:hidden;min-height:230px;display:grid;grid-template-rows:auto 1fr}.layout-caption{padding:9px 11px;color:#777d84;font-size:10px;border-bottom:1px solid #eceef0}.layout-card img{width:100%;height:250px;object-fit:contain;padding:8px}.empty-state{min-height:150px;display:grid;place-items:center;color:#9ba0a7;background:#f8f9fa;border-radius:12px;font-size:12px}.sticky-card{position:sticky;top:94px}.form-divider{height:1px;background:#eceef0;margin:18px 0}.input-warning{border-color:#e0bd58;background:#fffdf6}.focus-panel{box-shadow:0 0 0 3px #d7ff628c}@media(max-width:900px){.summary-grid{grid-template-columns:1fr}.summary-metric{border-right:0;border-bottom:1px solid #eff0f2}.summary-metric:last-child{border-bottom:0}.section-heading{flex-direction:column}.section-caption{text-align:left}.overview-panel{grid-template-columns:1fr}.sticky-card{position:static}}@media(max-width:620px){.layouts-grid{grid-template-columns:1fr}}.dashboard-page{gap:16px}.dashboard-head{align-items:center}.quality-chip{width:210px;background:#fff;border:1px solid #e8eaec;border-radius:14px;padding:12px 14px;display:grid;grid-template-columns:1fr auto;gap:7px 12px;align-items:center}.quality-chip span{color:#858b93;font-size:11px}.quality-chip b{font-size:16px}.quality-chip .progress-track{grid-column:1 / -1}.hero-result{background:#17191c;color:#fff;border-radius:20px;padding:28px 30px;display:grid;grid-template-columns:1.25fr 1fr;gap:34px;align-items:center;box-shadow:0 16px 36px #17191c14}.hero-label{color:#92979d;font-size:12px;margin-bottom:9px}.hero-value{font-size:46px;line-height:1;font-weight:780;letter-spacing:-.055em}.hero-note{margin-top:12px;color:#8f949b;font-size:11px;line-height:1.5}.hero-mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#313439;border:1px solid #313439;border-radius:14px;overflow:hidden}.hero-mini-grid>div{background:#202328;padding:16px;display:grid;gap:7px}.hero-mini-grid span{color:#8f949b;font-size:10px}.hero-mini-grid b{font-size:16px}.fact-forecast-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.finance-block{background:#fff;border:1px solid #e8eaec;border-radius:18px;overflow:hidden}.finance-block-head{padding:17px 18px 13px;display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid #eff0f2}.finance-block-head h2{margin-top:3px;font-size:17px}.section-kicker{font-size:9px;font-weight:800;letter-spacing:.14em;color:#8b9097}.fact-block .section-kicker{color:#2f8055}.forecast-block .section-kicker{color:#a77700}.finance-metrics{display:grid;grid-template-columns:repeat(2,1fr)}.metric-card{min-height:114px;padding:17px 18px;border-right:1px solid #f0f1f2;border-bottom:1px solid #f0f1f2;display:flex;flex-direction:column;justify-content:space-between}.metric-card:nth-child(2n){border-right:0}.metric-card:nth-last-child(-n+2){border-bottom:0}.metric-card.tone-accent{background:#f5fbf7}.metric-card.tone-warning{background:#fffaf0}.metric-card.tone-dark{background:#17191c;color:#fff}.metric-card-label{color:#8d9299;font-size:10px}.metric-card-value{font-size:24px;font-weight:760;letter-spacing:-.04em}.metric-card-note{color:#a0a5ac;font-size:10px}.break-even{border-radius:20px;display:grid;grid-template-columns:1.2fr 1fr;overflow:hidden;border:1px solid #e8eaec;background:#fff}.break-even-main{padding:24px 26px}.break-even.green .break-even-main{background:#f3faf6}.break-even.amber .break-even-main{background:#fffaf0}.break-even.red .break-even-main{background:#fff5f4}.break-even-main h2{font-size:20px}.break-even-big{font-size:38px;line-height:1;font-weight:780;letter-spacing:-.05em;margin-top:16px}.break-even-desc{max-width:680px;color:#777d84;font-size:12px;line-height:1.55;margin-top:10px}.break-even-alert{margin-top:13px;border-radius:10px;background:#ae3d3714;color:#a13e3a;padding:10px 12px;font-size:11px}.break-even-side{padding:22px 24px;display:grid;align-content:center;gap:18px}.coverage-row{display:grid;gap:8px}.coverage-row>div:first-child{display:flex;justify-content:space-between;font-size:11px;color:#777d84}.coverage-row b{color:#17191c}.be-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.be-stats>div{background:#f7f8f8;border-radius:10px;padding:11px;display:grid;gap:5px}.be-stats span{color:#8c9299;font-size:9px;line-height:1.3}.be-stats b{font-size:13px}.progress-track{height:7px;background:#eceef0;border-radius:999px;overflow:hidden}.progress-track.compact{height:5px}.progress-track.large{height:10px}.progress-fill{height:100%;border-radius:inherit;transition:width .25s ease}.progress-fill.green{background:#3c8b62}.progress-fill.amber{background:#d6a930}.progress-fill.red{background:#c9514c}.progress-fill.dark{background:#464b51}.visual-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:14px}.visual-card{background:#fff;border:1px solid #e8eaec;border-radius:18px;padding:19px 20px;min-width:0}.visual-card.span-2{grid-column:1 / -1}.visual-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:19px}.visual-head>b{font-size:18px}.tiny-hint{color:#a1a6ad;font-size:10px}.stacked-bar{display:flex;height:14px;overflow:hidden;border-radius:999px;background:#eee}.cost-a{background:#25282c}.cost-b{background:#a7c85a}.cost-c{background:#e2b24b}.legend-list{margin-top:16px;display:grid;gap:10px}.legend-row{display:grid;grid-template-columns:auto 1fr auto 46px;align-items:center;gap:9px;font-size:11px}.legend-row span:nth-child(2){color:#777d84}.legend-row small{text-align:right;color:#a1a6ad}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 auto}.flow-chart{display:grid;gap:11px}.flow-row{display:grid;grid-template-columns:155px minmax(100px,1fr) 92px;gap:10px;align-items:center}.flow-label{font-size:10px;color:#777d84}.flow-bar-wrap{height:19px;display:flex;align-items:center}.flow-bar{height:100%;border-radius:6px}.flow-revenue{background:#23262a}.flow-cost{background:#d9dde0}.flow-margin{background:#8fbb55}.flow-overhead{background:#e2b24b}.flow-result{background:#3b8c61}.flow-negative{background:#c9514c}.flow-row b{text-align:right;font-size:11px}.status-visual{min-height:260px}.ring-wrap{display:grid;grid-template-columns:145px 1fr;gap:24px;align-items:center}.status-ring{width:145px;height:145px;border-radius:50%;display:grid;place-items:center}.ring-center{width:102px;height:102px;border-radius:50%;background:#fff;display:grid;place-content:center;text-align:center}.ring-center b{font-size:26px;letter-spacing:-.04em}.ring-center span{color:#959aa1;font-size:10px}.ring-legend{display:grid;gap:13px;font-size:11px}.ring-legend>div{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;color:#777d84}.ring-legend b{color:#17191c}.ring-done{background:#2f8055}.ring-work{background:#e4b949}.ring-idle{background:#d9dcdf}.project-bars{display:grid;gap:5px}.project-bar-row{width:100%;border:0;background:transparent;display:grid;grid-template-columns:220px 1fr 120px;align-items:center;gap:16px;padding:10px 8px;border-radius:10px;text-align:left}.project-bar-row:hover{background:#f7f8f8}.project-bar-title{display:grid;gap:3px}.project-bar-title b{font-size:12px}.project-bar-title span{color:#a0a5ac;font-size:9px}.project-bar-track{background:#edf0f1;height:14px;border-radius:999px;overflow:hidden}.project-bar-fill{background:#6f9d50;height:100%;border-radius:inherit}.project-bar-fill.bad{background:#c9514c}.project-bar-value{display:grid;justify-items:end;gap:2px}.project-bar-value b{font-size:12px}.project-bar-value span{color:#9aa0a7;font-size:9px}.attention-section{display:grid;gap:12px}.section-title-row{display:flex;justify-content:space-between;align-items:end}.risk-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.risk-card{border:1px solid #e7e9eb;border-radius:15px;background:#fff;padding:15px;display:grid;grid-template-columns:auto 1fr auto;gap:12px;text-align:left;align-items:center}.risk-card:hover{transform:translateY(-1px);box-shadow:0 8px 22px #0000000d}.risk-card.amber{background:#fffaf0;border-color:#f0e2b9}.risk-card.red{background:#fff5f4;border-color:#f0d6d3}.risk-card.soft{background:#f8fbf3}.risk-card.gray{background:#f7f8f8}.risk-count{min-width:42px;font-size:28px;font-weight:780;letter-spacing:-.04em}.risk-title{font-size:11px;font-weight:720}.risk-note{color:#91969d;font-size:9px;line-height:1.35;margin-top:3px}.projects-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.project-card{border:1px solid #e8eaec;background:#fff;border-radius:18px;padding:20px;text-align:left;display:grid;gap:18px}.project-card:hover{border-color:#cfd3d6;transform:translateY(-1px);box-shadow:0 10px 28px #0000000b}.project-card-top{display:flex;justify-content:space-between;gap:12px}.project-name{font-size:18px;font-weight:760}.project-main-number{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:end}.project-main-number span{color:#8c9299;font-size:10px}.project-main-number b{grid-row:2;font-size:27px}.project-main-number small{grid-row:2;align-self:end;padding-bottom:3px;color:#8c9299}.mini-progress{height:6px;background:#eef0f1;border-radius:999px;overflow:hidden}.mini-progress div{height:100%;background:#6d9850;border-radius:inherit}.project-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.project-stat-grid>div{background:#f8f9f9;border-radius:10px;padding:10px;display:grid;gap:4px}.project-stat-grid span{color:#91969d;font-size:9px}.project-stat-grid b{font-size:12px}.project-warnings{display:flex;gap:7px;flex-wrap:wrap}.project-warnings span{font-size:9px;border-radius:999px;background:#fff3d2;color:#8b6500;padding:5px 8px}.project-warnings .danger-text{background:#f8e3e1;color:#9b403b}.view-switch{display:inline-flex;padding:3px;border:1px solid #e0e3e5;border-radius:10px;background:#fff}.view-switch button{border:0;background:transparent;border-radius:7px;padding:7px 11px;color:#888e95;font-size:11px}.view-switch button.active{background:#17191c;color:#fff}.quick-filters{display:flex;gap:7px;flex-wrap:wrap}.quick-filters button{border:1px solid #e2e4e6;background:#fff;border-radius:999px;padding:8px 11px;color:#777d84;font-size:10px}.quick-filters button b{margin-left:5px;color:#17191c}.quick-filters button.active{background:#17191c;color:#fff;border-color:#17191c}.quick-filters button.active b{color:#fff}.quick-filters button.warning{border-color:#ead8a5}.quick-filters button.danger{border-color:#ebcecb}.filter-result{margin-left:auto;color:#93989f;font-size:11px}.filter-result b{color:#17191c}.apartment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.apartment-card{border:1px solid #e8eaec;background:#fff;border-radius:17px;padding:17px;text-align:left;display:grid;gap:15px;min-width:0}.apartment-card:hover{border-color:#ccd1d4;box-shadow:0 8px 22px #0000000a;transform:translateY(-1px)}.apartment-card.risk-over{border-color:#ecc9c6}.apartment-card.risk-missing{border-color:#ead9a8}.apartment-card-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.apartment-title{font-weight:720;font-size:13px}.apartment-subtitle{margin-top:4px;color:#969ba2;font-size:10px;line-height:1.3}.apartment-card-meta{display:flex;gap:8px;flex-wrap:wrap;color:#7e848b;font-size:9px}.apartment-card-meta span{background:#f5f6f7;border-radius:999px;padding:5px 7px}.apartment-finance{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.apartment-finance>div{display:grid;gap:5px}.apartment-finance span{color:#959ba2;font-size:9px}.apartment-finance b{font-size:13px}.reserve-cell{display:grid;gap:5px}.reserve-top{display:flex;justify-content:space-between;gap:8px;color:#8a9097;font-size:9px}.reserve-top b{color:#555b61}.card-alert{border-radius:9px;padding:8px 9px;font-size:9px}.card-alert.red{background:#fff1f0;color:#a23e39}.card-alert.amber{background:#fff8e5;color:#8d6500}.empty-list{grid-column:1 / -1;background:#fff;border:1px dashed #d9dcdf;border-radius:16px;padding:50px;text-align:center;color:#999ea5}.apartment-hero{border-radius:19px;overflow:hidden;display:grid;grid-template-columns:1.1fr 1fr;border:1px solid #e8eaec}.apartment-hero-main{background:#17191c;color:#fff;padding:25px}.apartment-hero-stats{background:#fff;display:grid;grid-template-columns:1fr 1fr}.apartment-hero-stats>div{padding:17px;border-right:1px solid #eff0f2;border-bottom:1px solid #eff0f2;display:grid;gap:6px}.apartment-hero-stats>div:nth-child(2n){border-right:0}.apartment-hero-stats>div:nth-last-child(-n+2){border-bottom:0}.apartment-hero-stats span{color:#8d9299;font-size:9px}.apartment-hero-stats b{font-size:16px}.vor-health{border-radius:16px;border:1px solid #e5e7e9;padding:18px 20px;background:#fff}.vor-health.ok{background:#f7fbf8;border-color:#deeadf}.vor-health.warning{background:#fffaf0;border-color:#eee0b8}.vor-health.danger{background:#fff5f4;border-color:#ecd2cf}.vor-health.missing{background:#fffaf0;border-color:#eee0b8}.vor-health.missing>div{display:flex;justify-content:space-between}.vor-health.missing span,.vor-health-head span{color:#858b93;font-size:10px}.vor-health.missing p{color:#8c9299;font-size:10px;margin:8px 0 0}.vor-health-head{display:flex;justify-content:space-between;gap:20px;margin-bottom:12px}.vor-health-head>div{display:grid;gap:4px}.vor-health-head .right{text-align:right}.vor-health-head b{font-size:17px}.vor-scale{display:flex;justify-content:space-between;margin-top:7px;color:#92979f;font-size:9px}.apartment-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.cost-breakdown{display:grid;gap:11px}.cost-break-row{display:grid;grid-template-columns:1fr auto 42px;gap:9px;align-items:center;font-size:10px}.cost-break-row>span{display:flex;align-items:center;gap:7px;color:#777d84}.cost-break-row small{text-align:right;color:#a0a5ac}.compact-metrics{display:grid;gap:9px}.compact-metrics>div{background:#f7f8f8;border-radius:10px;padding:11px 12px;display:grid;grid-template-columns:1fr auto;gap:3px 10px}.compact-metrics span{color:#8b9198;font-size:9px}.compact-metrics b{font-size:13px}.compact-metrics small{grid-column:1 / -1;color:#a1a6ad;font-size:8px}.admin-health{background:#fff;border:1px solid #e8eaec;border-radius:14px;padding:12px 16px;display:grid;text-align:right}.admin-health b{font-size:20px}.admin-health span{color:#91969d;font-size:9px}.data-source-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.data-source-card{background:#fff;border:1px solid #e7e9eb;border-radius:17px;padding:16px;display:grid;gap:13px}.data-source-card.ready{border-top:3px solid #68a277}.source-card-top{display:grid;grid-template-columns:28px 1fr;gap:10px}.source-state{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:#f2f3f4;color:#888e95;font-weight:800}.data-source-card.ready .source-state{background:#eaf6ed;color:#34754e}.source-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px}.source-facts>div{background:#f7f8f8;border-radius:9px;padding:9px;display:grid;gap:3px}.source-facts span{color:#999ea4;font-size:8px}.source-facts b{font-size:9px;font-weight:650}.file-drop{border:1px dashed #d4d8db;border-radius:10px;padding:10px;text-align:center;color:#7f858c;font-size:9px;cursor:pointer}.file-drop input{display:none}.loading-card{background:#fff;border:1px solid #e8eaec;border-radius:16px;padding:40px;text-align:center;color:#8d9299}.text-muted{color:#999ea5}@media(max-width:1200px){.apartment-grid,.projects-grid,.data-source-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.risk-grid{grid-template-columns:repeat(2,1fr)}.hero-result,.break-even{grid-template-columns:1fr}}@media(max-width:900px){.fact-forecast-grid,.visual-grid,.apartment-info-grid,.apartment-hero{grid-template-columns:1fr}.visual-card.span-2{grid-column:auto}.project-bar-row{grid-template-columns:150px 1fr 90px}.hero-mini-grid{grid-template-columns:1fr}}@media(max-width:760px){.nav{grid-template-columns:repeat(4,1fr)}.apartment-grid,.projects-grid,.data-source-grid,.risk-grid,.finance-metrics,.apartment-hero-stats,.be-stats{grid-template-columns:1fr}.metric-card{border-right:0;border-bottom:1px solid #f0f1f2!important}.metric-card:last-child{border-bottom:0!important}.ring-wrap{grid-template-columns:1fr;justify-items:center}.flow-row{grid-template-columns:110px 1fr 76px}.project-bar-row{grid-template-columns:1fr}.project-bar-value{justify-items:start;grid-auto-flow:column;justify-content:start;gap:8px}.quality-chip{width:100%}}.be-stats{grid-template-columns:repeat(4,1fr)}@media(max-width:900px){.be-stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:620px){.be-stats{grid-template-columns:1fr}}.page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.export-button{background:#17191c;border-color:#17191c;color:#fff}.export-button:hover{background:#2a2d31;color:#fff}.project-meta{margin-top:5px;color:#8f959c;font-size:11px}.break-even-kpis{display:flex;flex-wrap:wrap;gap:18px 28px;margin-top:18px}.break-even-kpis>div{display:grid;gap:5px;min-width:150px}.break-even-kpis span{color:#858b93;font-size:10px}.break-even-kpis b{font-size:15px}.card-footer-meta{display:grid;grid-template-columns:1fr auto;gap:8px 14px;align-items:center;font-size:11px}.card-footer-meta span{color:#8d9299}.card-footer-meta b{font-weight:650;text-align:right}.mapping-source{margin-bottom:14px;font-weight:650;line-height:1.4}.source-card-top{align-items:center}.data-source-card .upload-title{line-height:1.25}.risk-card{min-height:76px}.risk-card .risk-title{align-self:center}.content{padding-top:34px}@media(max-width:760px){.nav{grid-template-columns:repeat(4,1fr)}.page-actions{width:100%;justify-content:space-between}.quality-chip{width:min(100%,240px)}}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:#f4f5f6}.login-card{width:min(420px,100%);background:#fff;border:1px solid #e5e7e9;border-radius:20px;padding:28px;box-shadow:0 20px 60px #17191c14;display:grid;gap:18px}.login-brand{display:flex;align-items:center;gap:11px;padding-bottom:4px}.login-card .brand-title{color:#17191c}.login-card .brand-subtitle{color:#8e939b}.login-card h1{font-size:25px}.login-control{width:100%;min-width:0}.login-submit{width:100%;min-height:42px}.sidebar-user{margin-top:auto;border-top:1px solid #2b2e33;padding:16px 8px 0;display:flex;align-items:center;justify-content:space-between;gap:12px}.sidebar-user b,.sidebar-user span{display:block}.sidebar-user b{font-size:12px;font-weight:650}.sidebar-user span{margin-top:3px;color:#777d84;font-size:10px}.sidebar-user button{border:0;background:none;color:#8e939b;padding:5px;font-size:11px}.sidebar-user button:hover{color:#fff}@media(max-width:760px){.sidebar-user{display:none}}.page-subtitle{margin-top:7px;color:#8d9299;font-size:12px}.panel-caption{margin-top:4px;color:#969ba2;font-size:11px}.cell-main.strong{font-size:14px;font-weight:760;color:#17191c}.inline-actions{display:flex;gap:7px;justify-content:flex-end}.excluded-panel{border-color:#ead8da}.excluded-panel .panel-head{background:snow;border-radius:16px 16px 0 0}.apartment-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}.apartment-card{padding:21px;gap:17px;border-radius:19px;min-height:250px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.apartment-card-topline{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;min-width:0}.card-identity{min-width:0}.card-apartment-number{font-size:36px;line-height:.96;font-weight:790;letter-spacing:-.055em;color:#17191c}.card-unit-label{margin-top:7px;color:#8c9299;font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.08em}.card-unit-count{font-size:25px;line-height:1;font-weight:780;letter-spacing:-.04em}.card-unit-numbers{margin-top:7px;color:#555c63;font-size:13px;font-weight:650;line-height:1.35;white-space:normal}.apartment-location{display:grid;gap:4px;padding-top:2px}.apartment-location b{font-size:15px;font-weight:720}.apartment-location span{color:#858b93;font-size:11px}.apartment-finance{padding:14px 0;border-top:1px solid #eef0f1;border-bottom:1px solid #eef0f1;gap:12px}.apartment-finance span{font-size:10px}.apartment-finance b{font-size:16px;letter-spacing:-.02em}.apartment-card-footer{min-height:18px;display:flex;justify-content:space-between;gap:12px;align-items:center;color:#a0a5ab;font-size:9px;overflow:hidden}.apartment-card-footer>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.apartment-card-footer b{flex:0 0 auto;font-size:9px}.table-apartment-number{font-size:15px;line-height:1.15;font-weight:760;color:#17191c}.apartments-table td:first-child{min-width:190px}.apartment-page-head{align-items:flex-end;padding-bottom:8px}.apartment-detail-location{margin-top:15px;color:#6f757c;font-size:13px;font-weight:650}.apartment-detail-location span{color:#c0c4c8;padding:0 3px}.apartment-detail-title{margin-top:6px;font-size:clamp(34px,4vw,52px);font-weight:790;letter-spacing:-.055em;line-height:.98}.apartment-detail-numbers{margin-top:9px;font-size:17px;font-weight:680;color:#4e555c}.apartment-detail-meta{margin-top:12px;display:flex;gap:10px;flex-wrap:wrap;color:#8d9299;font-size:11px}.apartment-detail-meta span{padding:6px 9px;background:#eceeef;border-radius:999px}.apartment-hero-main{padding:28px}.apartment-hero-main .overview-value{font-size:42px}@media(max-width:760px){.card-apartment-number{font-size:31px}.card-unit-count{font-size:23px}.apartment-detail-title{font-size:36px}.apartment-card{min-height:0}.inline-actions{flex-wrap:wrap}}.viewer-layout{grid-template-columns:minmax(0,1fr)}.viewer-layout>.page{max-width:1180px}
