:root{
  --bg:#0a111b;--panel:#101c2b;--panel2:#132033;--line:#25364b;--text:#d8e4f2;--dim:#8397af;--faint:#61778e;
  --mint:#60dfc3;--violet:#c4a9fc;--amber:#efbd75;--gray:#2b313a;--grayT:#8d97a6;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font:13px/1.4 system-ui,Segoe UI,sans-serif}
a{color:#9fd0ff;text-decoration:none}
header.top{display:flex;align-items:center;gap:14px;padding:10px 16px;border-bottom:1px solid var(--line);background:#101824;flex-wrap:wrap}
header.top h1{font-size:16px;margin:0;font-weight:600}
header.top nav{display:flex;gap:8px;flex-wrap:wrap}
header.top nav a,header.top button.linkish{border:1px solid #34536e;background:#15273a;color:#c9ddf2;border-radius:5px;padding:6px 10px}
header.top nav a.active{border-color:var(--mint);color:var(--mint)}
header.top .grow{margin-left:auto}
form.logout{margin:0}
.muted{color:var(--dim)}.tiny{font-size:11px}
.login-body{min-height:100vh;display:grid;place-items:center;padding:24px}
form.login{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:22px}
form.login h1{margin:0 0 8px}
form.login input[type=password],.field input,.field select,.field textarea{width:100%;background:#0b1725;color:var(--text);border:1px solid #36516c;border-radius:6px;padding:10px}
form.login button,.primary{background:#164d46;color:#91f1d8;border:1px solid #367c6e;border-radius:6px;padding:10px 14px;font-weight:650;cursor:pointer}
.error{color:#ff8a8f}
button{font:inherit;cursor:pointer}
.legend{display:flex;gap:12px;padding:6px 16px;color:var(--dim);font-size:12px;border-bottom:1px solid var(--line);overflow:auto;white-space:nowrap}
.legend i{display:inline-block;width:11px;height:11px;border-radius:2px;margin-right:4px;vertical-align:-1px}
main.diary{display:flex;min-height:calc(100vh - 78px)}
#left{flex:1;min-width:0;display:flex;flex-direction:column}
#chartbox{background:#0a111b;border-bottom:1px solid #3b516a;padding:0 8px 6px}
.terminalbar{display:flex;gap:8px;align-items:center;min-height:32px;color:#7e94ac;font-size:11px;overflow:auto}
.terminalbar b{color:#d6e6f9;letter-spacing:.06em}
.statusdot{width:6px;height:6px;border-radius:100%;background:#48cbb2}
#ticker{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#203047}
.ticker{background:#101b2a;padding:7px 10px}
.ticker small{display:block;color:#7e94ac;font-size:9px;letter-spacing:.05em}
.ticker strong{display:block;margin-top:2px;font:600 14px ui-monospace,monospace}
.toolbar{display:flex;gap:10px;align-items:center;overflow:auto;min-height:32px;color:#8ea3bb;font-size:11px}
.toolbar button{border:1px solid #293c53;background:#101c2b;color:#94a9c2;border-radius:3px;padding:3px 7px}
.toolbar button.active{border-color:#4e83a5;color:#bfe7ff;background:#1b354d}
#chart{min-height:280px}
#forecastNote{font-size:11px;color:#7e94ac;padding:4px 2px 0}
#tablewrap{overflow:auto}
table.days{border-collapse:separate;border-spacing:0;width:100%}
table.days th{position:sticky;top:0;background:#1c232c;color:var(--dim);font-size:12px;padding:7px 5px;border-bottom:1px solid var(--line)}
table.days td{border-bottom:1px solid var(--line);text-align:center;height:36px;padding:0}
table.days tr{cursor:pointer}
table.days tr.sel td{box-shadow:inset 0 2px 0 #5aa2ff,inset 0 -2px 0 #5aa2ff}
.c{display:flex;align-items:center;justify-content:center;min-height:32px;margin:1px;border-radius:3px;padding:0 6px}
.c.n{background:var(--gray);color:var(--grayT)}
.c.plain{color:var(--text)}
.date{justify-content:flex-start;gap:6px}
tr.we .date{background:#1d2433;color:#9fc2ff}
aside.panel{width:min(430px,100%);border-left:1px solid var(--line);background:#101824;overflow:auto;padding:12px 14px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.kv{background:#132033;border-radius:5px;padding:6px 8px}
.kv .k{color:var(--dim);font-size:11px}
.kv .val{font-weight:650;margin-top:2px}
.foot{color:var(--faint);font-size:11px;line-height:1.45}
.planner-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px;padding:16px}
.box{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:14px;margin-bottom:12px}
.chips{display:flex;gap:10px;margin:10px 0}
.chip{background:#122334;padding:10px 14px;border-left:2px solid #437792;flex:1}
.chip b{font:600 18px ui-monospace,monospace;color:var(--mint)}
.scroll{overflow:auto}
table.month{border-collapse:collapse;width:100%;font-size:11px}
table.month th,table.month td{border:1px solid #24354b;text-align:center;padding:6px 2px}
table.month th.product{text-align:left;min-width:160px;background:#132235;padding:8px}
td.slot{color:#69d4c7;background:#10292d}
td.break{background:repeating-linear-gradient(135deg,#151e2a,#151e2a 3px,#1c2838 3px,#1c2838 6px);color:#61778e}
td.selected{box-shadow:inset 0 0 0 1px #a594ed}
.phone{border:1px solid #33506b;background:#0e1825;border-radius:14px;overflow:hidden}
.phone-head{padding:14px;background:#17273a;border-bottom:1px solid var(--line)}
.phone-body{padding:12px}
.intake{border:1px solid #2b3f54;background:#122234;border-radius:7px;padding:10px;margin-bottom:8px}
.intake label{display:flex;gap:8px;align-items:flex-start}
.intake input[type=checkbox]{width:20px;height:20px;accent-color:#5bceb4}
.intake small{display:block}
.intake .dose-line{margin:8px 0 0 28px}
.intake .dose{width:64px}
.actions{display:flex;gap:8px}
.actions .primary{flex:1}
.summary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.summary div{border:1px solid var(--line);border-radius:5px;padding:8px}
.quick{max-width:640px;margin:0 auto;padding:16px}
.field{margin:10px 0}
.anchors{display:flex;justify-content:space-between;color:var(--dim);font-size:11px}
.mobile-nav{display:none;gap:8px;padding:10px}
@media(max-width:800px){
  main.diary{flex-direction:column}
  aside.panel{width:100%;border-left:0;border-top:1px solid var(--line)}
  .planner-layout{display:block;padding:10px}
  .planner{display:none}
  body.show-month .planner{display:block}
  body.show-month .phone-col{display:none}
  .mobile-nav{display:flex}
  #ticker{grid-template-columns:1fr 1fr}
}
