/* Ideas Fest 2026 offline guide. NotLuck tokens: light poster ground by default, dark on request. */
@font-face{font-family:'Red Hat Display';src:url('/fonts/RedHatDisplay.woff2') format('woff2');font-weight:300 900;font-display:swap}
@font-face{font-family:'Red Hat Text';src:url('/fonts/RedHatText.woff2') format('woff2');font-weight:300 700;font-display:swap}
@font-face{font-family:'Red Hat Mono';src:url('/fonts/RedHatMono.woff2') format('woff2');font-weight:300 700;font-display:swap}

:root{
  --notgold:#ECD444;--notgold-dim:rgba(236,212,68,.18);
  --paper:#FFFFFF;--paper-alt:#F5F4F0;--ink:#0F0F12;--muted:#5A5A66;--pink:#B83076;--green:#4a9a8a;--danger:#c0392b;
  --bg:var(--paper);--bg-alt:var(--paper-alt);--surface:#FFFFFF;--fg:var(--ink);--fg-muted:var(--muted);
  --border:rgba(15,15,18,.10);--border-strong:rgba(15,15,18,.18);--shadow:0 10px 30px rgba(15,15,18,.08);
  --chip:rgba(15,15,18,.05);--chip-fg:var(--ink);--mark-src:url('/img/notluck-mark-black.svg');
  --font-display:'Red Hat Display',system-ui,sans-serif;--font-body:'Red Hat Text',system-ui,sans-serif;--font-mono:'Red Hat Mono',ui-monospace,monospace;
  --r-btn:12px;--r-card:20px;--r-pill:100px;--tab-h:64px;--top-h:56px;
  --ease:cubic-bezier(.4,0,.2,1);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root{--bg:#0a0a0a;--bg-alt:#141414;--surface:#1a1a1a;--fg:#fff;--fg-muted:#9a9aa8;--pink:#ec4899;
    --border:rgba(255,255,255,.09);--border-strong:rgba(255,255,255,.18);--shadow:0 10px 30px rgba(0,0,0,.35);
    --chip:rgba(255,255,255,.06);--chip-fg:#fff;color-scheme:dark}
  .brand-mark{filter:invert(1)}
  mark.marker{color:#0F0F12}
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));overscroll-behavior-y:none}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:900;letter-spacing:-.02em;line-height:1.08;margin:0}
h1{font-size:clamp(2rem,8vw,3rem)}
h2{font-size:clamp(1.4rem,5vw,1.9rem)}
h3{font-size:1.15rem;font-weight:700}
p{margin:0 0 .8em}
a{color:inherit}
button{font:inherit;color:inherit}
img{max-width:100%;display:block}
[hidden]{display:none!important}
.skip{position:absolute;left:-999px;top:0;background:var(--notgold);color:#0F0F12;padding:8px 12px;z-index:100}
.skip:focus{left:8px}
mark.marker{background:linear-gradient(transparent 38%,var(--notgold) 38%,var(--notgold) 92%,transparent 92%);color:inherit;padding:0 .08em}

/* kicker: the NotLuck signature */
.kicker{display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-weight:500;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin:0 0 10px}
.kicker::before{content:"";width:48px;height:3px;background:linear-gradient(90deg,var(--notgold),transparent);flex:none}
.kicker.pink::before{background:linear-gradient(90deg,var(--pink),transparent)}
.mono{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted)}

/* top bar */
.top{position:sticky;top:0;z-index:20;height:calc(var(--top-h) + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);display:flex;align-items:center;justify-content:space-between;gap:12px;padding-inline:16px;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;min-width:0}
.brand-mark{width:18px;height:27px;flex:none}
.brand-text{display:flex;flex-direction:column;line-height:1.1;min-width:0}
.brand-text strong{font-family:var(--font-display);font-weight:900;font-size:1rem;letter-spacing:-.01em;white-space:nowrap}
.brand-sub{font-family:var(--font-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.status{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);background:var(--chip);border-radius:var(--r-pill);padding:6px 11px;min-height:40px;font-family:var(--font-mono);font-size:.64rem;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;max-width:48%;white-space:nowrap;overflow:hidden}
.status .status-text{overflow:hidden;text-overflow:ellipsis}
.status .dot{width:8px;height:8px;border-radius:50%;background:var(--fg-muted);flex:none}
.status.ok .dot{background:var(--green);box-shadow:0 0 0 3px rgba(74,154,138,.25)}
.status.busy .dot{background:var(--notgold);animation:pulse 1.2s infinite}
.status.off .dot{background:var(--pink)}
.status.warn .dot{background:var(--danger)}
@keyframes pulse{50%{opacity:.35}}

/* layout */
.main{max-width:760px;margin:0 auto;padding:16px 16px 32px}
.section{margin:28px 0}
.stack>*+*{margin-top:12px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spread{display:flex;justify-content:space-between;align-items:center;gap:10px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:18px;box-shadow:none}
.card.gold{background:var(--notgold);color:#0F0F12;border-color:transparent}
.card.gold .kicker,.card.gold .mono{color:rgba(15,15,18,.7)}
.card.gold .kicker::before{background:linear-gradient(90deg,#0F0F12,transparent)}
.card.ink{background:#0F0F12;color:#fff;border-color:transparent}
.card.ink .kicker{color:rgba(255,255,255,.7)}
.grain{position:relative;overflow:hidden}
.grain::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.05;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--r-btn);padding:12px 18px;font-family:var(--font-display);font-weight:700;font-size:.95rem;border:1px solid var(--border-strong);background:var(--surface);color:var(--fg);text-decoration:none;cursor:pointer;min-height:46px;transition:transform .16s var(--ease),box-shadow .16s var(--ease)}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--notgold);color:#0F0F12;border-color:transparent}
.btn.primary:hover{box-shadow:0 10px 30px rgba(236,212,68,.3)}
.btn.ink{background:#0F0F12;color:#fff;border-color:transparent}
.btn.pink{background:var(--pink);color:#fff;border-color:transparent}
.btn.wa{background:#25D366;color:#0F0F12;border-color:transparent}
.btn.block{width:100%}
.btn.sm{padding:8px 14px;min-height:44px;font-size:.9rem}
.btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.iconbtn{width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.iconbtn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.iconbtn.on{background:var(--notgold);border-color:transparent;color:#0F0F12}
.iconbtn.on svg{fill:#0F0F12}

/* chips */
.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 0 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;border:1px solid var(--border);background:var(--chip);color:var(--chip-fg);border-radius:var(--r-pill);padding:9px 14px;min-height:40px;font-size:.85rem;font-weight:500;cursor:pointer;white-space:nowrap;scroll-snap-align:start}
.chip.on{background:#0F0F12;color:#fff;border-color:#0F0F12}
@media (prefers-color-scheme:dark){.chip.on{background:var(--notgold);color:#0F0F12;border-color:transparent}}
.chip.gold{background:var(--notgold);color:#0F0F12;border-color:transparent}
.tag{display:inline-block;border-radius:var(--r-pill);padding:2px 9px;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;background:var(--chip);color:var(--fg-muted)}
.tag.live{background:var(--pink);color:#fff}
.tag.gold{background:var(--notgold);color:#0F0F12}
.tag.type{border:1px solid var(--border)}

/* inputs */
.search{position:relative}
.search input{width:100%;border:1px solid var(--border-strong);background:var(--surface);color:var(--fg);border-radius:var(--r-btn);padding:12px 40px 12px 40px;font:inherit;font-size:1rem;outline:none}
.search input:focus{outline:2px solid var(--notgold);outline-offset:1px}
.search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:18px;height:18px;fill:none;stroke:var(--fg-muted);stroke-width:2;stroke-linecap:round}
.search .clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;padding:8px;cursor:pointer;color:var(--fg-muted)}
select.sel{border:1px solid var(--border-strong);background:var(--surface);color:var(--fg);border-radius:var(--r-btn);padding:10px 12px;font:inherit;font-size:.95rem;max-width:100%}

/* segmented day toggle */
.seg{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--border-strong);border-radius:var(--r-btn);overflow:hidden;background:var(--surface)}
.seg button{border:0;background:transparent;padding:10px 8px;font-family:var(--font-display);font-weight:700;cursor:pointer;color:var(--fg-muted)}
.seg button.on{background:#0F0F12;color:#fff}
@media (prefers-color-scheme:dark){.seg button.on{background:var(--notgold);color:#0F0F12}}
.seg small{display:block;font-family:var(--font-mono);font-weight:500;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;opacity:.75}

/* sticky agenda controls */
.controls{position:sticky;top:calc(var(--top-h) + env(safe-area-inset-top));z-index:10;background:var(--bg);padding:10px 0 4px;margin:0 -16px;padding-inline:16px;border-bottom:1px solid var(--border)}

/* session list */
.timegroup{margin:18px 0 6px;display:flex;align-items:baseline;gap:10px}
.timegroup h3{font-family:var(--font-display);font-weight:900;font-size:1.3rem}
.timegroup .mono{padding-bottom:2px}
.sess{display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:start;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px 14px 12px;margin:8px 0;cursor:pointer;text-decoration:none;color:inherit;transition:border-color .16s var(--ease)}
.sess:hover{border-color:rgba(236,212,68,.6)}
.sess.now{border-color:var(--pink);box-shadow:inset 3px 0 0 var(--pink)}
.sess .title{font-family:var(--font-display);font-weight:700;font-size:1.02rem;line-height:1.25;margin:0 0 4px}
.sess .meta{font-size:.85rem;color:var(--fg-muted);display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.sess .meta .space{font-weight:500;color:var(--fg)}
.sess .who{font-size:.85rem;margin-top:5px;color:var(--fg-muted)}
.sess .who b{color:var(--fg);font-weight:500}
.sess .heart{grid-row:span 3;align-self:start}
.heart svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round}
.heart.on svg{fill:currentColor}
.faces{display:flex;margin-top:8px}
.faces img{width:28px;height:28px;border-radius:50%;border:2px solid var(--surface);margin-left:-8px;object-fit:cover;background:var(--chip)}
.faces img:first-child{margin-left:0}
.empty{padding:28px 12px;text-align:center;color:var(--fg-muted)}
.empty b{display:block;font-family:var(--font-display);font-size:1.1rem;color:var(--fg);margin-bottom:4px}

/* speakers */
.person{display:flex;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border);text-decoration:none;color:inherit;cursor:pointer}
.person img,.person .ph{width:52px;height:52px;border-radius:50%;object-fit:cover;background:var(--chip);flex:none}
.person .ph{display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;color:var(--fg-muted)}
.person .name{font-family:var(--font-display);font-weight:700;font-size:1rem;line-height:1.2}
.person .sub{font-size:.85rem;color:var(--fg-muted);line-height:1.3}
.alpha{position:sticky;top:calc(var(--top-h) + 118px + env(safe-area-inset-top));background:var(--bg);padding:8px 0 4px;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.14em;color:var(--fg-muted)}
.bigface{width:112px;height:112px;border-radius:50%;object-fit:cover;background:var(--chip);border:4px solid var(--notgold)}
.links{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}

/* map */
.mapwrap{position:relative;border:1px solid var(--border-strong);border-radius:16px;overflow:hidden;background:#e9e7df;height:min(70vh,560px);touch-action:none;user-select:none;-webkit-user-select:none}
.mapwrap img{position:absolute;left:0;top:0;transform-origin:0 0;max-width:none;pointer-events:none;will-change:transform}
.mapctl{position:absolute;right:10px;bottom:10px;display:flex;flex-direction:column;gap:6px}
.mapctl button{width:44px;height:44px;border-radius:10px;border:1px solid var(--border-strong);background:var(--surface);font-family:var(--font-display);font-weight:900;font-size:1.2rem;cursor:pointer;color:var(--fg)}
.maphint{position:absolute;left:10px;bottom:10px;background:rgba(15,15,18,.75);color:#fff;border-radius:var(--r-pill);padding:5px 10px;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;pointer-events:none;transition:opacity .4s}
.zone{border:1px solid var(--border);border-radius:16px;padding:14px;background:var(--surface);margin:10px 0}
.zone h3{margin-bottom:6px}
.zone .spaces{display:flex;flex-wrap:wrap;gap:6px}
.zone .spaces a{border:1px solid var(--border);border-radius:var(--r-pill);padding:5px 11px;font-size:.85rem;text-decoration:none;background:var(--chip)}

/* info */
.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.fact{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:12px;min-width:0;overflow-wrap:anywhere}
.fact .mono{display:block;margin-bottom:4px}
.fact b{font-family:var(--font-display);font-weight:700;font-size:1rem;line-height:1.25;display:block}
.fact span{font-size:.85rem;color:var(--fg-muted)}
details{border-bottom:1px solid var(--border);padding:10px 0}
details summary{cursor:pointer;font-family:var(--font-display);font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:10px;align-items:center}
details summary::-webkit-details-marker{display:none}
details summary::after{content:"+";font-family:var(--font-mono);color:var(--fg-muted);flex:none}
details[open] summary::after{content:"–"}
details .body{padding:8px 0 4px;color:var(--fg-muted);font-size:.95rem}
.steps{counter-reset:s;list-style:none;padding:0;margin:0}
.steps li{position:relative;padding:8px 0 8px 44px;counter-increment:s}
.steps li::before{content:counter(s,decimal-leading-zero);position:absolute;left:0;top:8px;font-family:var(--font-mono);font-weight:500;color:var(--notgold);font-size:.8rem;letter-spacing:.06em;background:#0F0F12;border-radius:8px;padding:3px 6px}
.trader{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);font-size:.95rem}
.trader small{color:var(--fg-muted)}
.qr{width:200px;height:200px;background:#fff;padding:10px;border-radius:12px;margin:0 auto}
.qr svg{width:100%;height:100%;display:block}
.ruler{font-family:var(--font-mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);line-height:1.8;margin:10px 0}

/* tiles */
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tile{display:block;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px;text-decoration:none;color:inherit}
.tile b{display:block;font-family:var(--font-display);font-weight:700;font-size:1rem}
.tile span{font-size:.82rem;color:var(--fg-muted)}
.tile svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;margin-bottom:8px}

/* hero */
.hero{padding:26px 0 8px}
.hero h1{margin:6px 0 10px}
.hero p.lead{font-size:1.05rem;color:var(--fg-muted);max-width:34ch}
.orbs{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:-1}
.orbs i{position:absolute;width:420px;height:420px;border-radius:50%;filter:blur(110px);opacity:.28}
.orbs i:first-child{background:var(--notgold);right:-160px;top:-180px}
.orbs i:last-child{background:var(--pink);left:-200px;top:120px;opacity:.14}
.herowrap{position:relative}

/* tabs */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(5,1fr);background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border)}
.tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:var(--fg-muted);font-family:var(--font-mono);font-size:.6rem;letter-spacing:.1em;text-transform:uppercase}
.tabs a svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tabs a.on{color:var(--fg)}
.tabs a.on svg{stroke:var(--fg)}
.tabs a.on::after{content:"";width:22px;height:3px;border-radius:3px;background:var(--notgold);margin-top:1px}

/* sheet */
.sheet-host{position:fixed;inset:0;z-index:40;display:flex;align-items:flex-end;justify-content:center}
.sheet-host::before{content:"";position:absolute;inset:0;background:rgba(15,15,18,.45);animation:fade .2s var(--ease)}
.sheet{position:relative;width:100%;max-width:760px;max-height:calc(100dvh - 40px);overflow:auto;background:var(--bg);border-radius:22px 22px 0 0;padding:8px 18px calc(28px + env(safe-area-inset-bottom));animation:up .28s var(--ease);overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.sheet .grip{width:44px;height:5px;border-radius:5px;background:var(--border-strong);margin:6px auto 14px}
.sheet .close{position:sticky;top:6px;float:right;z-index:2;margin:-4px -6px 0 0;box-shadow:var(--shadow)}
@keyframes up{from{transform:translateY(40px);opacity:0}}
@keyframes fade{from{opacity:0}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* toast */
.toast{position:fixed;left:50%;bottom:calc(var(--tab-h) + 14px + env(safe-area-inset-bottom));transform:translateX(-50%);background:#0F0F12;color:#fff;border-radius:var(--r-pill);padding:10px 16px;font-size:.9rem;z-index:50;box-shadow:var(--shadow);max-width:92vw;text-align:center}
.toast button{margin-left:10px;border:0;background:var(--notgold);color:#0F0F12;border-radius:var(--r-pill);padding:4px 10px;font-weight:700;cursor:pointer}

.warnbox{border:1px solid var(--danger);border-radius:14px;padding:12px 14px;color:var(--danger);font-size:.9rem}
.small{font-size:.85rem;color:var(--fg-muted)}
.desc{white-space:pre-line}
.bullets{padding-left:18px;margin:0 0 .8em}
.bullets li{margin:4px 0}
hr.gold{border:0;height:3px;width:48px;background:linear-gradient(90deg,var(--notgold),transparent);margin:16px 0}
@media (min-width:700px){.facts{grid-template-columns:repeat(3,minmax(0,1fr))}.tiles{grid-template-columns:repeat(3,1fr)}}
