/* dashboard shell */
body.app{display:flex;min-height:100vh}
.side{width:232px;flex:none;border-right:1px solid var(--line);padding:18px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;background:var(--bg)}
.side .brand{padding:6px 10px;font-size:22px}
.menu{display:flex;flex-direction:column;gap:2px}.menu a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;font-size:14px;font-weight:500;color:var(--ink-50)}.menu a:hover{background:var(--hover);color:var(--ink)}.menu a.on{background:var(--sel);color:var(--ink)}.menu .ic{width:18px;text-align:center;opacity:.8}
.side-foot{margin-top:auto;padding:10px;border-top:1px solid var(--line)}.side-foot .mono{word-break:break-all;margin-top:2px}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.bar{height:64px;display:flex;align-items:center;gap:12px;padding:0 28px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg);z-index:5}.bar .title{font:600 18px var(--sans);letter-spacing:-.01em}.grow{flex:1}
.bar input{width:280px;height:36px}
.content{padding:24px 28px 64px}
/* file-manager style table */
.table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}.table col.c-name{width:29%}.table col.c-date{width:14%}.table col.c-len{width:9%}.table col.c-spk{width:24%}.table col.c-status{width:11%}.table col.c-act{width:13%}.table td{overflow:hidden}.table th{text-align:left;font-size:12px;font-weight:500;color:var(--ink-50);padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.table td{padding:0 12px;height:80px;border-bottom:1px solid var(--line);vertical-align:middle;font-size:14px;white-space:nowrap}.table tr:hover td{background:var(--hover)}.table tr{cursor:pointer}
.name{display:flex;align-items:center;gap:12px;min-width:0}.name>div{min-width:0}.fic{width:36px;height:36px;border-radius:10px;background:var(--sel);display:flex;align-items:center;justify-content:center;font-size:16px;flex:none}.name b{font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.name .small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;line-height:1.35}
.table .people{display:flex;gap:4px;flex-wrap:wrap}.table .people .chip.sm{height:22px;font-size:12px;padding:0 8px 0 6px;flex:none;gap:5px;background:transparent;border:1px solid var(--line-2)}.chip.grey{color:var(--ink-50)}.people{display:flex;gap:4px;flex-wrap:wrap}
.acts{display:flex;gap:6px;justify-content:flex-end}.acts .btn{height:32px;padding:0 10px;font-size:13px;min-width:0}@media(max-width:1200px){.table col.c-date{width:0}.table .c-date-cell{display:none}}
.tnum{font-variant-numeric:tabular-nums;color:var(--ink-50);white-space:nowrap}
.empty{padding:40px;text-align:center;color:var(--ink-50)}
/* settings */
.set{max-width:960px;display:flex;flex-direction:column;gap:12px}.set .card{padding:20px}.set h3{margin-bottom:10px}.kv{display:grid;grid-template-columns:180px 1fr;gap:8px 16px;font-size:14px}.kv .k{color:var(--ink-50)}
.spk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}.spk{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card)}.spk i{width:10px;height:10px;border-radius:50%;flex:none}.spk input{flex:1;height:32px;min-width:0}
@media(max-width:1100px){.table .hide{display:none}.table col.c-name{width:60%}.table col.c-len{width:14%}.table col.c-act{width:26%}}@media(max-width:800px){.side{display:none}.bar{padding:0 16px}.content{padding:16px}}
/* spacing scale: 4/8/12/16/24/32 — cards 20, table rows 12, content 24 */
.chip .dot,.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.big{width:14px;height:14px}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.person{padding:20px}.phead{display:flex;align-items:center;gap:12px}.pname{flex:1;height:36px;font-weight:600;min-width:0}
.people a.chip:hover{background:var(--hover)}
.avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;color:#fff;flex:none;letter-spacing:.02em}
.nm{cursor:text;outline:none;padding:2px 6px;margin-left:-6px;border-radius:6px;font-weight:600;min-width:3ch;display:inline-block}.nm:hover{background:var(--hover)}.nm:focus{background:var(--sel);box-shadow:0 0 0 2px var(--accent) inset}
.table td.wrap{white-space:normal}.table td.wrap .people{flex-wrap:wrap;max-height:52px;overflow:hidden}
button.avatar{border:0;cursor:pointer;font:inherit;font-weight:600;font-size:13px;color:#fff;position:relative}button.avatar:hover{filter:brightness(1.15)}button.avatar.on::after{content:"";position:absolute;inset:-4px;border:2px solid var(--ink);border-radius:50%}
.chip.occ{padding:0 10px 0 4px;gap:6px}.chip.occ .play{width:18px;height:18px;border-radius:50%;border:0;background:var(--ink);color:var(--bg);font-size:9px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0 0 0 1px}.chip.occ .play.on{background:var(--accent);color:#fff}.chip.occ a:hover{text-decoration:underline}

.faces{display:flex;align-items:center}.face{width:28px;height:28px;border-radius:50%;border:2px solid var(--bg);margin-left:-8px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff;letter-spacing:.02em;cursor:default}.face:first-child{margin-left:0}.face.more{background:var(--sel);color:var(--ink)}
/* proactivity */
.sec{margin:28px 0 12px}.tabs a{padding:6px 12px;font-size:13px}
.pipe{display:flex;align-items:stretch;gap:10px;padding:18px 20px;margin-bottom:8px;overflow-x:auto}.pipe .stage{flex:1;min-width:130px}.pipe .stage .k{font-size:12px;color:var(--ink-50);font-weight:500}.pipe .stage .v{font:500 26px/1.1 var(--display);letter-spacing:-.03em;margin:4px 0 2px}.pipe .arr{color:var(--ink-30);font-size:20px;display:flex;align-items:center}.pipe .sum{border-left:1px solid var(--line);padding-left:14px}.pipe .sum .v{color:var(--accent)}
.table.static tr{cursor:default}.table.static td{height:auto;padding:10px 12px;white-space:normal;vertical-align:top}.table.static td .small{display:block}.table tr.muted td{opacity:.55}
.table.dense td,.table.dense th{padding:3px 8px;font-size:12px;height:auto}.scroll{overflow:auto;max-height:520px}td.hi{color:var(--accent);font-weight:600}
.pill.v-hit{background:var(--ok)}.pill.v-late{background:var(--warn);color:#1a1400}.pill.v-false{background:var(--bad)}.pill.v-repeat{background:#7b4fd6}.pill.v-early{background:#0aa3b5}.pill.v-silent{background:var(--sel);color:var(--ink-50)}
.chip.kat{height:22px;font-size:12px;background:var(--sel)}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}.tile{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}.tile .n{font:500 26px/1.1 var(--display);letter-spacing:-.03em}.tile .l{font-size:12px;color:var(--ink-50);margin-top:4px;font-weight:500}.tile.wide{grid-column:span 2}.tile .chip{margin:4px 6px 0 0}
.phead2{display:flex;align-items:center;gap:8px;margin-bottom:16px}.phead2 .btn{height:32px;padding:0 12px;font-size:13px;margin-left:6px}
.tlc{padding:20px}.tl{width:100%;display:block}.tl .ax{stroke:var(--line-2)}.tl .axt{fill:var(--ink-50);font-size:10px;text-anchor:middle;font-family:var(--mono)}.tl .rl{fill:var(--ink-50);font-size:12px;text-anchor:end;font-weight:500}
.tl .need rect{fill:var(--accent);opacity:.28}.tl .need.short rect{fill:var(--bad);opacity:.4}.tl .nl{fill:var(--ink);font-size:11px;font-weight:500}.tl .tick{fill:var(--ink)}.tl .ml{stroke:var(--line)}
.tl .mk{stroke:var(--bg);stroke-width:1.5}.tl .mk.v-hit{fill:var(--ok)}.tl .mk.v-late{fill:var(--warn)}.tl .mk.v-false{fill:var(--bad)}.tl .mk.v-repeat{fill:#7b4fd6}.tl .mk.v-early{fill:#0aa3b5}.tl .mk.silent{fill:var(--ink-30);stroke:none}.tl a:hover .mk{stroke:var(--ink)}
.legend2{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:14px;font-size:12px;color:var(--ink-50)}.legend2 span{display:inline-flex;align-items:center;gap:6px}.legend2 i{display:inline-block;width:12px;height:12px;border-radius:50%}.legend2 i.need{border-radius:3px;width:18px;background:var(--accent);opacity:.5}.legend2 i.need.short{background:var(--bad)}.legend2 i.gate{border-radius:2px;width:18px;background:var(--accent)}.legend2 i.tri{width:0;height:0;border-radius:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid var(--ink)}.legend2 i.v-hit{background:var(--ok)}.legend2 i.v-late{background:var(--warn)}.legend2 i.v-false{background:var(--bad)}.legend2 i.v-repeat{background:#7b4fd6}.legend2 i.silent{width:2px;height:12px;border-radius:0;background:var(--ink-30)}
.ngrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}.need{padding:18px}.need .nh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.need .ev{font-size:14px;color:var(--ink-50);margin-bottom:12px;line-height:1.4}.need .row{display:flex;align-items:center;gap:8px;padding:5px 0;border-top:1px solid var(--line);font-size:13px}.need .mn{width:150px;font-weight:600;flex:none}
.lat{min-width:220px}.lbar{position:relative;height:8px;background:var(--sel);border-radius:4px;overflow:hidden;margin-bottom:4px}.lbar i{position:absolute;left:0;top:0;height:100%;background:var(--accent);border-radius:4px}.lbar i.p90{background:var(--accent);opacity:.45}.lbar i.mx{background:var(--accent);opacity:.2}
.qrow{display:grid;grid-template-columns:150px 1fr;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:13px}.pre{white-space:pre-wrap;font-family:var(--mono);font-size:12px;line-height:1.5;color:var(--ink-50);background:var(--bg);border-radius:10px;padding:14px;max-height:420px;overflow:auto;margin:0}
.tgrid{display:grid;grid-template-columns:1fr 360px;gap:12px;align-items:start}@media(max-width:1000px){.tgrid{grid-template-columns:1fr}.tile.wide{grid-column:span 1}}
.ctx{padding:18px;max-height:640px;overflow:auto;position:relative}.ctx .ch{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:12px}.ctx .ln{display:grid;grid-template-columns:48px 110px 1fr;gap:10px;padding:5px 8px;border-radius:8px;font-size:13.5px;line-height:1.4}.ctx .ln .t{font-family:var(--mono);font-size:11px;color:var(--ink-30);padding-top:3px}.ctx .ln .who{display:inline-flex;align-items:center;gap:6px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ctx .ln .who i{width:8px;height:8px;border-radius:50%;flex:none}.ctx .ln.win{background:rgba(1,149,255,.10)}.ctx .ln.after{opacity:.38}
.gatep{padding:18px}.gp{padding:8px 0;border-top:1px solid var(--line)}.gp .gl{font-size:13px;font-weight:500;margin-bottom:4px}.gb{display:grid;grid-template-columns:70px 1fr 36px;gap:8px;align-items:center;padding:2px 0}.gb .bar{height:7px;background:var(--sel);border-radius:4px;overflow:hidden}.gb .bar i{display:block;height:100%;background:var(--accent)}.gb .bar.sup i{background:var(--warn)}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.mcard{padding:16px}.mh{display:flex;flex-direction:column;margin-bottom:12px}.mh .small{display:block}
.phone{background:#1f1f23;border:1px solid var(--line-2);border-radius:14px;padding:12px 14px;margin-bottom:10px;box-shadow:0 8px 24px -16px rgba(0,0,0,.8)}.phone .ph{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-50);margin-bottom:6px}.phone .pt{font-weight:600;font-size:14px}.phone .pl{font-size:13px;color:var(--ink-50);margin-top:2px}.phone .pa{display:inline-block;margin-top:8px;font-size:12px;font-weight:500;padding:4px 10px;border-radius:999px;background:var(--sel)}.phone.silent{background:transparent;border-style:dashed}.phone.silent .pt{color:var(--ink-30);font-weight:500}
.mm{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.why{font-size:13px;color:var(--ink-50);line-height:1.4;margin:6px 0 8px}.mcard details summary{cursor:pointer}.mcard .pre{max-height:220px;margin-top:6px}

.spk-table td{height:64px;padding:0 12px}.spk-table .avatar{width:32px;height:32px;font-size:12px}
.spk-table .occ-cell .people{flex-wrap:nowrap;overflow:hidden;gap:6px}.chip.occ{height:26px;font-size:12.5px;flex:none}
.table.pro td:first-child{min-width:340px}.tl .nl.dim{fill:var(--ink-50)}
.tip{position:fixed;z-index:40;width:300px;background:#1b1b1e;border:1px solid var(--line-2);border-radius:14px;padding:12px 14px;box-shadow:0 24px 60px -20px rgba(0,0,0,.9);pointer-events:none}.tip .th{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;color:var(--ink-50);margin-bottom:8px}.tip .th b{color:var(--ink);font-size:13px}.tip .phone{margin-bottom:8px;box-shadow:none}.tip .tf{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}.tip .tc{margin-top:6px;color:var(--ink-30)}
.tl a{cursor:pointer}.tl a:hover .mk{stroke:var(--ink);stroke-width:2}.tl a:hover .mk.silent{fill:var(--ink-50)}.tl .mk.silent{opacity:.9}
.mcard:target{box-shadow:0 0 0 2px var(--accent) inset}
.tip .tr{display:flex;align-items:center;gap:8px;font-size:12px;padding:3px 0;border-top:1px solid var(--line)}.tip .tr span:first-child{width:120px;font-weight:600}.tip .gb{grid-template-columns:110px 1fr 32px}
.tl a:hover .need rect{opacity:.6}.tl a:hover .heat{stroke:var(--ink);stroke-width:1}.tl a[href="#"]{cursor:default}.need:target{box-shadow:0 0 0 2px var(--accent) inset}
.rich{margin:8px 0 6px;border-top:1px solid var(--line)}.rs{display:grid;grid-template-columns:96px 1fr;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px;line-height:1.45}.rk{color:var(--ink-50);font-size:12px;font-weight:500;padding-top:1px}.rv{min-width:0}.alt{padding:3px 0}.alt b{display:block;font-size:13px}.alt .small{display:block}.chip.opt{height:22px;font-size:12px;margin:0 4px 4px 0}
.phone .pas{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.phone .pas .pa{margin-top:0}
/* re-applied from 20fb7d1: uniform svg scaling, sticky context header */
.tl{height:auto}.tl .axt{font-size:9px}.tl .rl{font-size:11px}.tl .nl{font-size:10px}
.ctx .ch{position:sticky;top:-18px;background:var(--card);padding:6px 0 8px;z-index:2;margin:-6px 0 8px}
