/* TX Trade System — design tokens */
:root{
  --bg:#f6f6f4;--surface:#fff;--sunken:#efefec;--ink:#14213a;--text:#2b3447;--mute:#6b7384;--line:#dcdcd6;--line2:#e9e9e4;
  --brand:#10294d;--brand-2:#1b3d70;--action:#1d4f91;--action-h:#173f74;--brass:#9a7b3c;
  --ok:#2f6f4f;--bad:#a63a32;--warn:#8a5a14;--info:#1d4f91;
  --r:4px;--ease:cubic-bezier(.2,.7,.2,1);
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;--serif:"Source Serif 4",Georgia,serif;
}
:root[data-theme=dark]{--bg:#0c1118;--surface:#131a24;--sunken:#0f151d;--ink:#eef1f6;--text:#c9d0dc;--mute:#8590a3;--line:#243042;--line2:#1b2535;--brand:#0a1424;--brand-2:#13233d;--action:#6c9be0;--action-h:#8bb2ee;--brass:#c3a263;--ok:#5fb88a;--bad:#e07a72;--warn:#d9a24a;--info:#6c9be0}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0c1118;--surface:#131a24;--sunken:#0f151d;--ink:#eef1f6;--text:#c9d0dc;--mute:#8590a3;--line:#243042;--line2:#1b2535;--brand:#0a1424;--brand-2:#13233d;--action:#6c9be0;--action-h:#8bb2ee;--brass:#c3a263;--ok:#5fb88a;--bad:#e07a72;--warn:#d9a24a;--info:#6c9be0}}
*{box-sizing:border-box}html{font-size:14.5px;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.55;-webkit-font-smoothing:antialiased}
body.ready main,body.ready .pub-main{animation:enter .28s var(--ease) both}
@keyframes enter{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
a{color:var(--action);text-decoration:none}a:hover{color:var(--action-h);text-decoration:underline;text-underline-offset:3px}
h1,h2,h3{color:var(--ink);margin:0;font-weight:600;letter-spacing:-.01em}
h1{font-size:1.45rem;line-height:1.25}h2{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);font-weight:600;margin:2rem 0 .6rem}h3{font-size:1rem}
svg.i{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.mono,td.num,.stat b,.kv dd.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
::selection{background:color-mix(in srgb,var(--action) 25%,transparent)}
:focus-visible{outline:2px solid var(--action);outline-offset:2px}

/* ---------- scroll reveal (public only, one-shot) ---------- */
.rv{opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease),transform .5s var(--ease)}.rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}}

/* ---------- application shell ---------- */
.layout{display:grid;grid-template-columns:232px 1fr;min-height:100vh}
.side{background:var(--surface);border-right:1px solid var(--line);padding:0 0 1rem;position:sticky;top:0;height:100vh;overflow:auto;z-index:30;display:flex;flex-direction:column}
.side .brand{display:flex;align-items:center;gap:.65rem;padding:.95rem 1.1rem;border-bottom:1px solid var(--line);color:var(--ink);font-weight:600;font-size:.95rem;line-height:1.2}
.side .brand:hover{text-decoration:none}.side .brand small{display:block;font-weight:400;color:var(--mute);font-size:.7rem;margin-top:2px}
.logo{width:30px;height:30px;border-radius:var(--r);background:var(--brand);color:#fff;display:grid;place-items:center;font:600 .78rem var(--mono);letter-spacing:.02em;flex:none;box-shadow:inset 0 -2px 0 var(--brass)}
.side .grp{font-size:.66rem;text-transform:uppercase;letter-spacing:.1em;color:var(--mute);margin:1.1rem 1.1rem .3rem;font-weight:600}
.side a.nav{display:flex;align-items:center;gap:.65rem;color:var(--text);padding:.42rem 1.1rem;position:relative;font-size:.9rem;transition:background .15s,color .15s}
.side a.nav svg{color:var(--mute);transition:color .15s}
.side a.nav:hover{background:var(--sunken);text-decoration:none;color:var(--ink)}
.side a.nav.on{background:color-mix(in srgb,var(--action) 8%,var(--surface));color:var(--ink);font-weight:600}
.side a.nav.on::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--action)}.side a.nav.on svg{color:var(--action)}
.side a.nav .pill{margin-left:auto}
.pill{background:var(--bad);color:#fff;border-radius:3px;padding:0 .4rem;font:600 .68rem var(--mono)}
.side form{margin:auto 1.1rem 0;padding-top:1rem}.side form button{width:100%;justify-content:center}
.shell{min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:.7rem;padding:0 2rem;height:50px;position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:1px solid var(--line)}
.topbar .sp{flex:1}.env{font:500 .72rem var(--mono);color:var(--mute);letter-spacing:.04em}.env b{color:var(--ink);font-weight:500}
.iconbtn{width:32px;height:32px;padding:0;display:grid;place-items:center;border-radius:var(--r)}.menu-btn{display:none}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--sunken);border:1px solid var(--line);color:var(--ink);display:grid;place-items:center;font:600 .68rem var(--mono)}
.who{line-height:1.15;font-size:.8rem;color:var(--ink)}.who span{color:var(--mute);font-size:.7rem;display:block}
main{padding:1.6rem 2rem 4rem;max-width:1280px;width:100%}
.top{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:1.2rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}
.sub{color:var(--mute);margin:.2rem 0 0;font-size:.88rem}

/* ---------- surfaces ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.2rem;margin-bottom:1rem}
.card h3{margin-bottom:.5rem}
.grid{display:grid;gap:1rem}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin-bottom:1rem}
.stat{display:block;padding:.9rem 1.1rem;color:var(--text);border-right:1px solid var(--line2);border-bottom:1px solid var(--line2);position:relative;transition:background .15s}
.kpis .stat:nth-child(4n){border-right:0}.kpis .stat:nth-last-child(-n+4){border-bottom:0}
.stat:hover{background:var(--sunken);text-decoration:none}
.stat b{font-size:1.65rem;display:block;line-height:1.15;color:var(--ink);font-weight:500}.stat span{color:var(--mute);font-size:.8rem}
.stat.alert b{color:var(--bad)}.stat.alert::before{content:"";position:absolute;left:0;top:.9rem;bottom:.9rem;width:3px;background:var(--bad)}
table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;font-size:.9rem}
th,td{text-align:left;padding:.5rem .85rem;border-bottom:1px solid var(--line2);vertical-align:top}
th{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--mute);background:var(--sunken);font-weight:600;border-bottom:1px solid var(--line);white-space:nowrap}
tr:hover>td{background:color-mix(in srgb,var(--action) 3.5%,var(--surface))}tr:last-child>td{border-bottom:0}td.num,th.num{text-align:right}
td a b{font-weight:600}td .mute{font-size:.84rem}

/* ---------- controls ---------- */
.btn,button{font:500 .88rem var(--sans);cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink);height:32px;padding:0 .85rem;border-radius:var(--r);display:inline-flex;align-items:center;gap:.4rem;transition:background .15s,border-color .15s,color .15s}
.btn:hover,button:hover{background:var(--sunken);border-color:color-mix(in srgb,var(--ink) 25%,var(--line));text-decoration:none;color:var(--ink)}
.btn:active,button:active{transform:translateY(1px)}
.btn.pri,button.pri{background:var(--action);border-color:var(--action);color:#fff}.btn.pri:hover,button.pri:hover{background:var(--action-h);border-color:var(--action-h);color:#fff}
:root[data-theme=dark] .btn.pri,:root[data-theme=dark] button.pri{color:#0a1424}
.btn.danger,button.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}.btn.danger:hover,button.danger:hover{background:color-mix(in srgb,var(--bad) 8%,var(--surface));color:var(--bad)}
.btn.sm,button.sm{height:26px;padding:0 .6rem;font-size:.8rem}
input,select,textarea{font:inherit;width:100%;height:34px;padding:0 .65rem;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);color:var(--ink);transition:border-color .15s,box-shadow .15s}
textarea{height:auto;padding:.5rem .65rem}
input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb,var(--ink) 25%,var(--line))}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--action);box-shadow:0 0 0 3px color-mix(in srgb,var(--action) 16%,transparent)}
input[type=checkbox],input[type=radio]{width:auto;height:auto;accent-color:var(--action)}
input[type=file]{height:auto;padding:.3rem}
label{font-weight:500;font-size:.8rem;display:block;margin-bottom:.25rem;color:var(--ink)}
.f{margin-bottom:.95rem}.f .help{color:var(--mute);font-size:.78rem;margin-top:.15rem}.err{color:var(--bad);font-size:.8rem;margin-top:.2rem}
.checks label{font-weight:400;display:inline-flex;gap:.3rem;margin-right:1rem}
.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.9rem;align-items:center;padding:.6rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
.filters input,.filters select{width:auto;min-width:130px}.filters label{display:inline-flex;gap:.3rem;align-items:center;margin:0}
.badge{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;font-weight:500;color:var(--text);white-space:nowrap}
.badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--mute);flex:none}
.s-published::before,.s-approved::before,.s-agreed::before,.s-done::before,.s-closed::before,.s-clean::before{background:var(--ok)}
.s-review::before,.s-negotiation::before,.s-doing::before,.s-in_progress::before,.s-new::before{background:var(--info)}
.s-rejected::before,.s-cancelled::before,.s-overdue::before{background:var(--bad)}.s-overdue{color:var(--bad)}
.s-draft::before,.s-open::before{background:#c28a1e}.s-archived::before{background:var(--line)}
.msgs{list-style:none;padding:0;margin:0;position:fixed;top:60px;right:20px;z-index:60;width:min(400px,calc(100vw - 40px))}
.msgs li{padding:.65rem .9rem;border-radius:var(--r);margin-bottom:.4rem;border:1px solid var(--line);border-left:3px solid var(--info);background:var(--surface);box-shadow:0 6px 24px -12px rgba(10,20,40,.35);word-break:break-word;font-size:.88rem;animation:slide .3s var(--ease) both;transition:opacity .3s}
.msgs li.out{opacity:0}@keyframes slide{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.msgs .success{border-left-color:var(--ok)}.msgs .error{border-left-color:var(--bad)}.msgs .warning{border-left-color:#c28a1e}
.kv{display:grid;grid-template-columns:150px 1fr;gap:.45rem 1rem;margin:0}.kv dt{color:var(--mute);font-size:.85rem}.kv dd{margin:0;color:var(--ink)}
.row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.mt{margin-top:1rem}.mute{color:var(--mute)}.right{margin-left:auto}
.pager{display:flex;gap:.6rem;align-items:center;margin:.9rem 0;font-size:.85rem}
.empty{padding:2.2rem;text-align:center;color:var(--mute);background:var(--surface);border:1px dashed var(--line);border-radius:var(--r)}
.body{max-width:72ch;font-size:1rem;color:var(--ink)}.comment{border-left:2px solid var(--line);padding:.15rem .9rem;margin:.7rem 0}
.warnbox{background:color-mix(in srgb,#c28a1e 10%,var(--surface));border:1px solid color-mix(in srgb,#c28a1e 40%,var(--line));color:var(--ink);border-radius:var(--r);padding:.6rem .9rem;margin-bottom:1rem;font-size:.9rem}
form.inline{display:inline}code.sec{background:var(--sunken);padding:.25rem .45rem;border-radius:var(--r);word-break:break-all;font-family:var(--mono);font-size:.82rem}

/* ---------- responsive ---------- */
@media (max-width:1000px){.hero-in{grid-template-columns:1fr}.hero-fig{min-height:280px}.hero-copy{margin:0;max-width:none}.sect .head,.form-wrap{grid-template-columns:1fr;gap:.6rem}.cap .it{grid-template-columns:50px 1fr}.cap .it p{grid-column:2}.proc{grid-template-columns:1fr 1fr;row-gap:1.5rem}.facts .wrap{grid-template-columns:1fr 1fr}.kpis{grid-template-columns:repeat(2,1fr)}.kpis .stat{border-right:1px solid var(--line2)!important;border-bottom:1px solid var(--line2)!important}.g3,.g4{grid-template-columns:1fr 1fr}}
@media (max-width:900px){.layout{grid-template-columns:1fr}.side{position:fixed;inset:0 auto 0 0;width:260px;transform:translateX(-100%);transition:transform .25s var(--ease)}body.nav-open .side{transform:none;box-shadow:0 0 40px rgba(0,0,0,.3)}
 .menu-btn{display:grid}main{padding:1.1rem 1rem 3rem}.topbar{padding:0 1rem}.who,.env{display:none}body.nav-open::after{content:"";position:fixed;inset:0;background:rgba(10,20,40,.4);z-index:20}}
@media (max-width:560px){.g2,.g3,.g4,.kpis,.proc,.facts .wrap,footer.pub .wrap{grid-template-columns:1fr}table{display:block;overflow-x:auto}.kv,.def{grid-template-columns:1fr}.pub-nav nav a:not(.btn){display:none}}
