:root{
  --bg:#ffffff;--card:#f6f5f2;--fg:#27231e;--mute:#7a7268;--line:#e5dfd5;--today:#fff4d6;--todayline:#e0a82e;
  --biz:#2f6fb3;--per:#3f8f5f;--hea:#c8503f;--soc:#d38a1c;--evt:#7b5aa6;--hold:#8a8f98;--warn:#b4372a;--amber:#a8690a;
  --accent:#27231e;--accfg:#fffdf9;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;
  color-scheme:light;
}
html.night{--bg:#0d0c0a;--card:#1a1815;--fg:#cfc8bc;--mute:#8a8378;--line:#2c2924;--today:#2b2410;--todayline:#a8801f;
  --biz:#6fa3dc;--per:#6fbf90;--hea:#e08575;--soc:#e0a548;--evt:#a98ad4;--hold:#9097a1;--warn:#e07a6c;--amber:#d9a04a;--accent:#cfc8bc;--accfg:#0d0c0a;color-scheme:dark}
html.night img{filter:brightness(.8)}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:15px;line-height:1.35}
body{padding:14px max(16px,env(safe-area-inset-right,0px)) 28px max(16px,env(safe-area-inset-left,0px))}
[hidden]{display:none!important}
button{font:inherit;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:6px 12px;cursor:pointer;white-space:nowrap}
button:hover{border-color:var(--mute)}
button.on{background:var(--accent);color:var(--accfg);border-color:var(--accent)}
input,select,textarea{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:7px 10px;min-width:0}
textarea{width:100%;min-height:90px}
.wrap{max-width:1700px;margin:0 auto;display:flex;flex-direction:column;gap:12px}
.top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center}
.bar{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.hdr{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.clk{font-size:44px;font-weight:700;letter-spacing:-.02em;line-height:1}
.clkd{font-size:15px;color:var(--mute);white-space:nowrap}
.clkw{font-size:20px;font-weight:500;white-space:nowrap}
.trips{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.trip{border-radius:16px;padding:8px 18px;font-size:15px;background:var(--card);white-space:nowrap;text-align:center}
.trip b{font-size:26px;display:inline-block;margin:0 4px 0 2px;vertical-align:-2px}
.ttl{font-size:22px;font-weight:700;margin:0}
@media(max-width:760px){.top{grid-template-columns:1fr}.trips{justify-content:flex-start}}
.ctl{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.seg{display:flex}.seg button{border-radius:0;margin-left:-1px}.seg button:first-child{border-radius:10px 0 0 10px;margin-left:0}.seg button:last-child{border-radius:0 10px 10px 0}
.body{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:12px;align-items:start}
.mainc{min-width:0}
#main{display:flex;flex-direction:column;gap:10px}
#main>.week,#main>.month{width:100%}
.rail{display:flex;flex-direction:column;gap:10px}
.card{background:var(--card);border-radius:18px;padding:12px;min-width:0}
.card h3{margin:0 0 8px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.li{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid var(--line)}
.li:last-child{border:0}
.li a{color:inherit;text-decoration:none}
.empty,.sub{color:var(--mute);font-size:12px}
.flag{color:var(--warn);font-weight:600;font-size:12px;white-space:nowrap}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:18px;overflow:hidden}
.day{border-right:1px solid var(--line);padding:10px 7px;min-height:300px;display:flex;flex-direction:column;gap:7px;min-width:0;cursor:pointer}
.day:last-child{border-right:0}
.day.today{background:color-mix(in srgb,var(--todayline) 9%,var(--bg))}
.day.past{opacity:.55}
.dh{display:flex;flex-direction:column;align-items:center;gap:4px}
.dw{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.dn{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;font-size:20px;font-weight:700}
.day.today .dn{background:var(--accent);color:var(--accfg)}
.wx{font-size:12px;color:var(--mute);text-align:center}
.ev{border-radius:12px;padding:7px 9px;background:color-mix(in srgb,var(--c) 20%,var(--bg));min-width:0;overflow:hidden}
.ev .t{font-weight:700;font-size:14px;color:color-mix(in srgb,var(--c) 72%,var(--fg));overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
.ev .m{font-size:11px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev.allday{border-radius:999px;padding:4px 10px;background:var(--c)}
.ev.allday .t{color:#fff;font-size:13px;-webkit-line-clamp:1;line-clamp:1}
.ev.thin{background:none;border-radius:0;border-left:3px solid var(--c);padding:0 4px;font-size:11px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.7;line-height:1.5}
.ev.hold{background:none;border:0;padding:0 2px;font-size:11px;color:var(--hold);text-align:center;opacity:.8}
.month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.mh{font-size:11px;text-align:center;color:var(--mute);letter-spacing:.08em;text-transform:uppercase}
.mc{background:var(--card);border-radius:10px;padding:5px;min-height:92px;cursor:pointer;min-width:0;overflow:hidden}
.mc.out{opacity:.4}.mc.today{background:var(--today)}
.mc .n{font-weight:700;font-size:12px}
.mt{font-size:11px;border-left:3px solid var(--c);padding-left:4px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mt.dim{opacity:.4}
.tl{position:relative;border-radius:14px;background:var(--card)}
.hr{position:absolute;left:0;right:0;border-top:1px solid var(--line);font-size:11px;color:var(--mute);padding-left:6px}
.blk{position:absolute;border-left:4px solid var(--c);border-radius:4px 8px 8px 4px;background:color-mix(in srgb,var(--c) 18%,var(--card));padding:3px 6px;overflow:hidden;font-size:13px}
.blk.dim{opacity:.4}
.blk.hold{background:none;border-left:4px dashed var(--hold);color:var(--hold)}
.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--mute);margin-top:6px}
.dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}
.fresh{font-size:12px;color:var(--mute);display:flex;gap:14px;flex-wrap:wrap}
.fresh .warn{color:var(--amber);font-weight:600}
.fresh .bad{color:var(--warn);font-weight:600}
.panel{display:flex;flex-direction:column;gap:10px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.row>input{flex:1}
.meal{display:grid;grid-template-columns:90px minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.chips{display:flex;gap:6px;flex-wrap:wrap;grid-column:2/4}
.chip{border-radius:999px;border:1px solid var(--line);padding:1px 9px;font-size:12px;background:var(--bg)}
.chip.need{border-color:var(--soc);color:var(--amber)}
.ph{display:flex;flex-wrap:wrap;gap:8px}
.ph div{position:relative}.ph img{width:76px;height:76px;object-fit:cover;border-radius:10px;display:block}
.ph button{position:absolute;top:-6px;right:-6px;padding:0 6px;border-radius:999px}
.login{min-height:80vh;display:grid;place-items:center}
.login form{display:flex;flex-direction:column;gap:10px;width:min(320px,100%);padding:22px}
.login h1{margin:0 0 6px;font-size:22px}
.err{color:var(--warn);font-size:13px;min-height:1em}
#ss{position:fixed;inset:0;z-index:50;background:#000;cursor:pointer}
#ss img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity 1.2s}
#ss img.on{opacity:1}
#ss .sso{position:absolute;left:0;right:0;bottom:0;padding:24px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.65))}
#ss .ssc{font-size:64px;font-weight:700;line-height:1}
#sleep{position:fixed;inset:0;z-index:60;background:#000;color:#8f8a80;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer}
#sleep .slc{font-size:min(22vw,200px);font-weight:300;letter-spacing:-.02em;line-height:1}
#sleep .sld{font-size:min(5vw,28px)}
@media (max-width:1000px){
  .body{grid-template-columns:1fr}
  .rail{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
  .week{grid-template-columns:1fr}.day{border-right:0;border-bottom:1px solid var(--line);min-height:0}
  .dh{flex-direction:row;justify-content:flex-start}.clk{font-size:40px}
  .meal{grid-template-columns:1fr}.chips{grid-column:1}
}
a.btn{display:inline-block;padding:10px 14px;border-radius:10px;border:1px solid var(--line,#ddd);text-decoration:none;color:inherit;font-weight:600}
