/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--r-s);font-size:var(--fs-t);font-weight:500;border:1px solid var(--border);background:var(--surface);color:var(--text);white-space:nowrap;transition:background var(--dur-f),border-color var(--dur-f),transform var(--dur-i),box-shadow var(--dur-f);user-select:none}
.btn:hover{background:var(--surface-2);border-color:var(--border-2)}
.btn:active{transform:scale(.98)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn.primary:hover{background:var(--accent-h);border-color:var(--accent-h)}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.ok:hover{filter:brightness(.95)}
.btn.danger{color:var(--bad);border-color:var(--border)}.btn.danger:hover{background:var(--bad-soft);border-color:var(--bad)}
.btn.ghost{border-color:transparent;background:transparent;color:var(--text-2)}.btn.ghost:hover{background:var(--surface-3);color:var(--text)}
.btn.ai{background:var(--ai-soft);border-color:transparent;color:var(--ai)}.btn.ai:hover{background:var(--ai);color:#fff}
.btn.sm{height:28px;padding:0 10px;font-size:var(--fs-sm)} .btn.lg{height:36px;padding:0 16px;font-size:var(--fs-b)} .btn.xs{height:24px;padding:0 8px;font-size:var(--fs-xs)}
.btn.icon{width:32px;padding:0}.btn.icon.sm{width:28px}.btn.icon.xs{width:24px}
.btn[disabled]{opacity:.5;pointer-events:none}
.btn .ic{color:currentColor}
.btn .kbd{margin-left:4px;border-color:rgba(255,255,255,.3);background:transparent;color:inherit;opacity:.8}
.btns{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* ---------- inputs ---------- */
.fld{display:flex;flex-direction:column;gap:5px;min-width:0}
.fld>label,.lbl{font-size:var(--fs-sm);font-weight:500;color:var(--text-2)}
.in,.sel,.ta{height:32px;padding:0 10px;border:1px solid var(--border);border-radius:var(--r-s);background:var(--surface);font-size:var(--fs-t);outline:none;transition:border-color var(--dur-f),box-shadow var(--dur-f);width:100%;min-width:0}
.ta{height:auto;min-height:72px;padding:8px 10px;resize:vertical;line-height:18px}
.in:hover,.sel:hover,.ta:hover{border-color:var(--border-2)}
.in:focus,.sel:focus,.ta:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}
.in.money{text-align:right;font-variant-numeric:tabular-nums}
.sel{appearance:none;-webkit-appearance:none;padding-right:28px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2378716C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}
.fld.ai .in,.fld.ai .sel,.fld.ai .ta{background:var(--ai-soft);border-color:transparent}
.fld.ai.low .in,.fld.ai.low .sel{border-color:var(--warn);background:var(--warn-soft)}
.fld .hint{font-size:var(--fs-xs);color:var(--text-3)}
.fld .conf{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--ai);font-weight:500}
.fld.low .conf{color:var(--warn)}
.form{display:grid;grid-template-columns:repeat(12,1fr);gap:14px 16px}
.form .c3{grid-column:span 3}.form .c4{grid-column:span 4}.form .c6{grid-column:span 6}.form .c8{grid-column:span 8}.form .c12{grid-column:span 12}
.form-sec{grid-column:span 12;font-size:var(--fs-sm);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding-top:8px;border-top:1px solid var(--border);margin-top:4px}
.form-sec:first-child{border-top:0;margin-top:0;padding-top:0}
.chk{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-t);cursor:pointer}
.chk input{appearance:none;width:16px;height:16px;border:1.5px solid var(--border-2);border-radius:4px;background:var(--surface);display:grid;place-items:center;transition:all var(--dur-i);margin:0;flex:none}
.chk input:checked{background:var(--accent);border-color:var(--accent)}
.chk input:checked::after{content:"";width:9px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) translate(1px,-1px)}
.chk input.ok:checked{background:var(--ok);border-color:var(--ok)}
.tgl{width:32px;height:18px;border-radius:999px;background:var(--border-2);position:relative;transition:background var(--dur-f);flex:none}
.tgl::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform var(--dur-b) var(--ease-out);box-shadow:0 1px 2px rgba(0,0,0,.2)}
.tgl.on{background:var(--accent)} .tgl.on::after{transform:translateX(14px)}
.seg{display:inline-flex;padding:2px;border-radius:var(--r-m);background:var(--surface-3);gap:2px}
.seg button{height:26px;padding:0 10px;border-radius:6px;font-size:var(--fs-sm);font-weight:500;color:var(--text-2);transition:all var(--dur-f)}
.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--sh-card),0 0 0 1px var(--hair)}
.search-in{display:flex;align-items:center;gap:8px;height:32px;padding:0 10px;border:1px solid var(--border);border-radius:var(--r-s);background:var(--surface);color:var(--text-3);min-width:200px}
.search-in input{border:0;outline:0;background:none;flex:1;font-size:var(--fs-t);color:var(--text)}
/* ---------- chips / status ---------- */
.chip{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:999px;font-size:var(--fs-sm);font-weight:500;background:var(--surface-3);color:var(--text-2);white-space:nowrap;line-height:1}
.chip.ok{background:var(--ok-soft);color:var(--ok)} .chip.warn{background:var(--warn-soft);color:var(--warn)} .chip.bad{background:var(--bad-soft);color:var(--bad)} .chip.info{background:var(--info-soft);color:var(--info)} .chip.acc{background:var(--accent-soft);color:var(--accent)} .chip.ai{background:var(--ai-soft);color:var(--ai)}
.chip.outline{background:transparent;border:1px solid var(--border);color:var(--text-2)}
.chip.sm{height:18px;padding:0 6px;font-size:var(--fs-xs)}
.chip .ic{width:12px;height:12px}
.chip.x{padding-right:4px}.chip.x .rm{width:16px;height:16px;border-radius:50%;display:grid;place-items:center;opacity:.6}.chip.x .rm:hover{opacity:1;background:rgba(0,0,0,.08)}
.st{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-t);white-space:nowrap}
.st::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--text-3);flex:none}
.st.ok::before{background:var(--ok)} .st.warn::before{background:var(--warn)} .st.bad::before{background:var(--bad)} .st.acc::before{background:var(--accent)} .st.ai::before{background:var(--ai)} .st.info::before{background:var(--info)}
.st.pulse::before{animation:pulse 1.6s infinite}
.tag{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--text-2)}
.tag i{width:8px;height:8px;border-radius:2px;flex:none;display:inline-block}
/* ---------- avatars ---------- */
.av{width:28px;height:28px;border-radius:50%;display:inline-grid;place-items:center;font-size:11px;font-weight:600;color:#1C1917;background:var(--surface-3);flex:none;letter-spacing:.01em;position:relative}
.av.sm{width:22px;height:22px;font-size:9px} .av.xs{width:18px;height:18px;font-size:8px} .av.lg{width:36px;height:36px;font-size:13px} .av.xl{width:48px;height:48px;font-size:16px}
.av.ai{background:var(--ai-soft);color:var(--ai)}
.av.bank{background:var(--info-soft);color:var(--info)}
.av.ring{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--accent)}
.av.ring.pulse{animation:pulse 1.8s infinite}
.av .badge{position:absolute;right:-3px;bottom:-3px;width:14px;height:14px;border-radius:50%;background:var(--ok);color:#fff;display:grid;place-items:center;border:2px solid var(--surface)}
.av .badge .ic{width:8px;height:8px}
.av .badge.bad{background:var(--bad)} .av .badge.wait{background:var(--warn)} .av .badge.skip{background:var(--text-3)}
.avs{display:inline-flex}.avs .av{margin-left:-6px;box-shadow:0 0 0 2px var(--surface)}.avs .av:first-child{margin-left:0}
.who{display:inline-flex;align-items:center;gap:8px;min-width:0}
.who .n{font-size:var(--fs-t);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.who .s{font-size:var(--fs-xs);color:var(--text-3)}
/* ---------- cards & sections ---------- */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);box-shadow:var(--sh-card)}
.card.pad{padding:16px 20px}
.card.click{cursor:pointer;transition:border-color var(--dur-f),transform var(--dur-f),box-shadow var(--dur-f)}
.card.click:hover{border-color:var(--border-2);box-shadow:var(--sh-pop)}
.card.flat{box-shadow:none}
.card.ai{border-left:3px solid var(--ai)}
.card.bad{border-left:3px solid var(--bad)}
.card.warn{border-left:3px solid var(--warn)}
.sec-h{display:flex;align-items:center;gap:10px;margin:28px 0 12px}
.sec-h:first-child{margin-top:0}
.sec-h h2{font-size:var(--fs-b);font-weight:600}
.sec-h .n{font-size:var(--fs-sm);color:var(--text-3);font-weight:500}
.sec-h .grow{flex:1}
.sec-h a.more{font-size:var(--fs-sm);color:var(--text-2);display:inline-flex;align-items:center;gap:2px}
.sec-h a.more:hover{color:var(--accent)}
.page-h{display:flex;align-items:flex-start;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.page-h h1{font-size:var(--fs-xl);line-height:32px;letter-spacing:-.02em}
.page-h .sub{color:var(--text-2);font-size:var(--fs-t);margin-top:2px}
.page-h .grow{flex:1;min-width:200px}
.page-h .btns{flex:none}
.grid{display:grid;gap:16px}
.grid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.c5{grid-template-columns:repeat(5,minmax(0,1fr))}
.grid.c21{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.grid.c12{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}.grid.c31{grid-template-columns:minmax(0,3fr) minmax(0,1fr)}
@media (max-width:1100px){.grid.c4,.grid.c5{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.c3{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.c21,.grid.c12,.grid.c31{grid-template-columns:1fr}}
@media (max-width:640px){.grid.c2,.grid.c3,.grid.c4,.grid.c5{grid-template-columns:1fr}}
.two{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:start}
@media (max-width:1100px){.two{grid-template-columns:1fr}}
.props{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:var(--fs-t)}
.props dt{color:var(--text-3);white-space:nowrap}.props dd{margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis}
.divider{height:1px;background:var(--border);margin:16px 0}
.empty{padding:40px 20px;text-align:center;color:var(--text-3);font-size:var(--fs-t);display:flex;flex-direction:column;align-items:center;gap:8px}
.empty .ic{width:28px;height:28px;color:var(--border-2)}
.note{padding:10px 12px;border-radius:var(--r-m);background:var(--surface-2);font-size:var(--fs-t);color:var(--text-2);display:flex;gap:10px;align-items:flex-start}
.note .ic{flex:none;margin-top:2px}
.note.ai{background:var(--ai-soft);color:var(--text)} .note.ai .ic{color:var(--ai)}
.note.warn{background:var(--warn-soft);color:var(--text)} .note.warn .ic{color:var(--warn)}
.note.bad{background:var(--bad-soft);color:var(--text)} .note.bad .ic{color:var(--bad)}
.note.ok{background:var(--ok-soft);color:var(--text)} .note.ok .ic{color:var(--ok)}
/* ---------- KPI tiles ---------- */
.kpi{padding:16px 18px;display:flex;flex-direction:column;gap:6px;min-width:0}
.kpi .l{font-size:var(--fs-sm);color:var(--text-2);font-weight:500;display:flex;align-items:center;gap:6px}
.kpi .v{font-size:var(--fs-xl);line-height:30px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}
.kpi .v.hero{font-size:var(--fs-2xl);line-height:38px}
.kpi .v.sm{font-size:var(--fs-lg);line-height:26px}
.kpi .d{font-size:var(--fs-sm);color:var(--text-3);display:flex;align-items:center;gap:6px;min-height:16px}
.kpi .d b{font-weight:600}
.kpi .spark{margin-top:4px;height:28px}
.kpi.bad .v{color:var(--bad)} .kpi.warn .v{color:var(--warn)} .kpi.ok .v{color:var(--ok)}
/* ---------- progress ---------- */
.bar{height:6px;border-radius:999px;background:var(--surface-3);overflow:hidden;position:relative}
.bar>i{display:block;height:100%;border-radius:999px;background:var(--accent);transform-origin:left;animation:grow-x 600ms var(--ease-out) both}
.bar.ok>i{background:var(--ok)} .bar.warn>i{background:var(--warn)} .bar.bad>i{background:var(--bad)} .bar.ai>i{background:var(--ai)} .bar.thin{height:4px} .bar.thick{height:8px}
.bar .mark{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--text);opacity:.5}
.ring{width:36px;height:36px;position:relative;flex:none}
.ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:3.5}
.ring .bgc{stroke:var(--surface-3)} .ring .fgc{stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset 600ms var(--ease-out)}
.ring.ok .fgc{stroke:var(--ok)} .ring.warn .fgc{stroke:var(--warn)} .ring.bad .fgc{stroke:var(--bad)}
.ring .t{position:absolute;inset:0;display:grid;place-items:center;font-size:9px;letter-spacing:-.02em;font-weight:600;font-variant-numeric:tabular-nums}
.ring.lg{width:56px;height:56px}.ring.lg .t{font-size:13px}
.dots{display:inline-flex;gap:3px;align-items:center}
.dots i{width:7px;height:7px;border-radius:50%;background:var(--surface-3);border:1px solid var(--border-2)}
.dots i.ok{background:var(--ok);border-color:var(--ok)} .dots i.cur{background:var(--surface);border-color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent)} .dots i.bad{background:var(--bad);border-color:var(--bad)} .dots i.skip{background:var(--border-2)}
/* ---------- tables ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-t)}
.tbl th{text-align:left;font-weight:500;font-size:var(--fs-sm);color:var(--text-3);padding:0 10px;height:34px;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;background:var(--surface);z-index:1}
.tbl td{padding:0 10px;height:40px;border-bottom:1px solid var(--border);vertical-align:middle;max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tbl.compact td{height:34px}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr{transition:background var(--dur-i)}
.tbl tbody tr.click{cursor:pointer} .tbl tbody tr.click:hover{background:var(--surface-2)}
.tbl tbody tr.sel{background:var(--accent-soft)}
.tbl tbody tr.dim{opacity:.55}
.tbl th.r,.tbl td.r{text-align:right;font-variant-numeric:tabular-nums}
.tbl th.c,.tbl td.c{text-align:center}
.tbl td.strong{font-weight:500}
.tbl tfoot td{font-weight:600;background:var(--surface-2);border-top:1px solid var(--border-2);height:36px;position:sticky;bottom:0}
.tbl .sub{display:block;font-size:var(--fs-xs);color:var(--text-3);line-height:14px}
.tbl td .act{opacity:0;transition:opacity var(--dur-f)} .tbl tr:hover td .act{opacity:1}
.tbl th.w1{width:1%} .tbl td.w1{width:1%}
.tbl-wrap{overflow:auto;border:1px solid var(--border);border-radius:var(--r-m);background:var(--surface)}
.tbl-wrap .tbl th{top:0}
.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.toolbar .grow{flex:1}
.filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
/* tabs */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:20px;overflow:auto}
.tabs a,.tabs button{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 12px;font-size:var(--fs-t);font-weight:500;color:var(--text-2);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color var(--dur-f)}
.tabs a:hover,.tabs button:hover{color:var(--text)}
.tabs .on{color:var(--text);border-bottom-color:var(--text)}
.tabs .n{font-size:var(--fs-xs);font-weight:600;padding:1px 6px;border-radius:999px;background:var(--surface-3);color:var(--text-2)}
.tabs .on .n{background:var(--accent-soft);color:var(--accent)}
.tabs .n.warn{background:var(--warn-soft);color:var(--warn)}
/* ---------- stepper (approval chain) ---------- */
.stepper{display:flex;flex-direction:column;gap:0}
.step{display:flex;gap:12px;position:relative;padding-bottom:14px}
.step:last-child{padding-bottom:0}
.step::before{content:"";position:absolute;left:13px;top:30px;bottom:-2px;width:2px;background:var(--border)}
.step:last-child::before{display:none}
.step.ok::before{background:var(--ok)}
.step.cur::before{background:repeating-linear-gradient(to bottom,var(--border-2) 0 4px,transparent 4px 8px)}
.step .av{z-index:1}
.step.fut{opacity:.5}
.step .sb{flex:1;min-width:0;padding-top:4px}
.step .sn{font-size:var(--fs-t);font-weight:500;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.step .sr{font-size:var(--fs-xs);color:var(--text-3)}
.step .sq{margin-top:6px;padding:6px 10px;border-radius:var(--r-s);background:var(--bad-soft);font-size:var(--fs-sm);color:var(--text)}
.step .st{font-size:var(--fs-sm)}
.stepper-h{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-size:var(--fs-t)}
.stepper-h .segs{display:flex;gap:3px;flex:1}.stepper-h .segs i{flex:1;height:4px;border-radius:2px;background:var(--surface-3)}.stepper-h .segs i.ok{background:var(--ok)}.stepper-h .segs i.cur{background:var(--accent)}.stepper-h .segs i.bad{background:var(--bad)}
/* ---------- inbox rows ---------- */
.inbox{display:flex;flex-direction:column}
.irow{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:background var(--dur-i);position:relative}
.irow:hover{background:var(--surface-2)}
.irow.focus{background:var(--surface-2);box-shadow:inset 3px 0 0 var(--accent)}
.irow.unread .it{font-weight:600}
.irow.unread::after{content:"";position:absolute;left:6px;top:50%;width:6px;height:6px;border-radius:50%;background:var(--accent);transform:translateY(-50%)}
.irow .ib{min-width:0}
.irow .it{font-size:var(--fs-t);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.irow .is{font-size:var(--fs-sm);color:var(--text-3);display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:2px}
.irow .ia{display:flex;gap:6px;align-items:center}
.irow.done{animation:collapse var(--dur-b) var(--ease-exit) forwards}
@keyframes collapse{to{opacity:0;transform:translateX(24px);height:0;padding-top:0;padding-bottom:0;overflow:hidden}}
.kind{width:32px;height:32px;border-radius:var(--r-m);display:grid;place-items:center;background:var(--surface-3);color:var(--text-2);flex:none}
.kind.apstiprinajums{background:var(--accent-soft);color:var(--accent)} .kind.ai{background:var(--ai-soft);color:var(--ai)} .kind.maksajums{background:var(--ok-soft);color:var(--ok)} .kind.ligums{background:var(--info-soft);color:var(--info)} .kind.kavejums{background:var(--warn-soft);color:var(--warn)} .kind.fails{background:var(--surface-3)} .kind.rekins{background:var(--accent-soft);color:var(--accent)} .kind.bad{background:var(--bad-soft);color:var(--bad)}
/* ---------- feed / timeline ---------- */
.feed{display:flex;flex-direction:column}
.fi{display:grid;grid-template-columns:auto 1fr auto;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);align-items:start;font-size:var(--fs-t)}
.fi:last-child{border-bottom:0}
.fi .ft{color:var(--text-3);font-size:var(--fs-xs);white-space:nowrap;padding-top:3px}
.fi .fb{min-width:0}.fi .fb b{font-weight:500}
.fi .fs{font-size:var(--fs-xs);color:var(--text-3);margin-top:2px}
.fday{font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);padding:16px 0 6px}
/* ---------- project cards ---------- */
.pcard{padding:16px 18px;display:flex;flex-direction:column;gap:12px;position:relative}
.pcard .ph{display:flex;align-items:flex-start;gap:12px}
.pcard .pid{font-family:var(--mono);font-size:var(--fs-xs);color:var(--text-3)}
.pcard .pn{font-weight:600;font-size:var(--fs-b);line-height:20px}
.pcard .pa{font-size:var(--fs-sm);color:var(--text-3)}
.pcard .pm{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pcard .pm .l{font-size:var(--fs-xs);color:var(--text-3)}.pcard .pm .v{font-size:var(--fs-t);font-weight:600;font-variant-numeric:tabular-nums}
.pcard .pf{display:flex;align-items:center;gap:10px;font-size:var(--fs-xs);color:var(--text-3)}
.pcard .pf .grow{flex:1}
.profit{display:flex;flex-direction:column;gap:4px}
.profit .pb{height:8px;border-radius:4px;background:var(--surface-3);overflow:hidden;display:flex}
.profit .pb i{height:100%;display:block;transform-origin:left;animation:grow-x 600ms var(--ease-out) both}
.profit .pb .cost{background:var(--chart-2)} .profit .pb .marg{background:var(--ok)} .profit .pb .marg.bad{background:var(--bad)} .profit .pb .marg.warn{background:var(--warn)}
.profit .pl{display:flex;justify-content:space-between;font-size:var(--fs-xs);color:var(--text-3)}
/* ---------- gantt ---------- */
.gantt{display:grid;grid-template-columns:200px 1fr;border:1px solid var(--border);border-radius:var(--r-m);overflow:hidden;background:var(--surface);font-size:var(--fs-sm)}
.gantt .gh{display:contents}
.gantt .gl{padding:0 12px;height:36px;display:flex;align-items:center;border-bottom:1px solid var(--border);gap:8px;min-width:0;background:var(--surface);position:sticky;left:0;z-index:1}
.gantt .gl .n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.gantt .gl.h{color:var(--text-3);font-weight:500;background:var(--surface-2)}
.gantt .gt{position:relative;height:36px;border-bottom:1px solid var(--border);overflow:hidden}
.gantt .gt.h{background:var(--surface-2);display:flex;color:var(--text-3)}
.gantt .gt.h span{flex:1;padding:0 6px;display:flex;align-items:center;border-left:1px solid var(--border);white-space:nowrap;overflow:hidden;font-size:var(--fs-xs)}
.gantt .gt.h span:first-child{border-left:0}
.gantt .gbar{position:absolute;top:9px;height:18px;border-radius:4px;background:var(--accent-soft);overflow:hidden;transform-origin:left;animation:grow-x 500ms var(--ease-out) both;cursor:pointer}
.gantt .gbar i{position:absolute;inset:0;width:var(--p);background:var(--accent);opacity:.9}
.gantt .gbar.done i{background:var(--ok)} .gantt .gbar.late{background:var(--bad-soft)} .gantt .gbar.late i{background:var(--bad)}
.gantt .gbar span{position:absolute;left:6px;top:0;line-height:18px;font-size:10px;font-weight:600;color:#fff;mix-blend-mode:difference;white-space:nowrap}
.gantt .gbase{position:absolute;top:29px;height:3px;border-radius:2px;background:var(--border-2)}
.gantt .gtoday{position:absolute;top:0;bottom:0;width:1px;background:var(--bad);z-index:2}
.gantt .gt.h .gtoday::after{content:"šodien";position:absolute;top:2px;left:4px;font-size:9px;color:var(--bad);font-weight:600}
.gantt .glate{position:absolute;top:11px;font-size:10px;color:var(--bad);font-weight:600;white-space:nowrap}
.gantt .gms{position:absolute;top:12px;width:12px;height:12px;background:var(--text);transform:rotate(45deg);border-radius:2px}
/* ---------- checklist ---------- */
.cl{display:flex;flex-direction:column}
.cl .ph{display:flex;align-items:center;gap:10px;padding:10px 0 6px;font-weight:600;font-size:var(--fs-t)}
.cl .ph .n{font-size:var(--fs-xs);color:var(--text-3);font-weight:500}
.cl .ci{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:var(--fs-t);border-bottom:1px solid var(--border)}
.cl .ci:last-child{border-bottom:0}
.cl .ci.done{color:var(--text-3);text-decoration:line-through;text-decoration-color:var(--border-2)}
.cl .ci .m{margin-left:auto;font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap}
.cl .ci.late .m{color:var(--bad);font-weight:500}
/* ---------- calendar strip (who's out) ---------- */
.cal{display:grid;grid-template-columns:140px repeat(var(--days,14),1fr);font-size:var(--fs-xs);border:1px solid var(--border);border-radius:var(--r-m);overflow:hidden;background:var(--surface)}
.cal>div{height:30px;display:flex;align-items:center;border-bottom:1px solid var(--border);border-left:1px solid var(--hair);padding:0 2px;justify-content:center}
.cal>.n{justify-content:flex-start;padding:0 10px;font-size:var(--fs-sm);border-left:0;gap:6px;background:var(--surface)}
.cal>.h{background:var(--surface-2);color:var(--text-3);font-weight:500;height:28px}
.cal>.we{background:var(--surface-2)}
.cal>.td{box-shadow:inset 0 0 0 1px var(--accent)}
.cal>.d{position:relative}
.cal .blk{position:absolute;inset:6px 1px;border-radius:3px;background:var(--ok-soft);border:1px solid var(--ok)}
.cal .blk.wait{background:var(--warn-soft);border-color:var(--warn);border-style:dashed}
.cal .blk.sick{background:var(--bad-soft);border-color:var(--bad)}
.cal .blk.trip{background:var(--info-soft);border-color:var(--info)}
/* ---------- charts ---------- */
.chart{width:100%;height:auto;display:block;font-family:var(--font)}
.chart .axis{font-size:11px;fill:var(--text-3)}
.chart .grid{stroke:var(--border);stroke-width:1}
.chart .l1{stroke:var(--chart-1);stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:var(--len);stroke-dashoffset:0;animation:draw 700ms var(--ease-out) both}
.chart .l2{stroke:var(--chart-2);stroke-width:1.5;fill:none;stroke-dasharray:4 4}
.chart .a1{fill:var(--chart-1);opacity:.08}
.chart .b1{fill:var(--chart-1);transform-origin:bottom;animation:grow-y 500ms var(--ease-out) both} .chart .b2{fill:var(--chart-2);transform-origin:bottom;animation:grow-y 500ms var(--ease-out) both} .chart .b3{fill:var(--chart-3)}
.chart .lbl{font-size:11px;fill:var(--text-2);font-weight:500}
.chart .dot{fill:var(--surface);stroke:var(--chart-1);stroke-width:2}
.legend{display:flex;gap:16px;font-size:var(--fs-xs);color:var(--text-2);flex-wrap:wrap}
.legend i{display:inline-block;width:10px;height:3px;border-radius:2px;background:var(--chart-1);vertical-align:middle;margin-right:5px}
.legend i.c2{background:var(--chart-2)} .legend i.c3{background:var(--chart-3)} .legend i.ok{background:var(--ok)} .legend i.bad{background:var(--bad)} .legend i.warn{background:var(--warn)}
.wf{display:flex;flex-direction:column;gap:8px}
.wf .wr{display:grid;grid-template-columns:200px 1fr 110px;gap:12px;align-items:center;font-size:var(--fs-t)}
.wf .wr .wb{height:14px;position:relative}
.wf .wr .wb i{position:absolute;top:0;height:100%;border-radius:3px;background:var(--chart-1);transform-origin:left;animation:grow-x 600ms var(--ease-out) both}
.wf .wr .wb i.neg{background:var(--chart-2)} .wf .wr .wb i.ok{background:var(--ok)} .wf .wr .wb i.bad{background:var(--bad)}
.wf .wr .wv{text-align:right;font-variant-numeric:tabular-nums;font-weight:500}
.wf .wr.total{border-top:1px solid var(--border);padding-top:8px;font-weight:600}
/* ---------- misc ---------- */
.skeleton{background:linear-gradient(90deg,var(--surface-3) 25%,var(--surface-2) 50%,var(--surface-3) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:4px;color:transparent!important}
.aishim{background:linear-gradient(90deg,var(--ai-soft) 25%,var(--surface) 50%,var(--ai-soft) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}
.menu{position:fixed;z-index:70;min-width:200px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);box-shadow:var(--sh-pop);padding:4px;animation:pop var(--dur-f) var(--ease-out) both}
.menu .mi{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--r-s);font-size:var(--fs-t);cursor:pointer;white-space:nowrap}
.menu .mi:hover{background:var(--surface-2)}
.menu .mi .ic{color:var(--text-3)}
.menu .mi.danger{color:var(--bad)} .menu .mi.danger .ic{color:var(--bad)}
.menu .ms{height:1px;background:var(--border);margin:4px 0}
.menu .mt{font-size:var(--fs-xs);color:var(--text-3);padding:6px 10px 2px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.pdfbox{border:1px solid var(--border);border-radius:var(--r-m);background:var(--surface-2);min-height:420px;display:flex;flex-direction:column;overflow:hidden}
.pdfbox .pt{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);font-size:var(--fs-sm);color:var(--text-2);background:var(--surface)}
.pdfbox .pp{flex:1;margin:16px auto;width:min(100% - 32px,420px);background:#fff;color:#1C1917;box-shadow:0 2px 12px rgba(0,0,0,.12);padding:28px;font-size:11px;line-height:15px;border-radius:2px}
.pdfbox .pp h4{font-size:14px;margin:0 0 10px} .pdfbox .pp table{width:100%;border-collapse:collapse;margin-top:10px} .pdfbox .pp td,.pdfbox .pp th{padding:3px 4px;border-bottom:1px solid #eee;text-align:left} .pdfbox .pp td.r,.pdfbox .pp th.r{text-align:right}
.dz{border:1.5px dashed var(--border-2);border-radius:var(--r-m);padding:20px;text-align:center;color:var(--text-3);font-size:var(--fs-t);display:flex;flex-direction:column;align-items:center;gap:6px;transition:all var(--dur-f);cursor:pointer;background:var(--surface)}
.dz:hover,.dz.over{border-color:var(--ai);background:var(--ai-soft);color:var(--ai)}
.dz .ic{width:22px;height:22px}
.sticky-bar{position:sticky;bottom:-24px;margin:24px -32px -64px;padding:12px 32px;background:var(--surface);border-top:1px solid var(--border);display:flex;gap:8px;align-items:center;z-index:5}
.sticky-bar .grow{flex:1}
.hl{background:var(--warn-soft);border-radius:3px;padding:0 3px}
.pill-row{display:flex;gap:6px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:var(--fs-sm);font-weight:500;color:var(--text-2);cursor:pointer;transition:all var(--dur-f)}
.pill:hover{border-color:var(--border-2);color:var(--text)}
.pill.on{background:var(--text);border-color:var(--text);color:var(--bg)}
.pill .n{opacity:.7}
.kbd-sheet{display:grid;grid-template-columns:1fr 1fr;gap:6px 24px;font-size:var(--fs-t)}
.kbd-sheet div{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid var(--border)}
.shortcut-hint{position:fixed;bottom:16px;right:16px;font-size:var(--fs-xs);color:var(--text-3);display:flex;gap:10px;z-index:20;pointer-events:none}
@media (max-width:900px){.shortcut-hint{display:none}.two{grid-template-columns:1fr}.sticky-bar{margin:24px -16px -96px;padding:12px 16px;bottom:-16px}}
