:root{
  --bg:#fff;--card:#fff;--fg:#0a0a0a;--mut:#737373;--line:#e5e5e5;--line-2:#d4d4d4;--soft:#f5f5f5;--soft-2:#fafafa;
  --acc:#0a0a0a;--acc-d:#262626;--on-acc:#fff;--nav:#525252;--lbl:#404040;
  --err:#dc2626;--err-l:#fef2f2;--err-b:#fecaca;--err-t:#991b1b;
  --out-bg:#fef3c7;--out-t:#92400e;--in-bg:#dcfce7;--in-t:#166534;--r:10px}
html[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0a0a0a;--card:#0a0a0a;--fg:#fafafa;--mut:#a3a3a3;--line:#262626;--line-2:#404040;--soft:#1c1c1c;--soft-2:#121212;
  --acc:#fafafa;--acc-d:#d4d4d4;--on-acc:#0a0a0a;--nav:#a3a3a3;--lbl:#d4d4d4;
  --err:#f87171;--err-l:#2a1212;--err-b:#7f1d1d;--err-t:#fca5a5;
  --out-bg:#3b2a07;--out-t:#fcd34d;--in-bg:#0b2e1a;--in-t:#86efac}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:14px/1.55 "Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;letter-spacing:-.006em}
h1{font-size:1.75rem;line-height:1.2;font-weight:600;letter-spacing:-.03em;margin:0 0 24px}
h2{font-size:1rem;font-weight:600;letter-spacing:-.015em;margin:40px 0 14px}
p{margin:0 0 12px}
a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px}
a:hover{text-decoration-color:var(--fg)}
:focus-visible{outline:2px solid var(--fg);outline-offset:2px}

.brand,.side nav a,td a{text-decoration:none}
.brand{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:1rem;letter-spacing:-.02em;color:var(--fg)}
.mark{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;background:var(--fg);color:var(--bg);font-size:.8125rem;font-weight:700;border-radius:var(--r)}
header.plain{height:60px;display:flex;align-items:center;padding:0 28px;border-bottom:1px solid var(--line)}
main{max-width:1080px;margin:0 auto;padding:40px 32px}
.page-head{margin-bottom:32px}
.page-head h1{margin:0 0 6px}
.page-head p{margin:0;color:var(--mut);font-size:.9375rem}

/* app shell */
body.app{display:grid;grid-template-columns:248px minmax(0,1fr);grid-template-rows:60px 1fr;min-height:100vh;transition:grid-template-columns .28s cubic-bezier(.4,0,.2,1)}
.app main{margin:0;width:100%;max-width:none;grid-column:2;grid-row:2}
.top{grid-column:1/-1;grid-row:1;display:flex;align-items:center;gap:12px;padding:0 20px 0 14px;background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.top button{width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--mut)}
.top button:hover{background:var(--soft);color:var(--fg)}
.top svg{width:20px;height:20px}
.side{grid-column:1;grid-row:2;position:sticky;top:60px;height:calc(100vh - 60px);min-width:0;overflow:hidden auto;display:flex;flex-direction:column;gap:16px;padding:16px 0;background:var(--bg);border-right:1px solid var(--line);transition:border-color .28s,visibility 0s}
.side>*{flex:none;width:224px;margin-left:12px}
@media(min-width:801px){
  html.sb-hidden body.app{grid-template-columns:0 minmax(0,1fr)}
  html.sb-hidden .side{visibility:hidden;border-right-color:transparent;transition:border-color .28s,visibility 0s .28s}
}
.side nav{display:flex;flex-direction:column;gap:2px}
.side nav a{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:var(--r);color:var(--nav);font-weight:500}
.side nav a:hover{background:var(--soft);color:var(--fg)}
.side nav a.active{background:var(--soft);color:var(--fg);font-weight:600}
.ico{width:18px;height:18px;flex:none}
.bottom{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}
.who{display:flex;align-items:center;gap:12px;padding:0 12px}
.avatar{width:32px;height:32px;flex:none;display:flex;align-items:center;justify-content:center;background:var(--soft);border-radius:var(--r);font-weight:600}
.meta{min-width:0}.meta b,.meta small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meta b{font-size:.8125rem;font-weight:600}.meta small{color:var(--mut);font-size:.75rem}

/* forms */
label{display:block;margin-bottom:16px;font-size:.8125rem;font-weight:500;color:var(--lbl)}
input,select{display:block;width:100%;height:40px;margin-top:6px;padding:0 12px;font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:var(--r)}
input::placeholder{color:#a3a3a3}
input:hover,select:hover{border-color:var(--line-2)}
input:focus,select:focus{outline:2px solid var(--fg);outline-offset:-1px;border-color:var(--fg)}
button{height:40px;padding:0 18px;font:inherit;font-weight:500;color:var(--on-acc);background:var(--acc);border:0;border-radius:var(--r);cursor:pointer;white-space:nowrap}
button:hover{background:var(--acc-d)}
button.danger{background:var(--bg);color:var(--err);border:1px solid var(--line)}
button.danger:hover{background:var(--err-l);border-color:var(--err-b)}
.row{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.row input{margin:0}
td .row{margin:0}
td .row button{height:30px;padding:0 12px;font-size:.8125rem}
td .row input{height:30px;font-size:.8125rem;min-width:110px;padding:0 10px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 16px;align-items:end;border:1px solid var(--line);border-radius:var(--r);padding:24px}
.grid>.row,.grid>button{grid-column:1/-1;justify-self:start}
.grid>.row{margin:0}

/* cards */
.narrow{max-width:400px;margin:56px auto;border:1px solid var(--line);border-radius:var(--r);padding:32px}
.narrow .sub{margin:-16px 0 24px;color:var(--mut)}
.narrow button{width:100%}
.msg{padding:12px 16px;margin-bottom:20px;background:var(--soft-2);border:1px solid var(--line);border-radius:var(--r)}
.msg.err{background:var(--err-l);border-color:var(--err-b);color:var(--err-t)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.stats div{background:var(--soft-2);border:1px solid var(--line);border-radius:var(--r);padding:20px 24px}
.stats span{display:block;color:var(--mut);font-size:.8125rem;font-weight:500}
.stats b{display:block;margin-top:6px;font-size:2rem;line-height:1.15;font-weight:600;letter-spacing:-.03em}

/* tables */
.scroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r)}
table{width:100%;border-collapse:collapse;min-width:560px}
th,td{padding:14px 20px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-size:.8125rem;font-weight:500;color:var(--mut);background:var(--soft-2)}
tr:hover td{background:var(--soft-2)}
tr:last-child td{border-bottom:0}
td[colspan]{padding:40px 20px;color:var(--mut)}
td a{color:var(--mut);font-weight:500}td a:hover{color:var(--fg);text-decoration:underline}
.badge{display:inline-block;padding:2px 10px;border-radius:var(--r);font-size:.75rem;font-weight:500}
.badge.out{background:var(--out-bg);color:var(--out-t)}
.badge.in{background:var(--in-bg);color:var(--in-t)}

/* theme toggle */
.theme{width:36px;height:36px;padding:0;margin-left:auto;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--mut)}
.theme:hover{background:var(--soft);color:var(--fg)}
.theme svg{width:20px;height:20px}
.i-sun{display:none}
html[data-theme="dark"] .i-sun{display:block}
html[data-theme="dark"] .i-moon{display:none}

/* smooth theme switch: only active for a moment after the toggle is clicked */
html.theme-anim *,html.theme-anim *::before,html.theme-anim *::after{transition:background-color .3s ease,color .3s ease,border-color .3s ease,fill .3s ease,stroke .3s ease!important}
@media(prefers-reduced-motion:reduce){html.theme-anim *,html.theme-anim *::before,html.theme-anim *::after{transition:none!important}}

/* item images */
td a.btn,.btn{display:inline-flex;align-items:center;height:30px;padding:0 12px;font-size:.8125rem;font-weight:500;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:var(--r);text-decoration:none}
td a.btn:hover,.btn:hover{background:var(--soft);color:var(--fg);text-decoration:none}

/* detail page */
.back{display:inline-flex;align-items:center;gap:6px;margin-bottom:16px;color:var(--mut);font-weight:500;text-decoration:none}
.back:hover{color:var(--fg)}
.back .ico{width:16px;height:16px}
.detail{display:grid;grid-template-columns:280px minmax(0,1fr) 210px;gap:24px;align-items:start}
.media{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;aspect-ratio:1/1;overflow:hidden;background:var(--soft-2);border:1px solid var(--line);border-radius:var(--r);color:var(--mut)}
.media .ph{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:.8125rem}
.media img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;padding:12px;background:var(--soft-2)}
.info{display:flex;flex-direction:column;gap:16px}
.facts{display:grid;grid-template-columns:1fr 1fr;background:var(--soft-2);border:1px solid var(--line);border-radius:var(--r)}
.facts div{padding:14px 20px}
.facts div+div{border-left:1px solid var(--line)}
.facts span{display:block;color:var(--mut);font-size:.8125rem;font-weight:500}
.facts b{display:block;margin-top:2px;font-size:1.5rem;line-height:1.15;font-weight:600;letter-spacing:-.03em}
.kv{min-width:0}.kv th{width:36%;text-transform:none;background:var(--soft-2)}
.kv td{font-weight:500}
.qrbox{border:1px solid var(--line);border-radius:var(--r);padding:16px}
.qrbox svg{width:100%;height:auto;display:block}
#qr{background:#fff;padding:8px;border-radius:var(--r)}
.qrbox button{width:100%}
.small{font-size:.8125rem;color:var(--mut);margin:12px 0}
.btn.primary,td a.btn.primary{background:var(--acc);color:var(--on-acc);border-color:var(--acc)}
.btn.primary:hover,td a.btn.primary:hover{background:var(--acc-d);color:var(--on-acc)}
.btn.lg{height:40px;padding:0 18px;font-size:.875rem;justify-content:center}
@media(max-width:1100px){.detail{grid-template-columns:280px minmax(0,1fr)}.qrbox{grid-column:2;max-width:240px}}

@media(max-width:800px){
  main{padding:24px 16px}
  h1{font-size:1.5rem}
  body.app{display:block}
  .side{position:static;height:auto;max-height:0;overflow:hidden;gap:12px;padding:0 12px;border-right:0;border-bottom:1px solid transparent;visibility:hidden;transition:max-height .28s cubic-bezier(.4,0,.2,1),padding .28s cubic-bezier(.4,0,.2,1),border-color .28s,visibility 0s .28s}
  html.sb-open .side{max-height:420px;padding:8px 12px 16px;border-bottom-color:var(--line);visibility:visible;transition:max-height .28s cubic-bezier(.4,0,.2,1),padding .28s cubic-bezier(.4,0,.2,1),border-color .28s,visibility 0s}
  .side>*{width:auto;margin-left:0}
  .bottom{margin-top:0}
  .detail{grid-template-columns:1fr}.media{max-width:280px}.qrbox{grid-column:auto;max-width:240px}
}
@media(max-width:600px){.row{flex-wrap:wrap}.narrow{margin:24px auto;padding:24px}}
@media print{
  body.app{display:block}
  .side,.top,header,.page-head,.noprint,button{display:none}
  .detail{display:block}.qrbox{border:0;width:5cm;padding:0}.qrbox button{display:none}
}

@media(prefers-reduced-motion:reduce){body.app,.side{transition:none!important}}
