:root{--canvas:#faf9f5;--soft:#f5f0e8;--card:#efe9de;--cream:#e8e0d2;--hair:#e6dfd8;--hair-soft:#ebe6df;--ink:#141413;--body:#3d3d3a;--muted:#6c6a64;--muted-soft:#8e8b82;--coral:#cc785c;--coral-act:#a9583e;--on-coral:#ffffff;--coral-tint:#f6e3da;--teal:#3f9a88;--ok:#3f8f55;--warn:#9a7410;--err:#c64545;--ok-bg:#e3f1e6;--warn-bg:#f6ecd0;--err-bg:#f6dddb;--new-bg:#ddeee9;--display:"Cormorant Garamond","Noto Serif Thai",Garamond,"Times New Roman",serif;--sans:"Inter","IBM Plex Sans Thai",-apple-system,"Segoe UI",Roboto,sans-serif;--mono:"JetBrains Mono",ui-monospace,Menlo,monospace;--shadow:0 1px 3px rgba(20,20,19,.08);--lv0:#92d050;--lv1:#9dc3e6;--lv2:#f8cbad;--lv3:#d5b8ea;--lv4:#ffe699;--lv5:#f4b6c2;--lv6:#a9dcd3}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{--canvas:#181715;--soft:#1f1e1b;--card:#252320;--cream:#2e2b27;--hair:#34312c;--hair-soft:#2b2925;--ink:#faf9f5;--body:#d6d2c9;--muted:#a09d96;--muted-soft:#8a877f;--coral:#d98a6f;--coral-act:#e6a189;--on-coral:#1a1310;--coral-tint:#3a2a23;--teal:#5db8a6;--ok:#6cc583;--warn:#e0b23a;--err:#e47b7b;--ok-bg:#1f3325;--warn-bg:#3a3018;--err-bg:#3d2221;--new-bg:#1c332e;--shadow:0 1px 3px rgba(0,0,0,.4);color-scheme:dark;--lv0:#3f6b1f;--lv1:#2b4a68;--lv2:#6b4630;--lv3:#56396f;--lv4:#6e5a1c;--lv5:#6b3446;--lv6:#2c6259}:root{--c-coral:#d9673f;--c-teal:#1f9580;--c-plum:#9152b0;--c-amber:#c98a12;--c-sky:#2f80c9;--c-rose:#cc4a72;--c-indigo:#5a5fd0;--c-slate:#5f6f8f;--c-sage:#4a9440}:root[data-theme=dark]{--c-coral:#f08a63;--c-teal:#4cc7ae;--c-plum:#c08ae0;--c-amber:#efb54a;--c-sky:#6aaef0;--c-rose:#f07ea0;--c-indigo:#9a9ef5;--c-slate:#9fb0d0;--c-sage:#80c56f}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--canvas);color:var(--body);font-family:var(--sans);font-size:13px;line-height:1.5;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--coral);outline-offset:1px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:12px}.ico{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.cap{font-size:11px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted-soft)}.note{font-size:12px;color:var(--muted)}[hidden]{display:none!important}.app{height:100%;display:grid;grid-template-rows:44px 1fr 26px}.titlebar{display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--soft);border-bottom:1px solid var(--hair)}.brand{display:flex;align-items:center;gap:9px;color:var(--ink);font-weight:500;width:190px}.mark{width:22px;height:22px;border-radius:6px;background:var(--coral);color:var(--on-coral);display:grid;place-items:center;font-family:var(--mono);font-size:10.5px;font-weight:500}.search{flex:1;max-width:460px;display:flex;align-items:center;gap:8px;height:28px;padding:0 10px;border:1px solid var(--hair);border-radius:8px;background:var(--canvas);color:var(--muted-soft)}.search input{border:0;background:none;outline:0;flex:1;min-width:0;color:var(--ink)}.kbd{font-family:var(--mono);font-size:10.5px;border:1px solid var(--hair);border-radius:4px;padding:0 5px;color:var(--muted)}.tb-right{margin-left:auto;display:flex;align-items:center;gap:10px}.av{width:24px;height:24px;border-radius:50%;display:inline-grid;place-items:center;font-size:10px;font-weight:500;flex:none;background:var(--cream);color:var(--ink);border:2px solid var(--soft)}.av.c1{background:var(--coral);color:var(--on-coral)}.av.c2{background:var(--teal);color:#fff}.av.c3{background:#e8a55a;color:#1a1310}.stack{display:flex}.stack .av{margin-left:-6px}.stack .av:first-child{margin-left:0}.body{display:grid;grid-template-columns:216px 1fr;min-height:0}.side{background:var(--soft);border-right:1px solid var(--hair);overflow-y:auto;padding:10px 8px;display:flex;flex-direction:column;gap:14px}.sgroup{display:flex;flex-direction:column;gap:1px}.sgroup .cap{padding:4px 10px 6px}.item{text-decoration:none;display:flex;align-items:center;gap:9px;width:100%;border:0;background:none;text-align:left;padding:6px 10px;border-radius:6px;color:var(--body);font-weight:500;font-size:12.5px}.item:hover{background:var(--card)}.item[aria-current=true]{background:var(--cream);color:var(--ink)}.ic{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;flex:none;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent)}.ic .ico{width:15px;height:15px;stroke-width:1.8}.item[aria-current=true] .ic{background:var(--c);color:#fff}.ic-coral{--c:var(--c-coral)}.ic-teal{--c:var(--c-teal)}.ic-plum{--c:var(--c-plum)}.ic-amber{--c:var(--c-amber)}.ic-sky{--c:var(--c-sky)}.ic-rose{--c:var(--c-rose)}.ic-indigo{--c:var(--c-indigo)}.ic-slate{--c:var(--c-slate)}.ic-sage{--c:var(--c-sage)}.item{padding:5px 8px}.item .n{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--muted-soft);font-weight:400}.item .n.hot{color:var(--coral)}.jobname{padding:2px 10px 8px;font-size:13px;line-height:1.35;color:var(--ink);font-weight:500}.dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--muted-soft)}.dot.err{background:var(--err)}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.coral{background:var(--coral)}.main{display:grid;grid-template-rows:auto 1fr;min-width:0;min-height:0}.toolbar{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;padding:14px 18px 10px;border-bottom:1px solid var(--hair)}.crumbs{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--muted)}.crumbs button{border:0;background:none;padding:0;color:var(--muted)}.crumbs button:hover{color:var(--coral)}h1{font-family:var(--display);font-weight:500;font-size:28px;line-height:1.1;letter-spacing:-.4px;color:var(--ink);margin:2px 0 0}h1,h3{font-variant-numeric:lining-nums}.tb-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.btn{height:30px;padding:0 12px;border-radius:8px;border:1px solid var(--hair);background:var(--canvas);color:var(--ink);font-weight:500;font-size:12.5px;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.btn:hover{background:var(--soft)}.btn.primary{background:var(--coral);border-color:var(--coral);color:var(--on-coral)}.btn.primary:hover{background:var(--coral-act);border-color:var(--coral-act)}.btn.sm{height:26px;padding:0 9px;font-size:12px;border-radius:6px}.seg{display:flex;gap:2px;padding:2px;border-radius:8px;background:var(--card)}.seg button{border:0;background:none;border-radius:6px;padding:3px 10px;font-size:12px;font-weight:500;color:var(--muted)}.seg button[aria-pressed=true]{background:var(--canvas);color:var(--ink);box-shadow:var(--shadow)}.seg .mono{font-size:11.5px}.split{display:grid;grid-template-columns:1fr 300px;min-height:0}.pane{overflow:auto;min-width:0;min-height:0}.inspector{border-left:1px solid var(--hair);background:var(--soft);overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:14px}.inspector h3{font-family:var(--display);font-weight:500;font-size:20px;letter-spacing:-.2px;color:var(--ink);margin:0;line-height:1.15}.card{background:var(--canvas);border:1px solid var(--hair);border-radius:12px;padding:12px}.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:12px}.kv dt{color:var(--muted)}.kv dd{margin:0;color:var(--ink)}textarea{width:100%;min-height:84px;border:1px solid var(--hair);border-radius:8px;background:var(--canvas);padding:8px 10px;resize:vertical;color:var(--ink)}textarea:focus,input:focus{outline:0;border-color:var(--coral);box-shadow:0 0 0 3px color-mix(in srgb,var(--coral) 15%,transparent)}.callout{background:var(--coral-tint);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px;color:var(--ink)}.callout p{margin:0;font-size:12px;color:var(--body)}.hist{display:flex;flex-direction:column;gap:8px;font-size:12px}.hist div{display:grid;grid-template-columns:42px 1fr;gap:8px}.hist span:first-child{font-family:var(--mono);font-size:11px;color:var(--muted-soft)}table{border-collapse:collapse;width:100%}th{position:sticky;top:0;z-index:1;background:var(--canvas);font-size:11px;font-weight:500;letter-spacing:.6px;text-transform:uppercase;color:var(--muted-soft);text-align:left;padding:8px 12px;border-bottom:1px solid var(--hair);white-space:nowrap}td{padding:8px 12px;border-bottom:1px solid var(--hair-soft);vertical-align:top;color:var(--body)}tbody tr{cursor:default}tbody tr.sel td{background:var(--card)}tbody tr:hover td{background:var(--soft)}tbody tr.sel:hover td{background:var(--card)}.ttl{color:var(--ink);font-weight:500}.verb{max-width:56ch}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;padding:1px 9px;border-radius:999px;background:var(--card);color:var(--body);white-space:nowrap}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.err{background:var(--err-bg);color:var(--err)}.pill.new{background:var(--new-bg);color:var(--teal)}.pill.coral{background:var(--coral);color:var(--on-coral);letter-spacing:1px;text-transform:uppercase;font-size:10px}del{color:var(--err);background:var(--err-bg);text-decoration-thickness:1px;border-radius:3px;padding:0 2px}ins{color:var(--ok);background:var(--ok-bg);text-decoration:none;border-radius:3px;padding:0 2px}.bar{height:4px;border-radius:2px;background:var(--hair);overflow:hidden;width:120px}.bar i{display:block;height:100%;background:var(--coral)}.bars{display:flex;flex-direction:column;gap:6px}.bars div{display:grid;grid-template-columns:110px 1fr 38px;align-items:center;gap:8px;font-size:12px}.bars .bar{width:100%}.tree .g td{background:var(--lv);color:var(--ink);font-weight:500}.tree .g:hover td{filter:brightness(.96)}.tree .g.sel td{box-shadow:inset 0 2px 0 var(--coral),inset 0 -2px 0 var(--coral)}.tree .g .cap{color:inherit;opacity:.7;white-space:nowrap}.tree .l0{--lv:var(--lv0)}.tree .l1{--lv:var(--lv1)}.tree .l2{--lv:var(--lv2)}.tree .l3{--lv:var(--lv3)}.tree .l4{--lv:var(--lv4)}.tree .l5{--lv:var(--lv5)}.tree .l6{--lv:var(--lv6)}.cc{font-family:var(--mono);font-size:11.5px;border:1px solid var(--hair);background:var(--canvas);border-radius:4px;padding:0 6px;color:var(--ink)}.codes{display:flex;gap:4px;flex-wrap:wrap}.toolbar>select{height:30px;border:1px solid var(--hair);border-radius:8px;background:var(--canvas);padding:0 8px;font-size:12.5px;color:var(--ink)}.cc.new{background:var(--new-bg);border-color:var(--teal);color:var(--teal)}.check{display:flex;gap:8px;align-items:flex-start;font-size:12px;padding:3px 0}.check input{accent-color:var(--coral);margin-top:3px}.status{display:flex;align-items:center;gap:16px;padding:0 12px;border-top:1px solid var(--hair);background:var(--soft);font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden}.status span{display:inline-flex;align-items:center;gap:6px}.status .r{margin-left:auto}.scrim{position:fixed;inset:0;background:#14141366;display:grid;place-items:center;padding:16px;z-index:10}.modal{background:var(--canvas);border-radius:12px;width:min(440px,100%);padding:18px;display:flex;flex-direction:column;gap:14px;border:1px solid var(--hair);box-shadow:0 10px 40px #1414132e}.modal h3{font-family:var(--display);font-weight:500;font-size:22px;margin:0;color:var(--ink)}.field{display:flex;gap:8px}.field input{flex:1;min-width:0;height:32px;border:1px solid var(--hair);border-radius:8px;background:var(--canvas);padding:0 10px}.member{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--ink)}.member select{border:1px solid var(--hair);border-radius:6px;background:var(--canvas);padding:3px 6px;font-size:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}@media(max-width:980px){.split{grid-template-columns:1fr}.inspector{border-left:0;border-top:1px solid var(--hair)}}@media(max-width:760px){body{overflow:auto}.app{height:auto;min-height:100%;grid-template-rows:auto auto auto}.titlebar{flex-wrap:wrap;padding:8px 16px;gap:8px}.brand{width:auto}.search{order:3;max-width:none;flex-basis:100%}.body{grid-template-columns:1fr}.side{border-right:0;border-bottom:1px solid var(--hair);padding:8px 16px;flex-direction:row;flex-wrap:wrap;gap:8px}.sgroup{flex-direction:row;flex-wrap:wrap}.sgroup .cap,.jobname{width:100%}.item{width:auto}.toolbar{padding:12px 16px}.pane{overflow-x:auto}.status{flex-wrap:wrap;white-space:normal;padding:6px 16px}}@media(prefers-reduced-motion:no-preference){.item,.btn,.seg button,td{transition:background .12s}}.login{height:100%;display:grid;place-items:center;padding:16px}.login-card{width:min(360px,100%);display:flex;flex-direction:column;align-items:center;gap:18px;padding:28px;text-align:center}.login-card .brand{width:auto;font-size:15px}.btn.lg{height:36px;padding:0 16px;font-size:13px}.placeholder{padding:18px}.empty{padding:48px 24px;text-align:center}.empty h3{font-family:var(--display);font-weight:500;font-size:22px;margin:0 0 6px;color:var(--ink)}.err-text{color:var(--err)}.modal.wide{width:min(640px,100%);max-height:calc(100vh - 32px);overflow-y:auto}.cols{display:flex;flex-direction:column;max-height:280px;overflow-y:auto}.colrow{display:grid;grid-template-columns:minmax(80px,140px) auto 1fr;align-items:center;gap:8px;padding:2px 0}.colrow>input:not([type=checkbox]){grid-column:3;height:28px;border:1px solid var(--hair);border-radius:6px;background:var(--canvas);padding:0 8px;min-width:0}.modal select{border:1px solid var(--hair);border-radius:6px;background:var(--canvas);padding:3px 6px;font-size:12px}.field select{height:32px}.admin{padding:18px;display:flex;flex-direction:column;gap:20px;max-width:760px}.admin .cap{margin-bottom:6px}.admin .card{display:flex;flex-direction:column;gap:10px}.gbody{display:flex;flex-direction:column;min-height:0}.gbody>.split,.gbody>.empty{flex:1;min-height:0}.sets{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 18px;border-bottom:1px solid var(--hair)}.set{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--hair);background:var(--canvas);border-radius:8px;padding:4px 10px;font-size:12.5px}.set:hover{background:var(--soft)}.set[aria-pressed=true]{background:var(--cream);border-color:var(--coral)}.sugg{display:flex;gap:10px;flex-wrap:wrap;padding:10px 18px;border-bottom:1px solid var(--hair)}.sugg .callout{max-width:440px}.gleft{display:flex;flex-direction:column;min-width:0;min-height:0}.gleft .pane{flex:1}.gmeta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid var(--hair)}.tree td.editable{cursor:text}.tree td.editable:hover{background:var(--soft)}.tree .g td.editable:hover{background:var(--lv);filter:brightness(.92)}.cell-input,.full{width:100%;height:28px;border:1px solid var(--coral);border-radius:6px;background:var(--canvas);padding:0 8px;min-width:0}.full{border-color:var(--hair);height:32px}select.full{padding:0 6px}.inspector select.full{margin-top:4px;font-size:12px}.gform{display:flex;flex-direction:column;gap:12px}.gform .row>div{flex:1;min-width:120px}.gform label.cap{display:block;margin-bottom:4px}.inspector>.btn{align-self:flex-start}.export-kv{font-size:12.5px}.export-actions{justify-content:flex-end}.pform{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.pform label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}.pform label.wide,.pform .wide{grid-column:1/-1}.pform input:not([type=checkbox]){height:32px;border:1px solid var(--hair);border-radius:8px;background:var(--canvas);padding:0 10px;color:var(--ink)}.pform .chk{flex-direction:row;align-items:center;gap:6px;color:var(--ink)}.preset{align-items:flex-start}.preset .url{word-break:break-all}.tree{--xl-grid:#d4d4d4;table-layout:fixed;font-family:"Aptos","Calibri","Leelawadee UI","Tahoma",var(--sans);font-size:11pt;line-height:1.15;color:var(--ink)}:root[data-theme=dark] .tree{--xl-grid:#3a3a36}.tree th,.tree td{height:15pt;padding:0 5px;border:1px solid var(--xl-grid);vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}.tree th{font-size:11pt;font-weight:700;letter-spacing:0;text-transform:none;background:#ddebf7;color:#141413}.tree td.num,.tree th.num{text-align:right;font-variant-numeric:tabular-nums}.tree .g td{font-weight:400}.tree .g .cap{font-size:8pt;letter-spacing:.3px}.tree .pill{font-size:8pt;padding:0 6px;line-height:1.4}.tree .c-code{width:84px}.tree .c-t1{width:38%}.tree .c-t2{width:20%}.tree .c-en{width:28%}.tree .c-n{width:56px}.tree .cell-input{height:14pt;border-radius:0;padding:0 4px;font:inherit}.tree td:first-child{position:relative}.tree tr.g td:first-child{padding-left:15px}.tree .grip{position:absolute;left:2px;top:0;width:11px;line-height:15pt;text-align:center;cursor:grab;opacity:0;color:var(--muted-soft);font-size:10pt;-webkit-user-select:none;user-select:none}.tree tr:hover .grip,.tree tr.sel .grip{opacity:1}.drag-tag{position:fixed;top:-100px;left:0;padding:2px 10px;background:var(--coral);color:#fff;font-size:11pt;border-radius:3px}.tree tr.drop-before td{box-shadow:inset 0 2px 0 var(--coral)}.tree tr.drop-after td{box-shadow:inset 0 -2px 0 var(--coral)}.tree tr.drop-into td{box-shadow:inset 0 2px 0 var(--coral),inset 0 -2px 0 var(--coral)}.tree tr.drop-into td:first-child{box-shadow:inset 2px 2px 0 var(--coral),inset 0 -2px 0 var(--coral)}.tree tr.drop-into td:last-child{box-shadow:inset -2px 2px 0 var(--coral),inset 0 -2px 0 var(--coral)}.item.back{color:var(--muted);font-size:12px;padding:4px 10px}.item.back:hover{color:var(--ink)}.ov{padding:16px 18px 24px;display:flex;flex-direction:column;gap:16px;max-width:1280px}.ov h2{font-family:var(--display);font-weight:500;font-size:19px;letter-spacing:-.2px;color:var(--ink);margin:0 0 8px;line-height:1.2}.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.tile .big{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:26px;font-weight:500;color:var(--ink);line-height:1.3;margin:2px 0}.ov-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:16px;align-items:start}.ov-col{display:flex;flex-direction:column;gap:16px;min-width:0}.todo,.acts{list-style:none;margin:0;padding:0}.todo li{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--hair-soft)}.todo li:first-child{border-top:0}.todo .t{flex:1;min-width:0;color:var(--ink)}.done{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between;color:var(--ok);font-weight:500}.btn{text-decoration:none}.ov-table{width:100%}.ov-table th.r,.ov-table td.r{text-align:right}.ov-table .bcell{width:34%;min-width:90px}.sbar{display:flex;height:6px;border-radius:3px;overflow:hidden;background:var(--hair)}.sbar i{display:block;height:100%}.sbar .ok{background:var(--ok)}.sbar .warn{background:var(--warn)}.sbar .err{background:var(--err)}.frames{display:flex;flex-direction:column;gap:10px}.frames h2{margin:0}.frame{display:flex;flex-direction:column;gap:8px}.frame .ttl{text-decoration:none}.legend{display:flex;gap:14px;flex-wrap:wrap}.legend a{color:var(--coral);margin-right:auto;text-decoration:none}.runs{display:flex;flex-direction:column;gap:10px}.acts li{display:grid;grid-template-columns:52px 1fr auto;gap:8px;padding:5px 0;font-size:12px}.card>a.note{display:inline-block;margin-top:8px;color:var(--coral);text-decoration:none}@media(max-width:1100px){.ov-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:760px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.ov{padding:12px 16px 20px}}.picker{display:flex;align-items:center;gap:6px}.picker .cap{margin:0}.picker select{height:30px;max-width:320px;border:1px solid var(--hair);border-radius:8px;background:var(--canvas);color:var(--ink);padding:0 8px;font-size:12.5px}.picker .btn.sm{width:26px;justify-content:center;padding:0}
