:root {
  --bg:#eef2f7; --surface:#ffffff; --surface-alt:#f7f9fc; --text:#1f2937; --muted:#60718a;
  --primary:#0f766e; --primary-strong:#115e59; --danger:#b42318; --warn:#b54708; --ok:#067647;
  --orange:#c2410c; --blue:#2563eb; --border:#d6deea; --shadow:0 10px 30px rgba(15,23,42,.08); --radius:16px;
}
:root[data-theme="dark"] {
  --bg:#0b1220; --surface:#111827; --surface-alt:#172033; --text:#eef2ff; --muted:#a8b3c7;
  --primary:#2dd4bf; --primary-strong:#14b8a6; --danger:#f97066; --warn:#fdb022; --ok:#32d583;
  --orange:#fb923c; --blue:#60a5fa; --border:#293548; --shadow:0 16px 40px rgba(0,0,0,.35);
}
*{box-sizing:border-box} body{margin:0;font-family:"Segoe UI","Noto Sans",sans-serif;background:radial-gradient(circle at 20% 0%,rgba(45,212,191,.18),transparent 32%),radial-gradient(circle at 80% 10%,rgba(59,130,246,.16),transparent 28%),var(--bg);color:var(--text)}
#app{width:min(1700px,100%);margin:0 auto;padding:14px}.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}h1,h2,h3,h4{margin:0}.subtitle{margin:4px 0 0;color:var(--muted)}
.panel,.team-card,.toolbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;margin-bottom:12px}.login-panel{max-width:520px;margin:6vh auto}.stack-form{display:grid;gap:10px;margin-top:12px}label{display:grid;gap:6px;font-size:14px}input,select,button{font:inherit}input,select{border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:var(--surface);color:var(--text)}
.btn{border:1px solid var(--border);border-radius:12px;padding:9px 12px;background:var(--surface);color:var(--text);cursor:pointer}.btn.primary{background:var(--primary);color:#042f2e;border-color:var(--primary)}.btn.danger{background:#fef3f2;color:#b42318;border-color:#fecdca}.btn.ghost{background:var(--surface-alt)}.session-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 12px}.toolbar-actions{display:flex;gap:6px;flex-wrap:wrap}.toolbar-actions.micro .btn{padding:6px 9px;font-size:12px;border-radius:999px}.toolbar-title{font-weight:850;white-space:nowrap;text-transform:capitalize}.month-strip{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.month-buttons{display:flex;gap:5px;overflow-x:auto;padding:2px 0;max-width:100%}.month-pill{border:1px solid var(--border);border-radius:999px;background:var(--surface-alt);color:var(--text);padding:5px 9px;font-size:12px;white-space:nowrap;display:inline-flex;gap:3px;align-items:baseline}.month-pill small{color:var(--muted);font-size:10px}.month-pill.active{background:var(--primary);border-color:var(--primary);color:#042f2e}.month-pill.active small{color:#064e3b}.tabs{display:flex;gap:8px;overflow-x:auto;margin-bottom:8px;padding-bottom:2px}.tab{border-radius:999px;border:1px solid var(--border);padding:8px 14px;background:var(--surface);color:var(--text);white-space:nowrap}.tab.active{background:var(--primary);border-color:var(--primary);color:#042f2e}
.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:800;border:1px solid transparent}.badge.ontrack,.badge.ok{background:#ecfdf3;color:#067647}.badge.watch,.badge.warn{background:#fffaeb;color:#b54708}.badge.behind{background:#fff4ed;color:#c2410c}.badge.critical,.badge.danger{background:#fef3f2;color:#b42318}
.kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.card{background:var(--surface-alt);border:1px solid var(--border);border-radius:14px;padding:12px}.main-kpis{margin-bottom:12px}.kpi-card{position:relative;overflow:hidden;padding:16px;border-width:0;box-shadow:var(--shadow)}.kpi-card:before{content:"";position:absolute;inset:0;opacity:.15}.kpi-card>*{position:relative}.kpi-heads:before{background:linear-gradient(135deg,#14b8a6,#22c55e)}.kpi-pace:before{background:linear-gradient(135deg,#3b82f6,#60a5fa)}.kpi-manips:before{background:linear-gradient(135deg,#8b5cf6,#ec4899)}.kpi-ok:before{background:linear-gradient(135deg,#22c55e,#86efac)}.kpi-alert:before{background:linear-gradient(135deg,#ef4444,#fb923c)}.kpi-value{margin-top:6px;font-size:22px;font-weight:850}.main-kpis .kpi-value{font-size:28px}.kpi-label{color:var(--muted);font-size:13px}.pos{color:var(--ok)}.neg{color:var(--danger)}
.dashboard-intro{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.legend{display:flex;gap:10px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:13px}.compact-legend{background:transparent;border:0;box-shadow:none;margin:0 0 10px;padding:0 2px}.dot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:5px}.dot.good{background:#22c55e}.dot.warn{background:#facc15}.dot.orange{background:#fb923c}.dot.bad{background:#ef4444}.dot.weekend{background:#60a5fa}.dot.nodata{background:#cbd5e1}
.team-grid{display:grid;grid-template-columns:1fr;gap:12px}.team-card{position:relative;overflow:hidden;margin:0;min-height:210px}.team-card .fill{position:absolute;inset:0 auto 0 0;opacity:.18;transition:width .25s ease}.team-card.ontrack .fill{background:linear-gradient(90deg,#22c55e,#86efac)}.team-card.watch .fill{background:linear-gradient(90deg,#eab308,#fde68a)}.team-card.behind .fill{background:linear-gradient(90deg,#f97316,#fed7aa)}.team-card.critical .fill{background:linear-gradient(90deg,#ef4444,#fecaca)}.team-content{position:relative;z-index:1}.team-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.team-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}.team-stats.two{grid-template-columns:repeat(2,1fr)}.team-stats span{background:rgba(255,255,255,.55);border:1px solid var(--border);border-radius:12px;padding:8px}:root[data-theme="dark"] .team-stats span{background:rgba(17,24,39,.72)}.team-stats b{display:block;font-size:21px}.team-stats small{display:block;color:var(--muted);margin-top:2px}.team-note{font-size:13px;color:var(--muted);margin-top:8px}.progress-line{margin-top:8px;background:#dde4ef;border-radius:999px;height:10px;overflow:hidden}.progress-line>span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--primary),#22c55e)}
.days-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:10px}.day{min-height:22px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:850;border:1px solid var(--border);background:var(--surface-alt);color:var(--muted)}.day.good{background:#dcfae6;color:#067647;border-color:#75e0a7}.day.warn{background:#fef9c3;color:#854d0e;border-color:#fde047}.day.orange{background:#ffedd5;color:#9a3412;border-color:#fdba74}.day.bad{background:#fee4e2;color:#b42318;border-color:#fda29b}.day.weekend{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}.day.nodata{background:#f1f5f9;color:#64748b;border-style:dashed}:root[data-theme="dark"] .day.nodata{background:#1e293b;color:#94a3b8}:root[data-theme="dark"] .day.weekend{background:#172554;color:#93c5fd}:root[data-theme="dark"] .day.warn{background:#422006;color:#facc15}:root[data-theme="dark"] .day.orange{background:#431407;color:#fb923c}
.entry-mode-panel{padding-bottom:10px}.entry-mode-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.entry-mode{border:1px solid var(--border);border-radius:999px;padding:9px 13px;background:var(--surface-alt);color:var(--text);cursor:pointer}.entry-mode.active{background:var(--primary);border-color:var(--primary);color:#042f2e}.manip-help{background:var(--surface-alt);border:1px dashed var(--border);border-radius:12px;padding:10px;margin:8px 0 0}.entry-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.entry-grid .wide{grid-column:1/-1}.important-input input{font-size:24px;font-weight:850}.board-controls{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-top:12px}.entry-board{display:grid;grid-template-columns:repeat(7,minmax(40px,1fr));gap:6px;margin-top:12px}.entry-cell{border:1px solid var(--border);border-radius:10px;padding:6px;background:var(--surface-alt);display:grid;gap:4px}.entry-cell b{font-size:12px}.entry-cell input[type="number"]{width:100%;padding:5px;border-radius:8px;font-weight:850;text-align:center}.manip-mini{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}.manip-mini input{font-size:10px;padding:4px 2px}.entry-cell small{font-size:10px;color:var(--muted)}.entry-cell label{font-size:10px;display:flex;gap:3px;align-items:center;color:var(--muted)}.entry-cell.good{background:#ecfdf3}.entry-cell.warn{background:#fef9c3}.entry-cell.orange{background:#ffedd5}.entry-cell.bad{background:#fee4e2}.entry-cell.weekend{background:#dbeafe}.entry-cell.nodata{background:#f8fafc;border-style:dashed}.day-entry-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:12px}.day-team-card{border:1px solid var(--border);border-radius:14px;padding:10px;background:var(--surface-alt);display:grid;gap:8px}.day-team-card.good{background:#ecfdf3}.day-team-card.warn{background:#fef9c3}.day-team-card.orange{background:#ffedd5}.day-team-card.bad{background:#fee4e2}.day-team-card.weekend{background:#dbeafe}.day-team-card.nodata{border-style:dashed}.day-manips{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.day-manips label{font-size:11px}.day-manips input{padding:6px 4px;text-align:center}.off-check{display:flex;align-items:center;gap:5px;color:var(--muted)}.compact-entry{opacity:.96}.mini-list{display:grid;gap:8px}.mini-list>div{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}.mini-list span{color:var(--muted)}
.finance-split{display:grid;grid-template-columns:1fr;gap:10px;margin:10px 0}.splitbar{height:18px;border-radius:999px;background:#c7d2fe;overflow:hidden;margin:12px 0}.splitbar span{display:block;height:100%;background:linear-gradient(90deg,#14b8a6,#22c55e)}
.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface)}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--border);font-size:14px;vertical-align:top}th{background:var(--surface-alt);color:var(--muted)}.error-text{color:var(--danger);min-height:18px;margin-top:8px}.success-text{color:var(--ok);min-height:18px;margin-top:8px}.muted{color:var(--muted)}.demo-logins{margin:8px 0;padding-left:18px}.hidden{display:none!important}.view{display:none}.view.active{display:block}
.status-Новый{background:#eff8ff;color:#175cd3;border-color:#b2ddff}.status-Ожидаем\ оплату{background:#eff8ff;color:#175cd3;border-color:#b2ddff}.status-Частично\ оплачен{background:#fffaeb;color:#b54708;border-color:#fedf89}.status-Просрочен{background:#fff4ed;color:#b93815;border-color:#fed7aa}.status-Проблемный{background:#fef3f2;color:#b42318;border-color:#fecdca}.status-Оплачен{background:#ecfdf3;color:#067647;border-color:#abefc6}
@media (min-width:760px){#app{padding:18px}.kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.team-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.entry-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.day-entry-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-split{grid-template-columns:2fr 1fr}}
@media (min-width:1200px){.team-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.day-entry-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1500px){body{font-size:18px}h1{font-size:42px}.panel,.team-card,.card,.toolbar{padding:18px}.kpi-value{font-size:30px}.main-kpis .kpi-value{font-size:38px}th,td,.tab,.btn,input,select{font-size:17px}.team-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.day-entry-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.day{min-height:26px}.entry-board{grid-template-columns:repeat(14,minmax(42px,1fr))}}


/* v7 mobile layout polish */
.day-team-card,.day-manips,.day-manips label,.entry-cell,.entry-cell label,.manip-mini input{min-width:0}.day-manips input,.day-team-card input,.entry-cell input{width:100%}.tabs,.month-buttons{max-width:100%;overflow-x:auto;overflow-y:hidden}
.btn.icon{width:38px;height:38px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;font-size:18px}.btn.mini{padding:7px 9px;font-size:12px;border-radius:999px}.role-badge{white-space:nowrap}.toolbar{align-items:stretch}.month-strip{width:100%;flex:1 1 100%;display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:center}.toolbar-title{text-transform:none;background:var(--surface-alt);border:1px solid var(--border);border-radius:999px;padding:7px 10px;font-size:13px}.month-buttons{width:100%;min-width:0;scrollbar-width:thin}.month-pill{min-width:54px;justify-content:center}.board-controls input[type="date"]{min-width:0;width:100%}.date-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}.entry-board-mobile-note{display:none}
@media (max-width:759px){
  #app{padding:10px 8px 88px}.topbar{display:grid;grid-template-columns:1fr;gap:8px}.topbar h1{font-size:24px}.subtitle{font-size:13px}.session-controls{gap:5px;justify-content:flex-start}.session-controls .badge{font-size:11px;padding:4px 8px}.tabs{margin-left:0;margin-right:0;padding:0 0 6px;scroll-snap-type:none;flex-wrap:wrap;overflow:visible}.tab{padding:7px 11px;font-size:13px;scroll-snap-align:start;flex:1 1 auto;text-align:center}.toolbar{padding:9px;margin-bottom:10px}.month-strip{grid-template-columns:1fr;gap:7px}.toolbar-title{width:max-content;max-width:100%;font-size:12px;padding:6px 9px}.month-buttons{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(54px,1fr);overflow-x:auto;gap:6px;padding-bottom:4px}.month-pill{padding:8px 7px;font-size:12px}.month-pill small{font-size:10px}.legend{gap:6px;font-size:11px}.kpi-grid{gap:8px}.kpi-card{padding:12px}.main-kpis .kpi-value{font-size:22px}.team-stats{grid-template-columns:repeat(2,1fr)}.team-stats span:last-child{grid-column:1/-1}.days-grid{gap:3px}.day{min-height:24px;font-size:9px}.entry-mode-panel h2,.panel h2{font-size:20px}.entry-mode-tabs{display:grid;grid-template-columns:1fr;gap:7px}.entry-mode{width:100%;padding:10px}.manip-help{font-size:12px}.board-controls{display:grid;grid-template-columns:1fr;gap:9px;align-items:stretch}.board-controls label,.board-controls button{width:100%}.board-controls .success-text{min-height:0}.entry-board{grid-template-columns:1fr;gap:8px}.entry-cell{grid-template-columns:36px 74px minmax(0,1fr);grid-template-areas:"day heads manips" "off off sum";align-items:center;padding:8px;border-radius:13px}.entry-cell b{grid-area:day;font-size:18px;text-align:center}.entry-cell input[data-field="heads"]{grid-area:heads;font-size:16px;padding:8px 6px}.entry-cell .manip-mini{grid-area:manips;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.entry-cell .manip-mini input{font-size:12px;padding:7px 2px}.entry-cell small{grid-area:sum;font-size:11px}.entry-cell label{grid-area:off;font-size:12px}.day-entry-grid{gap:9px}.day-team-card{padding:11px}.day-team-card h3{font-size:20px}.day-manips{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.day-manips label{font-size:11px}.day-manips input{padding:8px 4px;text-align:center}.important-input input{font-size:22px}.table-wrap{margin-left:-2px;margin-right:-2px}
}
@media (max-width:380px){.session-controls .role-badge{order:-1}.session-controls{gap:4px}.btn.mini{padding:6px 7px;font-size:11px}.month-buttons{grid-auto-columns:minmax(50px,1fr)}.entry-cell{grid-template-columns:32px 66px minmax(0,1fr);padding:7px}.entry-cell .manip-mini input{font-size:11px}.day-manips{gap:4px}}
