@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-thai-thai-400-normal-Bt1rR4gi.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-thai-400-normal-DKc8V4lk.woff) format("woff")}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-thai-thai-500-normal-BrMc1XKn.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-thai-500-normal-BoHUoq0p.woff) format("woff")}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-thai-thai-600-normal-DvfsyWAn.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-thai-600-normal-BOwfviun.woff) format("woff")}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-thai-thai-700-normal-0moayseG.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-thai-700-normal-Bo0ALcDh.woff) format("woff")}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-thai-latin-400-normal-CwmoKdEh.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-400-normal-YXrLwNa7.woff) format("woff")}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-thai-latin-500-normal-DQcnnbdd.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-500-normal-h5t7erDE.woff) format("woff")}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-thai-latin-600-normal-BR-dhaTH.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-600-normal-P_JjY83V.woff) format("woff")}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-thai-latin-700-normal-Ct-BCS9V.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-700-normal-SmVfMUPf.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}:root,:root[data-skin=nyx]{--ground: #ffffff;--work-ground: #f4f7fb;--surface: #ffffff;--surface-2: #f7fafa;--surface-3: #eef4f4;--ink: #12232e;--ink-muted: #52666f;--ink-subtle: #7f9099;--line: #dde5e5;--line-soft: #ebf1f1;--line-strong: #c0cfd3;--brand: #3b82c4;--brand-strong: #2f6aa3;--brand-hover: #26578a;--brand-ink: #ffffff;--brand-soft: #e3eef8;--brand-fill: linear-gradient(135deg, #1d4e7c, #3a78ae);--brand-fill-hover: linear-gradient(135deg, #17405f, #2f6795);--brand-edge: inset 0 1px 0 rgba(255, 255, 255, .3);--gold-fill: linear-gradient(140deg, #8d99a8 0%, #eef2f6 42%, #b9c3cf 72%, #8f9aa8 100%);--gold-ink: #0f2a4a;--gold-edge: inset 0 1px 0 rgba(255, 255, 255, .75), inset 0 -1px 0 rgba(0, 0, 0, .18);--gold-soft: linear-gradient(180deg, #fdf7e6 0%, #f5e9c6 100%);--gold-soft-line: #e8d6a6;--gold-soft-edge: inset 0 1px 0 rgba(255, 255, 255, .8);--silver-fill: linear-gradient(160deg, #ffffff 0%, #eef1f4 55%, #e6eaee 100%);--silver-line: #d3dade;--silver-edge: inset 0 1px 0 rgba(255, 255, 255, .9);--accent: #0e76bd;--accent-strong: #0b5c93;--accent-soft: #e3eef8;--sidebar: #0f2a4a;--sidebar-ink: #ffffff;--sidebar-ink-dim: #b9cde0;--sidebar-active: #2f6aa3;--sidebar-active-fill: linear-gradient(135deg, #1d4e7c, #3a78ae);--sidebar-active-ink: #ffffff;--sidebar-mark: #c7d6e6;--sidebar-w: 216px;--ok: #12703d;--ok-bg: #e2f4e9;--warn: #8a5a00;--warn-bg: #fbf0da;--stop: #a8322a;--stop-bg: #fbe9e6;--none: #52666f;--none-bg: #eceff1;--info: #1a4a8a;--info-bg: #e3eef8;--r-sm: 6px;--r-md: 10px;--r-lg: 16px;--r-pill: 999px;--shadow-sm: 0 1px 2px rgba(15, 42, 74, .06);--shadow-md: 0 10px 30px -14px rgba(15, 42, 74, .26);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--chart-line: #0e76bd;--chart-fill: #2f8fd0;--font-sans: "IBM Plex Sans Thai", "Segoe UI", "Sarabun", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--fs-body: 14px;--fs-small: 12.5px;--fs-micro: 11.5px;--fs-h1: 20px;--fs-metric: 30px;--lh-body: 1.55;--row-pad-y: 10px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html{scrollbar-gutter:stable}body{font-family:var(--font-sans);background:var(--ground);color:var(--ink);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased}h1{font-size:var(--fs-h1);margin:0 0 var(--sp-1);font-weight:600}h2{font-size:16px;margin:0 0 var(--sp-3);font-weight:600}h3{font-size:var(--fs-body);margin:0 0 var(--sp-2);font-weight:600}a{color:var(--brand-hover)}.muted{color:var(--ink-muted)}.small{font-size:var(--fs-small)}.num{font-variant-numeric:tabular-nums}.subline{display:block;font-size:var(--fs-micro);font-weight:400;color:var(--ink-muted);margin-top:2px;line-height:1.4}td.subline,th.subline{display:table-cell;margin-top:0}code.mono{background:var(--info-bg);color:var(--info);border-radius:var(--r-sm);padding:1px 7px;font-family:var(--font-mono);font-size:var(--fs-small);white-space:nowrap}.clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.clamp3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.ellip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}button{font-family:inherit;cursor:pointer;border-radius:var(--r-md);border:1px solid transparent;font-size:var(--fs-body)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.btn-primary{background:var(--brand-fill);color:var(--brand-ink);padding:9px 16px;font-weight:600;box-shadow:var(--brand-edge),0 1px 3px #0f2a4a42}.btn-primary:hover{background:var(--brand-fill-hover)}.btn-primary:disabled{opacity:.55;cursor:default;box-shadow:none}.btn-ghost{background:var(--surface);border-color:var(--line-strong);color:var(--ink);padding:9px 16px;font-weight:500}.btn-ghost:hover{background:var(--surface-3);border-color:var(--brand)}.btn-ghost:disabled{opacity:.55;cursor:default}.btn-ghost:disabled:hover{background:var(--surface);border-color:var(--line-strong)}.btn-mini{background:var(--surface);border:1px solid var(--line-strong);color:var(--ink);padding:3px 10px;font-size:var(--fs-small);font-weight:500}.btn-mini:hover{background:var(--surface-3);border-color:var(--brand)}.btn-mini:disabled{opacity:.55;cursor:default}.btn-danger{background:var(--surface);border:1px solid var(--stop);color:var(--stop);padding:3px 10px;font-size:var(--fs-small);font-weight:500}.btn-danger:hover{background:var(--stop-bg)}.app-shell{min-height:100%;display:grid;grid-template-columns:calc(var(--sidebar-w) + var(--sp-5)) 1fr;background:#f4f7fb}.sidebar{background:var(--sidebar);color:var(--sidebar-ink);display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-4) var(--sp-3);position:sticky;top:var(--sp-3);margin:var(--sp-3);height:calc(100vh - var(--sp-5));overflow-y:auto;border-radius:22px;box-shadow:0 10px 30px -18px #0f2a4a8c}.sidebar-brand{display:flex;flex-direction:column;gap:7px;padding:0 0 var(--sp-5)}.brand-plate{padding:2px 2px 4px;display:flex;align-items:center;gap:11px}.logo-chip{display:inline-flex;filter:drop-shadow(0 0 1px rgba(255,255,255,.98)) drop-shadow(0 0 2px rgba(255,255,255,.92)) drop-shadow(0 0 3.5px rgba(255,255,255,.7))}.brand-word{font-weight:800;font-size:21px;letter-spacing:.04em;line-height:1;background:linear-gradient(140deg,#9fb0c2,#eef3f8 45%,#b9c6d4 75%,#93a3b5);-webkit-background-clip:text;background-clip:text;color:transparent}.brand-full{font-size:12px;line-height:1.35;letter-spacing:0;color:var(--sidebar-ink-dim);padding:0;white-space:nowrap;text-align:center}.sidebar-brand .name{font-weight:700;font-size:16px;letter-spacing:-.01em}.sidebar-brand .sub{font-size:var(--fs-micro);letter-spacing:.12em;font-weight:700;color:var(--sidebar-mark)}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{display:flex;align-items:center;gap:var(--sp-3);color:var(--sidebar-ink-dim);text-decoration:none;padding:11px var(--sp-3);border-radius:12px;font-size:14px;font-weight:500;white-space:nowrap}.sidebar nav a:hover{background:#ffffff1a;color:var(--sidebar-ink)}.sidebar nav a.active:hover{background:var(--sidebar-active-fill)}.sidebar nav a.active{background:var(--sidebar-active-fill);color:var(--sidebar-active-ink);font-weight:600;box-shadow:var(--brand-edge)}.sidebar nav a svg{flex:none}.sidebar-foot{margin-top:auto;padding-top:var(--sp-4)}.sidebar-sep{height:1px;background:var(--line);margin:var(--sp-3) var(--sp-2)}.main{display:flex;flex-direction:column;min-width:0;background:var(--work-ground)}.who-foot{display:flex;align-items:center;gap:9px;padding:8px 12px var(--sp-2);min-width:0}.who-name{font-size:13px;color:var(--sidebar-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.env-tag{display:inline-block;margin-left:6px;font-style:normal;font-size:var(--fs-micro);font-weight:700;letter-spacing:.05em;color:#ffd27a}.avatar{width:34px;height:34px;border-radius:var(--r-pill);flex:none;display:grid;place-items:center;font-weight:700;font-size:14px;background:var(--accent-soft);color:var(--accent-strong)}.avatar.lg{width:52px;height:52px;font-size:20px}.content{flex:1;padding:var(--sp-5);min-width:0}.page-head{display:flex;align-items:flex-start;gap:var(--sp-4);margin-bottom:var(--sp-3);flex-wrap:wrap}.page-head .grow{flex:1;min-width:200px}.page-head .head-title{flex:0 0 336px}@media(max-width:1200px){.page-head .head-title{flex:0 1 auto}}.statgroup{background:var(--sidebar);border-radius:18px;padding:5px;display:flex;flex:1 1 300px;min-width:0;box-shadow:0 10px 26px -16px #0f2a4a8c}.stat{display:flex;align-items:center;gap:9px;flex:1 1 0;min-width:0;padding:8px 12px;border:0;border-radius:14px;background:transparent;font:inherit;text-align:left;color:#fff;cursor:pointer}.stat+.stat{box-shadow:inset 1px 0 #ffffff21}.stat-ico{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:10px;background:#ffffff1f;box-shadow:inset 0 1px #ffffff38}.stat-txt{display:flex;align-items:baseline;gap:9px;min-width:0}.stat-lab{font-size:13px;color:#cddcec;white-space:nowrap}.stat b{font-size:20px;font-weight:700;line-height:1.15;font-variant-numeric:tabular-nums}.stat.t-ok{--stat-c: #74e0a4}.stat.t-warn{--stat-c: #ffd27a}.stat.t-stop{--stat-c: #ff9f93}.stat.t-none{--stat-c: #c6d3e2}.stat b,.stat .kpi-icon{color:var(--stat-c, #fff)}.stat:hover{background:#ffffff17}.stat.on{background:#ffffff29}.viewbar{margin-left:var(--sp-2)}.page-top{position:sticky;top:0;z-index:20;background:var(--work-ground);margin:calc(var(--sp-5) * -1) calc(var(--sp-5) * -1) var(--sp-3);padding:var(--sp-5) var(--sp-5) var(--sp-2);box-shadow:0 10px 20px -16px #0f2a4a8c}.page-top .period-bar{margin-bottom:0}@media(max-height:620px){body.fit-screen{overflow:auto}}@media(max-width:900px),(max-height:620px){.page-top{position:static;box-shadow:none;margin:0 0 var(--sp-3);padding:0}}.metric-name .subline{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.group-head{grid-column:1 / -1;display:flex;align-items:baseline;gap:var(--sp-2);flex-wrap:wrap;margin:var(--sp-3) 0 calc(var(--sp-2) * -1 + 2px);padding-bottom:4px;border-bottom:1px solid var(--line)}.group-head:first-child{margin-top:0}.group-head b{font-size:14.5px}.chip-soft{font-size:var(--fs-micro);background:var(--surface-3);color:var(--ink-muted);border-radius:var(--r-pill);padding:2px 9px;white-space:nowrap}.chip-soft.is-warn{background:var(--warn-bg, #fdf2df);color:var(--warn)}.metric-slot{min-width:0}.metric-slot>.metric{height:100%}.bars.is-dense{margin-top:var(--sp-3);gap:5px}.bars.is-dense .bar-row{grid-template-columns:82px minmax(0,1fr) 78px;gap:7px}.bars.is-dense .bar-name{font-size:12px}.bars.is-dense .bar-track{height:13px;border-radius:4px}.bars.is-dense .bar-val{font-size:12px}.bars.is-dense .bar-pct{margin-left:5px}.bars.is-dense .bars-overlay{left:89px;right:85px}.bars.is-dense .bars-target span{display:none}.metric-slot.d-1,.metric-slot.d-2,.metric-slot.d-3{border-left:3px solid var(--brand);border-radius:3px;padding-left:var(--sp-2)}.metric-slot.d-2{border-left-color:var(--brand-soft)}.metric-slot.d-3{border-left-color:var(--line-strong)}.metric.is-compact.d-1{margin-left:14px}.metric.is-compact.d-2{margin-left:28px}.metric.is-compact.d-3{margin-left:40px}.board{display:grid;grid-template-columns:336px minmax(0,1fr);gap:var(--sp-3);align-items:start;margin-bottom:var(--sp-3)}.metric-grid.is-col{grid-template-columns:1fr;margin-bottom:0;gap:var(--sp-2)}.metric.is-compact{padding:7px 11px;cursor:pointer}.metric.is-compact .metric-head{margin-bottom:0;gap:var(--sp-2)}.metric.is-compact .metric-head .subline{display:none}.metric.is-compact .metric-icon{width:30px;height:30px;border-radius:9px}.metric.is-compact .metric-icon svg{width:17px;height:17px}.metric.is-compact .metric-name .ellip{font-size:13.5px}.metric.is-compact .metric-value{font-size:18px}.metric.is-compact .metric-value.is-empty{font-size:14px}.metric.is-compact .cell-edit{padding:0}.metric.is-compact:hover{border-color:var(--brand)}.metric.is-compact:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.board-chart{position:sticky;top:var(--stick-top, 12px)}@media(max-width:1080px){.board{display:flex;flex-direction:column;align-items:stretch}.board-chart{position:static;order:-1}.metric-grid.is-col{grid-template-columns:repeat(auto-fill,minmax(268px,1fr))}}@media(max-width:700px){.statgroup{flex-wrap:wrap}.stat{flex:1 1 auto}}.bigchart{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:var(--sp-4) var(--sp-4) var(--sp-2);box-shadow:var(--shadow-sm);min-width:0}.bigchart-head{display:flex;align-items:baseline;gap:var(--sp-3);flex-wrap:wrap}.bigchart-head h2{margin:0;font-size:17px}.bigchart-plot{display:block;width:100%;height:auto;margin-top:var(--sp-2)}@media(min-width:1081px){.board{align-items:stretch}body.fit-screen{overflow:hidden}body.fit-screen .app-shell{height:100vh}body.fit-screen .main{min-height:0}body.fit-screen .content{flex:1;min-height:0;display:flex;flex-direction:column}body.fit-screen .page-top{flex:none}body.fit-screen .board{flex:1;min-height:0}body.fit-screen .content>.subline{flex:none;margin-top:var(--sp-2)}.board .metric-grid.is-col{height:100%;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain}.board .metric.is-compact{flex:1 0 auto}.board-chart{height:100%;min-height:0}.board-chart .bigchart{display:flex;flex-direction:column;height:100%;min-height:0}.board-chart .bigchart-plot{flex:1;min-height:0;height:100%}}.bigchart-grid{stroke:var(--line);stroke-width:1}.bigchart-axis{font-size:12px;fill:var(--ink-muted)}.bigchart-line{fill:none;stroke:var(--chart-line);stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round}.bigchart-fill-top{stop-color:var(--chart-fill);stop-opacity:.42}.bigchart-fill-bottom{stop-color:var(--chart-fill);stop-opacity:.02}.bigchart-dot{fill:var(--chart-line);stroke:var(--surface);stroke-width:2.5}.bigchart-dot.is-last{stroke-width:3.5}.bigchart-val{font-size:12.5px;fill:var(--ink-muted);font-variant-numeric:tabular-nums}.bigchart-val.is-last{font-size:14px;fill:var(--ink);font-weight:700}.bigchart-target{stroke:var(--chart-line);stroke-width:1.5;stroke-dasharray:7 6;opacity:.5}.bigchart-target-lab{font-size:12px;fill:var(--chart-line)}.tiles{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}.tile{background:var(--tile-tint, var(--surface));border:1px solid var(--tile-edge, var(--line));border-radius:18px;padding:var(--sp-3) var(--sp-4);min-width:134px}.tile{--ink-muted: #46586b}.tile b{display:block;font-size:28px;line-height:1.15;font-weight:700;font-variant-numeric:tabular-nums}.tile.t-ok{--tile-tint: #e7f5ec;--tile-edge: #cfe8d9}.tile.t-warn{--tile-tint: #fdf2df;--tile-edge: #f3e0bd}.tile.t-stop{--tile-tint: #fdecea;--tile-edge: #f5d2ce}.tile.t-info{--tile-tint: #e9f1fb;--tile-edge: #d6e5f6}.tile.t-none{--tile-tint: #eef1f5;--tile-edge: #dfe5ec}.tile span{display:block;font-size:var(--fs-small);color:var(--ink-muted);margin-top:1px}.tile.t-stop b{color:var(--stop)}.tile.t-warn b{color:var(--warn)}.tile.t-ok b{color:var(--ok)}.tile.t-none b{color:var(--none)}button.tile{text-align:left;font:inherit;color:inherit}button.tile:hover{border-color:var(--brand)}button.tile.on{outline-color:var(--brand)}button.tile.on{outline:2px solid var(--brand);outline-offset:-1px}.filters{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-3);display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);align-items:center;box-shadow:var(--shadow-sm)}.chipbar{display:flex;flex-wrap:wrap;gap:5px}.chip-btn{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);padding:4px 11px;font-size:var(--fs-small);border-radius:var(--r-pill);font-weight:500;transition:background .15s ease,border-color .15s ease}.chip-btn:hover{border-color:var(--brand);background:var(--surface-3)}.chip-btn.on{background:var(--brand-fill);border-color:transparent;color:var(--brand-ink);font-weight:600}.chip-btn.on:hover{background:var(--brand-fill-hover);border-color:transparent}.chip-btn .n{opacity:.75;margin-left:5px;font-variant-numeric:tabular-nums}input[type=text],input[type=number],input[type=password],input[type=email],select,textarea{font-family:inherit;font-size:13.5px;padding:6px 9px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink)}textarea{resize:vertical;min-height:60px;width:100%}.search-input{min-width:220px}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:auto;max-height:calc(100vh - 300px);box-shadow:var(--shadow-sm)}table.grid{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}table.grid th,table.grid td{text-align:left;padding:var(--row-pad-y) 10px;border-bottom:1px solid var(--line-soft);vertical-align:top;background:var(--surface)}table.grid thead th{position:sticky;top:0;z-index:3;background:var(--surface-2);color:var(--ink-muted);font-size:var(--fs-micro);font-weight:600;letter-spacing:.02em;white-space:nowrap;border-bottom:1px solid var(--line)}table.grid tbody tr:hover td{background:var(--surface-2)}table.grid td.sticky,table.grid th.sticky{position:sticky;z-index:2}table.grid thead th.sticky{z-index:4}table.grid .sticky-edge{box-shadow:1px 0 0 var(--line)}table.grid tbody tr:hover td.sticky{background:var(--surface-2)}.w-name{min-width:210px}.pill{display:inline-block;font-size:var(--fs-micro);font-weight:700;padding:2px 8px;border-radius:var(--r-sm);white-space:nowrap}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.stop{background:var(--stop-bg);color:var(--stop)}.pill.none{background:var(--none-bg);color:var(--none)}.pill.info,.pill.kpi{background:var(--info-bg);color:var(--info)}.pill.kai{background:var(--warn-bg);color:var(--warn)}.cell-edit{background:none;border:1px dashed transparent;border-radius:var(--r-sm);font:inherit;color:inherit;padding:1px 6px;text-align:left;width:100%}.cell-edit:hover{border-color:var(--brand);background:var(--surface-3)}.no-target{color:var(--none);font-style:italic}.period-bar{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-3);box-shadow:var(--shadow-sm)}.period-steps{display:flex;align-items:center;gap:0;overflow-x:auto;scrollbar-width:none;max-width:100%}.period-steps::-webkit-scrollbar{display:none}.period-step{flex:none}.period-step{font-size:var(--fs-small);padding:3px 10px;color:var(--ink-muted);border:1px solid var(--line);border-right-width:0;background:var(--surface);white-space:nowrap}.period-step:first-child{border-radius:var(--r-md) 0 0 var(--r-md)}.period-step:last-child{border-radius:0 var(--r-md) var(--r-md) 0;border-right-width:1px}.period-step.done{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-bg)}.period-step.on{color:var(--brand-ink);background:var(--brand-fill);border-color:transparent;font-weight:700}.metric-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-4)}.metric-grid>*{min-width:0}.metric{background:var(--card-tint, var(--surface));border:1px solid var(--card-edge, var(--line));border-radius:20px;padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-1)}.metric.dept-corporate{--card-tint: #e9f1fb;--card-edge: #d6e5f6;--card-ink: #0e76bd}.metric.dept-sales{--card-tint: #e4f6f1;--card-edge: #cceee5;--card-ink: #0f8f76}.metric.dept-purchasing{--card-tint: #eceaf9;--card-edge: #dcd8f2;--card-ink: #5a4bc4}.metric.dept-warehouse{--card-tint: #e6f2f5;--card-edge: #d2e7ec;--card-ink: #17758c}.metric.dept-accounting{--card-tint: #edf0f4;--card-edge: #dde3ea;--card-ink: #40566e}.metric.dept-hr{--card-tint: #f2ecf8;--card-edge: #e4d9f0;--card-ink: #7146a8}.metric{--ink-muted: #46586b}.metric-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(150deg,color-mix(in srgb,var(--card-ink, var(--brand)) 78%,#fff) 0%,var(--card-ink, var(--brand)) 62%,color-mix(in srgb,var(--card-ink, var(--brand)) 84%,#000) 100%);box-shadow:inset 0 1px #ffffff73,0 3px 8px -2px color-mix(in srgb,var(--card-ink, var(--brand)) 55%,transparent);color:#fff;flex:none;border:0;padding:0;cursor:pointer}.metric-icon:hover{filter:brightness(1.07) saturate(1.05)}.metric-icon:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.metric.is-charted{border-color:var(--card-ink);box-shadow:0 0 0 1px var(--card-ink)}.metric-head{display:flex;align-items:flex-start;gap:var(--sp-2)}.metric-name{flex:1;font-weight:600;font-size:13.5px;min-width:0}.metric-value{font-size:var(--fs-metric);font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.metric-value.is-empty{font-size:var(--fs-body);font-weight:500;color:var(--none);font-style:italic;letter-spacing:0}.metric-value.s-green{color:var(--ok)}.metric-value.s-amber{color:var(--warn)}.metric-value.s-red{color:var(--stop)}.metric-unit{font-size:var(--fs-small);font-weight:500;color:var(--ink-muted);margin-left:4px}.metric-foot{display:flex;align-items:center;gap:var(--sp-2);justify-content:space-between;margin-top:auto;padding-top:var(--sp-2)}.metric-target,.trend-delta{font-size:var(--fs-small);color:var(--ink-muted);font-variant-numeric:tabular-nums}.trend-delta.is-good{color:var(--ok)}.trend-delta.is-bad{color:var(--stop)}.trend{position:relative;margin-top:var(--sp-2)}.trend-values,.trend-labels{position:relative;height:14px}.trend-val,.trend-lab{position:absolute;transform:translate(-50%);white-space:nowrap;font-variant-numeric:tabular-nums;line-height:14px}.trend-val.is-first,.trend-lab.is-first{transform:none}.trend-val.is-last-x,.trend-lab.is-last-x{transform:translate(-100%)}.trend-val{font-size:var(--fs-micro);color:var(--ink-muted)}.trend-val.is-last{color:var(--ink);font-weight:600}.trend-lab{font-size:var(--fs-micro);color:var(--ink-muted)}.trend-target{stroke:var(--ink-muted);stroke-width:1;stroke-dasharray:3 3;opacity:.5;vector-effect:non-scaling-stroke}.spark-dot-sm{fill:var(--chart-line);opacity:.75}.spark{display:block;width:100%;height:62px}.spark-line{fill:none;stroke:var(--chart-line);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.spark-area{fill:var(--accent-soft);stroke:none}.spark-dot{fill:var(--chart-line)}.spark-bar{fill:var(--chart-fill)}.spark-zero{fill:var(--chart-line);opacity:.55}.spark-base{stroke:var(--card-edge, var(--line));stroke-width:1;vector-effect:non-scaling-stroke}.spark-empty{font-size:var(--fs-micro);color:var(--ink-muted)}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a6b;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:50;overflow:auto}.modal{background:var(--surface);border-radius:var(--r-lg);width:100%;max-width:720px;box-shadow:var(--shadow-md)}.modal.narrow{max-width:460px}.modal-head{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line)}.modal-head h2{margin:0;flex:1}.modal-body{padding:var(--sp-4)}.modal-foot{display:flex;gap:var(--sp-2);justify-content:flex-end;padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 var(--r-lg) var(--r-lg)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3) var(--sp-4)}.form-grid .full{grid-column:1 / -1}.field{display:flex;flex-direction:column;gap:var(--sp-1)}.field>label{font-size:var(--fs-small);color:var(--ink-muted);font-weight:600}.field input,.field select{width:100%}.err{background:var(--stop-bg);border:1px solid var(--stop);color:var(--stop);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);font-size:13px;margin-bottom:var(--sp-3)}.ok-msg{background:var(--ok-bg);border:1px solid var(--ok);color:var(--ok);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);font-size:13px;margin-bottom:var(--sp-3)}.warn-msg{background:var(--warn-bg);border:1px solid var(--warn);color:var(--warn);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);font-size:13px;margin-bottom:var(--sp-3)}.empty-block{background:var(--surface);border:1px dashed var(--line);border-radius:var(--r-lg);padding:var(--sp-6);text-align:center;color:var(--ink-muted)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--shadow-sm)}.login-page{min-height:100%;display:flex;align-items:center;justify-content:center;background:var(--ground);padding:var(--sp-4)}.login-card{background:var(--surface);border-radius:var(--r-lg);padding:var(--sp-6) var(--sp-5);width:100%;max-width:380px;box-shadow:var(--shadow-md);border:1px solid var(--line)}.login-card h1{text-align:center}.login-card .brand-line{text-align:center;color:var(--ink-muted);font-size:var(--fs-small);margin:0 0 var(--sp-4)}.login-card .field{margin-bottom:var(--sp-3)}.login-card input{width:100%;padding:9px 11px;font-size:var(--fs-body)}.login-card .btn-primary{width:100%;margin-top:var(--sp-1)}.skin-pick{display:flex;gap:2px}.skin-pick button{font-size:var(--fs-micro);padding:2px 8px;border:1px solid var(--line);background:var(--surface);color:var(--ink-muted);border-radius:var(--r-sm)}.skin-pick button.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}:root.skin-switching *{transition:none!important}@media(max-width:1080px){:root,:root[data-skin]{--sidebar-w: 60px}.sidebar{padding:var(--sp-4) var(--sp-2);align-items:center}.sidebar nav{width:100%}.sidebar nav a{justify-content:center;padding:10px 0}.sidebar .label,.brand-word,.brand-full{display:none}.sidebar-brand{padding:0 0 var(--sp-4);align-items:center}.brand-plate{padding:5px;gap:0}}@media(max-width:820px){.form-grid{grid-template-columns:1fr}.table-wrap{max-height:none}.content{padding:var(--sp-4) var(--sp-3)}}@media(max-width:720px){.hide-narrow{display:none}.metric-grid{grid-template-columns:1fr}.mini-tiles{grid-template-columns:1fr 1fr}.person-head{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.person-grid{display:grid;grid-template-columns:minmax(0,1fr) 336px;gap:var(--sp-4);align-items:start}.person-head{display:flex;align-items:center;gap:var(--sp-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--shadow-sm);margin-bottom:var(--sp-4)}.person-head .who{flex:1;min-width:0}.person-head h1{margin:0}.side-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--shadow-sm);margin-bottom:var(--sp-4)}.side-card h2{font-size:14px;margin:0 0 var(--sp-3);display:flex;align-items:center;gap:var(--sp-2)}.side-card h2 .grow{flex:1}.week-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.week-day{border:1px solid transparent;border-radius:var(--r-md);padding:6px 0 5px;text-align:center;background:var(--surface-2);font:inherit;color:inherit;position:relative}.week-day:hover{border-color:var(--brand)}.week-day .wd{display:block;font-size:var(--fs-micro);color:var(--ink-muted)}.week-day .dd{display:block;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.week-day.today{background:var(--accent-strong)}.week-day.today .wd,.week-day.today .dd{color:var(--brand-ink)}.week-day.sel{outline:2px solid var(--brand);outline-offset:-1px}.week-day .dot{display:block;width:5px;height:5px;border-radius:50%;background:var(--accent);margin:3px auto 0}.week-day.today .dot{background:var(--brand-ink)}.agenda{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-3)}.agenda-item{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3)}.agenda-item.t-warn{background:var(--warn-bg);border-color:var(--warn-bg)}.agenda-item .tm{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--ink-muted)}.agenda-item .ti{font-size:13px;font-weight:600}.task-list{display:flex;flex-direction:column;gap:var(--sp-2)}.task{display:flex;align-items:flex-start;gap:var(--sp-3);width:100%;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);text-align:left;font:inherit;color:inherit}.task:hover{border-color:var(--brand)}.task .grow{flex:1;min-width:0}.task .tname{font-weight:600;font-size:13px}.feed{display:flex;flex-direction:column}.feed-item{display:flex;gap:var(--sp-3);padding:var(--sp-2) 0}.feed-item+.feed-item{border-top:1px solid var(--line-soft)}.feed-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:6px;flex:none}.feed-item .grow{flex:1;min-width:0}.feed-item .ft{font-size:13px;font-weight:600}.mini-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2)}.mini-tile{border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);display:flex;flex-direction:column;gap:2px}.mini-tile b{font-size:26px;line-height:1.1;font-variant-numeric:tabular-nums}.mini-tile span{font-size:var(--fs-small);color:var(--ink-muted)}.mini-tile.m-ok{background:var(--ok-bg);color:var(--ok)}.mini-tile.m-warn{background:var(--warn-bg);color:var(--warn)}.mini-tile.m-stop{background:var(--stop-bg);color:var(--stop)}.mini-tile.m-none{background:var(--none-bg);color:var(--none)}.mini-tile.m-info{background:var(--info-bg);color:var(--info)}.mini-tile.m-brand{background:var(--brand-soft);color:var(--brand-hover)}.mini-tile.m-accent{background:var(--accent-soft);color:var(--accent-strong)}@media(max-width:1080px){.person-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:1360px){.period-steps{display:none}}.bars{position:relative;display:flex;flex-direction:column;gap:7px;margin-top:var(--sp-5)}.bar-row{display:grid;grid-template-columns:150px minmax(0,1fr) 132px;align-items:center;gap:var(--sp-3)}.bar-name{font-size:13.5px}.bar-track{position:relative;height:20px;border-radius:5px;background:var(--surface-3);overflow:hidden}.bar-fill{display:block;height:100%;border-radius:5px;background:var(--chart-fill);min-width:2px}.bar-fill.ok{background:var(--ok)}.bar-fill.warn{background:var(--warn)}.bar-fill.stop{background:var(--stop)}.bar-val{text-align:right;font-variant-numeric:tabular-nums;font-size:13.5px;white-space:nowrap}.bar-pct{display:inline-block;margin-left:7px;font-style:normal;font-size:var(--fs-micro);font-weight:700}.bar-pct.ok{color:var(--ok)}.bar-pct.warn{color:var(--warn)}.bar-pct.stop{color:var(--stop)}.bars-overlay{position:absolute;top:0;bottom:0;pointer-events:none;left:calc(150px + var(--sp-3));right:calc(132px + var(--sp-3))}.bars-target{position:absolute;top:0;bottom:0;border-left:2px dashed var(--brand);z-index:1}.bars-target span{position:absolute;top:-17px;left:5px;white-space:nowrap;font-size:var(--fs-micro);color:var(--brand-strong)}@media(max-width:760px){.bar-row{grid-template-columns:110px minmax(0,1fr) 108px;gap:var(--sp-2)}.bars-overlay{left:calc(110px + var(--sp-2));right:calc(108px + var(--sp-2))}}.trend-grid{display:flex;flex-direction:column;gap:6px;margin-top:var(--sp-3)}.trend-row,.trend-head{display:grid;grid-template-columns:150px minmax(0,1fr) 116px;align-items:center;gap:var(--sp-3)}.trend-head{margin-bottom:2px}.trend-axis{display:flex;justify-content:space-between;font-size:var(--fs-micro);color:var(--ink-muted)}.trend-axis em{font-style:normal}.trend-name{font-size:13.5px}.trend-plot{display:block;width:100%;height:34px}.trend-line{fill:none;stroke:var(--chart-line);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.trend-line.is-partial{stroke-dasharray:4 3;opacity:.75}.trend-dot{fill:var(--chart-line)}.trend-target{stroke:var(--brand);stroke-width:1;stroke-dasharray:5 4;opacity:.45}.trend-last{text-align:right;font-size:13px;white-space:nowrap;font-variant-numeric:tabular-nums}.trend-last em{font-style:normal;margin-left:6px;font-size:var(--fs-micro);font-weight:700}.trend-last em.is-up{color:var(--ok)}.trend-last em.is-down{color:var(--stop)}@media(max-width:760px){.trend-row,.trend-head{grid-template-columns:96px minmax(0,1fr) 96px;gap:var(--sp-2)}}.funnel{display:flex;flex-direction:column;gap:5px;margin-top:var(--sp-3)}.funnel-row,.funnel-head{display:grid;grid-template-columns:minmax(0,1fr) 58px 52px 74px;align-items:center;gap:var(--sp-2)}.funnel-head{font-size:var(--fs-micro);color:var(--ink-muted);text-align:right}.funnel-name{position:relative;padding:5px 8px;border-radius:6px;overflow:hidden;min-width:0}.funnel-bar{position:absolute;inset:0 auto 0 0;background:var(--brand-soft);border-radius:6px}.funnel-name em{position:relative;font-style:normal;font-size:13px;white-space:nowrap}.funnel-num{text-align:right;font-size:13px;font-variant-numeric:tabular-nums}.funnel.is-dense .funnel-row,.funnel.is-dense .funnel-head{grid-template-columns:minmax(0,1fr) 40px 38px 56px;gap:6px}.funnel.is-dense .funnel-name{padding:3px 6px}.funnel.is-dense .funnel-name em,.funnel.is-dense .funnel-num{font-size:12px}.skillgrid{display:flex;flex-direction:column;gap:4px;margin-top:var(--sp-3)}.skill-row,.skill-head{display:grid;grid-template-columns:minmax(0,1fr) repeat(3,74px);align-items:center;gap:6px}.skill-head{font-size:var(--fs-micro);color:var(--ink-muted);text-align:center}.skill-name{font-size:13px}.skill-cell{text-align:center;border-radius:6px;padding:3px 0;font-size:13px;background:var(--surface-3);color:var(--ink-muted);font-variant-numeric:tabular-nums}button.skill-cell{border:1px solid transparent;cursor:pointer;font:inherit;width:100%}button.skill-cell:hover{border-color:var(--brand)}button.skill-cell:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.skill-cell b{font-weight:700}.skill-cell em{font-style:normal;opacity:.75}.skill-cell.t-ok{background:var(--ok-bg);color:var(--ok)}.skill-cell.t-warn{background:var(--warn-bg);color:var(--warn)}.skill-cell.t-info{background:var(--brand-soft);color:var(--brand-strong)}.skillgrid.is-dense .skill-row,.skillgrid.is-dense .skill-head{grid-template-columns:minmax(0,1fr) repeat(3,52px);gap:4px}.skillgrid.is-dense .skill-name{font-size:12px}.skillgrid.is-dense .skill-cell{font-size:12px;padding:2px 0}.skill-pick{display:flex;gap:var(--sp-3)}.skill-pick label{display:flex;align-items:center;gap:6px;font-size:var(--fs-small);color:var(--ink-muted)}.skill-pick select{padding:4px 6px}.levelpick{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 2px}.levelpick .chip-btn{min-width:44px}.market-group{margin-top:var(--sp-4)}.market-group h3{margin:0 0 var(--sp-2);font-size:14px;color:var(--ink-muted);letter-spacing:.04em}.market-sec{border:1px solid var(--line);border-radius:14px;padding:var(--sp-3);margin-bottom:var(--sp-3);background:var(--surface)}.market-sec.is-filled{border-left:3px solid var(--ok)}.market-sec-head{display:flex;align-items:baseline;gap:var(--sp-3);flex-wrap:wrap}.market-sec-head b{font-size:14px}.market-sec textarea{width:100%;margin-top:var(--sp-2)}.market-sec-foot{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-2);min-height:26px;align-items:center}.market-sec-foot>button{white-space:nowrap}.market-progress{margin-top:var(--sp-3)}.market-count{display:flex;align-items:baseline;gap:6px}.market-count b{font-size:24px;font-weight:700;line-height:1.1}.market-count span{font-size:var(--fs-small);color:var(--ink-muted)}.market-progress ul{list-style:none;margin:var(--sp-2) 0 0;padding:0;display:flex;flex-direction:column;gap:3px}.market-progress li{display:flex;justify-content:space-between;gap:var(--sp-2);font-size:12.5px;color:var(--ink-muted)}.market-progress li em{font-style:normal;font-variant-numeric:tabular-nums}.market-progress li.is-done{color:var(--ok)}.board-scroll{height:100%;overflow-y:auto;min-height:0}.party-hits{display:flex;flex-direction:column;gap:4px;max-height:260px;overflow-y:auto;margin:var(--sp-3) 0}.party-hit{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);width:100%;text-align:left;font:inherit;cursor:pointer;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.party-hit:hover{border-color:var(--brand);background:var(--brand-soft)}.party-hit em{font-style:normal;flex:none}.wrap-any{overflow-wrap:anywhere}.mysales-head{display:flex;align-items:baseline;gap:6px}.mysales-amount{font-size:28px;font-weight:700;line-height:1.15;font-variant-numeric:tabular-nums}.mysales-amount.t-ok{color:var(--ok)}.mysales-amount.t-warn{color:var(--warn)}.mysales-amount.t-stop{color:var(--stop)}.mysales-amount.t-none{color:var(--ink)}.mysales-unit{font-size:var(--fs-small);color:var(--ink-muted)}.mysales-vs{display:flex;align-items:center;gap:var(--sp-2);margin:4px 0 var(--sp-2);font-size:var(--fs-small);color:var(--ink-muted)}.mysales-chart{display:block;width:100%;height:auto}.mysales-tick{font-size:9px;fill:var(--ink-muted)}.mysales-tip{font-size:10px;font-weight:600;fill:var(--ink)}.mysales-foot{margin:4px 0 0}.chk{display:flex;align-items:center;gap:6px;margin-top:var(--sp-2);font-size:var(--fs-small);color:var(--ink-muted)}.chk input{width:auto;margin:0}.linkprog-head{display:flex;align-items:baseline;gap:var(--sp-2)}.linkprog-head b{font-size:30px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--ink)}.linkprog-head b.ok{color:var(--ok)}.linkprog-track{position:relative;height:14px;margin:var(--sp-2) 0 6px;background:var(--surface-3);border-radius:var(--r-pill);overflow:hidden}.linkprog-track .fill{position:absolute;inset:0 auto 0 0;background:var(--brand-fill);border-radius:var(--r-pill)}.linkprog-track .goal{position:absolute;top:0;bottom:0;width:2px;background:var(--ink);opacity:.55}
