:root{--ink:#1c1917;--ink2:#292524;--paper:#f5f5f4;--mid:#e7e5e4;--card:#fff;--acc:#d97706;--acc-ink:#1c1917;--soft:#78716c;--line:#d6d3d1;--text:#1c1917;--bg:#f5f5f4;--stage:#1c1917;--stage-ink:#f5f5f4;
--serif:Georgia,"Times New Roman",serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
html.night{--bg:#1a0b2e;--paper:#1a0b2e;--mid:#120524;--card:#2a1b3d;--acc:#ff00ff;--acc-ink:#fff;--soft:#c9a79f;--line:rgba(255,255,255,.14);--text:#e0bfb8;--stage:#0f0620;--stage-ink:#fff}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-text-size-adjust:100%}
body,.deck,.stage,.band,.card,.foot,.dungeon,.panel{transition:background-color .5s,border-color .5s,color .5s}
a{color:inherit}h1,h2,h3,h4{font-family:var(--serif);font-weight:400;letter-spacing:-.02em}
html:not(.night) .night-only,html:not(.night) .night-text,html.night .day-only{display:none!important}
.ic{width:64px;height:52px}
/* decks */
body.home{overflow:hidden;overscroll-behavior:none}
#decks{height:100dvh;overflow-y:auto;scroll-snap-type:y mandatory;scroll-behavior:smooth}
.deck{height:100dvh;scroll-snap-align:start;scroll-snap-stop:always}
.deck.one{position:relative;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,30fr) auto minmax(0,47fr) auto;background:var(--paper);overflow:hidden}
.stage{background:var(--stage);color:var(--stage-ink);padding:max(14px,env(safe-area-inset-top)) 20px 12px;display:flex;flex-direction:column;justify-content:space-between;gap:6px;min-height:0;overflow:hidden}
.stage .row{border:0;padding:0;display:flex;justify-content:space-between;align-items:center;gap:10px}
.stage h1{margin:0;font-size:clamp(19px,5.6vw,30px);letter-spacing:-.04em;white-space:nowrap}
html.night .stage h1{text-shadow:0 0 12px #ff00ff}
.status{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;color:var(--acc);letter-spacing:.08em;white-space:nowrap}
.status i{width:8px;height:8px;border-radius:50%;background:currentColor;animation:p 2s infinite}
@keyframes p{50%{opacity:.3}}
.links{display:flex;gap:14px;font-size:12px}.links a{opacity:.75;text-underline-offset:3px}
.log .lbl{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#a8a29e}html.night .log .lbl{color:var(--acc)}
.log p{margin:4px 0 0;font-size:14px;line-height:1.45;font-style:italic;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.log a{color:var(--acc);font-weight:700;font-style:normal}html.night .log a{color:#fff}
.band{display:flex;height:58px;background:var(--ink2);border-block:4px solid var(--acc);box-shadow:0 8px 20px rgba(0,0,0,.25);z-index:2}
html.night .band{background:#000}
.band input{flex:1;min-width:0;background:transparent;border:0;padding:0 20px;font-size:16px;color:#f5f5f4;outline:none}
.band input::placeholder{color:#a8a29e}
.band button{border:0;background:var(--acc);color:var(--acc-ink);padding:0 26px;font-weight:900;letter-spacing:.14em;font-size:14px;cursor:pointer}
.band.solo{margin:16px 0}
.stagewrap{position:relative;display:flex;flex-direction:column;background:var(--mid);min-height:0}
.guide{margin:0;padding:9px 20px 0;font-size:12px;color:var(--soft)}.guide a{font-weight:700}
.cycle{flex:1;min-height:0;display:flex;gap:16px;align-items:stretch;overflow-x:auto;scroll-snap-type:x mandatory;padding:10px 20px 14px;scrollbar-width:none}
.cycle::-webkit-scrollbar{display:none}
.card{flex:0 0 min(78vw,330px);scroll-snap-align:center;display:flex;flex-direction:column;background:var(--card);color:var(--text);text-decoration:none;border-left:8px solid var(--ink);box-shadow:0 8px 20px rgba(0,0,0,.14);min-height:0;overflow:hidden}
html.night .card{border-left:0;border-top:4px solid #fff}
.card .art{position:relative;flex:1 1 46%;min-height:60px;display:flex;align-items:center;justify-content:center;color:var(--ink);background:repeating-linear-gradient(135deg,#e7e5e4 0 10px,#d6d3d1 10px 20px)}
.t-breakfast .art{background:repeating-linear-gradient(135deg,#fde8c8 0 10px,#fbd9a5 10px 20px)}.t-lunch .art{background:repeating-linear-gradient(90deg,#e4eccd 0 12px,#d5e1b6 12px 24px)}
.t-dinner .art{background:repeating-linear-gradient(45deg,#f2d2c4 0 10px,#e9bda9 10px 20px)}.t-side .art{background:repeating-linear-gradient(0deg,#d9e6dc 0 10px,#c4d9c9 10px 20px)}
.t-dessert .art{background:radial-gradient(#f4c7cf 22%,transparent 24%) 0 0/20px 20px,#fae3e6}.t-snack .art{background:radial-gradient(#f3d98d 20%,transparent 22%) 0 0/18px 18px,#fbf0cf}
html.night .card .art{background:#000;color:var(--acc)}
.card .tag{position:absolute;top:10px;left:10px;background:var(--ink);color:#fff;font-size:10px;font-weight:800;padding:4px 7px;letter-spacing:.04em;text-transform:uppercase}
html.night .card .tag{background:#fff;color:#000}.card .time{position:absolute;right:10px;top:10px;font-size:11px;font-weight:700}
.card .body{flex:1 1 54%;padding:12px 16px;display:flex;flex-direction:column;gap:4px;min-height:0}
.card h3{margin:0;font-size:clamp(17px,2.6vh,22px);line-height:1.12;color:var(--text)}html.night .card h3{color:#fff}
.card p{margin:0;font-size:12px;font-style:italic;color:var(--soft);overflow:hidden}
.card .cta{margin-top:auto;align-self:flex-end;font-size:12px;font-weight:800;color:var(--acc);text-transform:uppercase}
.t-pour,.t-latenight{box-shadow:0 0 15px #ff00ff!important;border:3px solid #ff00ff!important}.t-pour .cta,.t-latenight .cta{border:1px solid currentColor;padding:3px 7px}
.sponsor,.card.empty{align-items:center;justify-content:center;text-align:center;padding:16px;gap:8px;background:transparent;border:2px dashed var(--soft);box-shadow:none}
html.night .sponsor{border-top:2px dashed var(--soft)}
.sponsor .sp{font-size:9px;text-transform:uppercase;letter-spacing:.14em;color:var(--soft)}.sponsor strong,.card.empty strong{font-family:var(--serif);font-weight:400;font-size:20px}
.sponsor .btn{background:var(--ink);color:#fff;padding:8px 14px;font-size:10px;font-weight:800;text-transform:uppercase}
html.night .sponsor .btn{background:#fff;color:#000}
.nudge{display:none;position:absolute;top:50%;z-index:3;width:38px;height:54px;border:0;background:var(--ink);color:#fff;font-size:22px;cursor:pointer}.nudge.l{left:0}.nudge.r{right:0}
html.night .nudge{background:var(--acc)}@media(hover:hover) and (min-width:800px){.nudge{display:block}}
.foot{background:var(--ink);color:#e7e5e4;display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 12px max(8px,env(safe-area-inset-bottom));min-width:0}
.recall{font-size:11px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none;color:#fbbf24}
html.night .foot{background:#000}html.night .recall{color:#e0bfb8}
.banner{width:320px;max-width:100%;min-height:42px;display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;background:var(--ink2);text-decoration:none;border:1px solid rgba(255,255,255,.1)}
.banner.raw{background:none;border:0}
.snap{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--acc);animation:b 2s infinite}
@keyframes b{50%{transform:translateY(3px)}}
.deck.two{background:var(--acc);display:flex;flex-direction:column;align-items:center;gap:10px;padding:max(16px,env(safe-area-inset-top)) 16px 16px;overflow-y:auto;color:var(--ink)}
.back{font-size:12px;font-weight:900;letter-spacing:.24em;text-transform:uppercase;text-decoration:none;color:#1c1917}
.dungeon{background:#fff;color:#1c1917;width:100%;max-width:400px;padding:20px;border:4px solid var(--ink);box-shadow:0 12px 30px rgba(0,0,0,.3);transform:rotate(-1deg)}
html.night .dungeon{background:#1a0b2e;color:#fff;border-color:#fff}
.dungeon h2{font-size:34px;margin:0}.sub{font-size:13px;opacity:.75;margin:4px 0 12px}
.dungeon form{display:flex;flex-direction:column;gap:8px}
.dungeon input,.dungeon select,.dungeon textarea{width:100%;font:16px var(--sans);padding:8px;border:2px solid #e7e5e4;background:transparent;color:inherit;outline:none}
.dungeon select option{color:#1c1917}.dungeon .line{border-width:0 0 2px}
.send{display:block;width:100%;background:#1c1917;color:#fff;border:0;padding:14px;font-weight:900;font-size:13px;letter-spacing:.14em;text-transform:uppercase;text-align:center;text-decoration:none;cursor:pointer}
html.night .send{background:#fff;color:#000}
.install{width:100%;margin-top:10px;background:none;color:inherit;border:2px solid currentColor;padding:9px;font-size:11px;font-weight:900;text-transform:uppercase;cursor:pointer}
.install-help{font-size:13px}.hp{position:absolute;left:-9999px}
.ok{background:#dcfce7;color:#14532d;padding:10px;font-size:14px}.bad{background:#fee2e2;color:#7f1d1d;padding:10px;font-size:14px}
#peek{position:absolute;right:8px;top:calc(46px + env(safe-area-inset-top));z-index:20;background:rgba(0,0,0,.55);color:#fff;border:1px solid rgba(255,255,255,.3);font:10px ui-monospace,monospace;text-transform:uppercase;padding:6px}
/* sheet */
#sheet{position:fixed;inset:0;z-index:50}.scrim{position:absolute;inset:0;background:rgba(0,0,0,.75);opacity:0;transition:opacity .3s}
.panel{position:absolute;left:0;right:0;bottom:0;height:92dvh;max-width:640px;margin:auto;background:var(--paper);color:var(--text);border-radius:28px 28px 0 0;border-top:8px solid var(--acc);transform:translateY(100%);transition:transform .35s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column}
#sheet.up .panel{transform:none}#sheet.up .scrim{opacity:1}
.grab{width:40px;height:4px;background:var(--line);border-radius:4px;margin:10px auto 0}
.x{position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:50%;border:0;background:var(--line);color:var(--text);font-weight:800;cursor:pointer;z-index:2}
.scroll{flex:1;overflow-y:auto;padding:14px 24px 32px}
/* recipe */
.kicker{font-size:11px;font-weight:800;color:var(--acc);text-transform:uppercase;letter-spacing:.14em}
.rc h2,.logpost h2{font-size:30px;line-height:1.05;margin:4px 44px 8px 0;color:var(--text)}html.night .rc h2{color:#fff}
.facts{list-style:none;display:flex;flex-wrap:wrap;gap:6px 14px;padding:0;margin:0 0 10px;font-size:13px;color:var(--soft)}
blockquote{margin:12px 0;padding:8px 14px;border-left:4px solid var(--line);font-style:italic;font-size:14px}cite{display:block;font-size:12px;opacity:.7}
.rc h4{font-size:21px;margin:22px 0 2px;text-decoration:underline;text-decoration-color:var(--acc);text-underline-offset:4px}.hint{margin:4px 0 8px;font-size:12px;color:var(--soft)}
.goods{list-style:none;padding:0;margin:0}.goods li{border-bottom:1px solid var(--line)}
.goods button{width:100%;display:flex;gap:10px;align-items:flex-start;text-align:left;background:none;border:0;padding:9px 0;font:15px var(--sans);color:inherit;cursor:pointer}
.box{flex:none;width:20px;height:20px;border:2px solid var(--acc);border-radius:4px}.goods .done{opacity:.35}.goods .done .box{background:var(--acc)}
.method{list-style:none;padding:0;margin:8px 0}.method li{display:flex;gap:14px;margin-bottom:14px}.method .n{font:italic 26px var(--serif);color:var(--soft);opacity:.65}.method p{margin:3px 0;font-size:15px;line-height:1.55}
.tip{background:var(--mid);padding:12px 14px;font-size:14px;line-height:1.45}.note{font-size:13px;color:var(--soft)}
.lp{display:block;margin-top:18px;padding:12px;background:var(--ink);color:#e7e5e4;text-decoration:none;font-size:12px;text-align:center}
/* plain pages */
.top{background:var(--stage);color:var(--stage-ink);padding:14px 20px;display:flex;flex-wrap:wrap;gap:6px 18px;justify-content:space-between;align-items:center;border-bottom:4px solid var(--acc)}
.brand{font:20px var(--serif);text-decoration:none;letter-spacing:-.03em}.top nav{display:flex;flex-wrap:wrap;gap:12px;font-size:13px}.top nav a{text-underline-offset:3px}.top nav a.on{color:var(--acc);font-weight:800}
.wrap{max-width:680px;margin:auto;padding:22px 16px 60px;line-height:1.55}.wrap.wide{max-width:760px}
.wrap h2{font-size:34px;margin:6px 0 8px;line-height:1.1}.wrap h3{font-size:22px;margin:28px 0 6px}.lead{color:var(--soft);font-size:15px}.by{font-size:12px;color:var(--soft)}
body.plain{overflow:auto;height:auto}
.list{list-style:none;padding:0}.list a{display:block;padding:12px 0;border-bottom:1px solid var(--line);text-decoration:none}.list span{display:block;font-size:12px;color:var(--soft)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}.grid .card{height:270px;flex:none}
.recallcard{border-left:6px solid var(--acc);padding:6px 12px;margin:14px 0;background:var(--card)}.recallcard h3{margin:2px 0;font-size:19px}.recallcard p{margin:4px 0;font-size:14px;overflow-wrap:anywhere}.cls{font-size:11px;font-weight:800;text-transform:uppercase}
.how li{margin-bottom:10px}
.logpost p{font-size:16px}
/* office */
.notecard{position:relative;margin:18px 0;padding:22px 20px 20px 34px;color:#1c1917;display:flex;flex-direction:column;gap:12px;box-shadow:0 8px 22px rgba(0,0,0,.18);background:linear-gradient(90deg,transparent 22px,#f3a6a6 22px 23px,transparent 23px),repeating-linear-gradient(#fffdf6 0 29px,#c7ddf0 29px 30px)}
.notecard label{display:flex;flex-direction:column;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;gap:3px}.notecard small{font-weight:400;text-transform:none;letter-spacing:0;color:#57534e}
.notecard label.inline,label.inline{flex-direction:row;gap:8px;align-items:center;text-transform:none;font-weight:600;letter-spacing:0;font-size:14px}
.notecard input:not([type=checkbox]),.notecard select,.notecard textarea{font:16px/30px var(--serif);width:100%;background:rgba(255,255,255,.55);border:0;border-bottom:2px solid #a8a29e;padding:0 6px;color:#1c1917;outline:none;resize:vertical}
.notecard textarea{border:2px solid #d6d3d1;overflow:hidden;min-height:150px}
.notecard .title input{font-size:18px}.three,.two{display:grid;gap:10px}.three{grid-template-columns:2fr 1fr 1fr}.two{grid-template-columns:1fr 2fr}
@media(max-width:520px){.two{grid-template-columns:1fr}.notecard{padding-left:30px}}
.notecard .send{background:#1c1917;color:#fff}
.notecard.login{max-width:380px;margin:24px auto}.notecard.login h2{font-size:28px;margin:0}code{font-size:18px;background:#fff;padding:2px 6px;user-select:all}
.warn{background:#fef3c7;border:2px solid #d97706;padding:10px 12px;font-size:14px}.warn ul{margin:6px 0;padding-left:18px}
.paste{border:2px solid var(--line);padding:12px;background:var(--card);margin:12px 0}.paste summary{font:18px var(--serif);cursor:pointer}.paste textarea,.box textarea{width:100%;font:15px/1.5 var(--sans);margin-top:10px;padding:10px;background:var(--bg);color:var(--text);border:1px solid var(--line)}
.btns{display:flex;gap:8px;margin-top:8px;align-items:center}.btns .send{width:auto;flex:1}.ghost{background:none;border:2px solid currentColor;color:inherit;padding:10px 12px;font-weight:800;cursor:pointer;font-size:12px;text-transform:uppercase}
.meter{padding:10px 12px;font-size:14px}.meter.low{background:#dcfce7;color:#14532d}.meter.high{background:#fee2e2;color:#7f1d1d}
.row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.row b{display:block}.row span{font-size:12px;color:var(--soft)}.row .btns{margin:0}
.mini{font-size:12px;font-weight:800;padding:7px 10px;background:var(--ink);color:#fff;text-decoration:none;border:0;cursor:pointer;white-space:nowrap}.mini.ghost{background:none;color:inherit;border:1px solid currentColor}
form.box{display:flex;flex-direction:column;gap:8px;max-width:520px;width:auto;height:auto;border:0;border-radius:0;margin-bottom:8px}form.box input:not([type=file]){padding:10px;font-size:16px;width:100%}.box input[type=password]{padding:10px;font-size:16px}.copy{width:100%;padding:8px;font-size:12px}
html.night .cycle .night-only{order:-1}

.tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0}.tools>button,.scale button{background:none;border:2px solid var(--acc);color:var(--text);font-weight:800;font-size:13px;padding:6px 10px;cursor:pointer}
.fav.on{background:var(--acc);color:var(--acc-ink)}.scale{display:flex;align-items:center;gap:8px;font-size:13px}.scale button{width:34px;padding:4px 0;font-size:17px}
.signup{margin-top:12px;font-size:13px;font-weight:700}.signup>div{display:flex;gap:6px;margin-top:4px}.signup input{flex:1;min-width:0}.signup button{background:#1c1917;color:#fff;border:0;padding:0 10px;font-weight:800;font-size:12px;cursor:pointer}html.night .signup button{background:#fff;color:#000}
html #savedGrid .night-only{display:flex!important}
@media print{#decks,#peek,.top,.lp,.scrim,.grab,.x,.noprint,#sheet[hidden]{display:none!important}
:root,html.night{--paper:#fff;--bg:#fff;--text:#000;--soft:#333;--line:#bbb;--mid:#fff;--acc:#000}
html,body{height:auto!important;overflow:visible!important;background:#fff!important;color:#000}
#sheet,.panel{position:static!important;height:auto!important;transform:none!important;border:0!important;max-width:none}.scroll{overflow:visible;padding:0}.wrap{padding:0}.rc h2{color:#000!important}.goods .done{opacity:1}}


.lp-slot{width:100%;max-width:100%;overflow:hidden}.lp-slot:empty{display:none}.lp-slot:not(:empty)+.lp-fall{display:none}.lp-fall{width:100%}.lp-fall a{text-decoration:none}
.foot .lp-slot{max-height:96px}.foot .banner.raw{width:min(100%,728px);max-width:100%;min-height:0}.adcard{overflow:hidden}.adcard .lp-slot{max-height:100%}
