:root{--surface-canvas:#071416;--surface-panel:#0d2223;--text-muted:#9cb0aa;--text-error:#ffad91;--text-danger:#ff9c82;--text-accent:#83c8bb;--focus-ring:#ff8a54;--ui-accent:#6fb7aa;--ink:#071416;--ink-raised:#0d2223;--ink-soft:#173031;--vellum:#e7d5ae;--vellum-bright:#f2e5c7;--vellum-dim:#c9b48b;--ember:#dc5b2f;--ember-bright:#f17846;--verdigris:#5fa79a;--verdigris-dark:#2f6d67;--charcoal:#172324;--muted:#78908b;--line:#c7b48b47;--danger:#c24c3b;--display:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--body:"Avenir Next Condensed", "Gill Sans", "Trebuchet MS", sans-serif;color:var(--vellum);background:var(--ink);font-family:var(--body);font-synthesis:none;text-rendering:optimizelegibility}:root[data-theme=light]{--surface-canvas:#d8c49d;--surface-panel:#eadbb9;--text-muted:#384b47;--text-error:#8a251e;--text-danger:#8a251e;--text-accent:#15534e;--focus-ring:#8a3b14;--ui-accent:#15534e;--ink:#d8c49d;--ink-raised:#eadbb9;--ink-soft:#f4e9cf;--vellum:#1a302f;--vellum-bright:#0c2222;--vellum-dim:#435b56;--ember:#8a3b14;--ember-bright:#6f2c0f;--verdigris:#15534e;--verdigris-dark:#174f4b;--charcoal:#f5e8ca;--muted:#536a65;--line:#1d403d3d;--danger:#8a251e}*{box-sizing:border-box}html{background:var(--ink);scroll-behavior:smooth;min-width:320px}body{background-color:var(--ink);min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button,summary,a{-webkit-tap-highlight-color:transparent}button,a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:4px}button:disabled{cursor:not-allowed;opacity:.5}.app-shell{isolation:isolate;background:radial-gradient(ellipse at 12% 4%, #5fa79a1a, transparent 38%), repeating-radial-gradient(ellipse at 78% 42%, transparent 0 48px, #5fa79a0e 49px 50px), var(--ink);min-height:100vh;position:relative;overflow:hidden}.app-shell:before{z-index:-1;opacity:.24;pointer-events:none;content:"";background-image:linear-gradient(93deg,#0000 49%,#e7d5ae0f 50%,#0000 51%),linear-gradient(7deg,#0000 49%,#e7d5ae0a 50%,#0000 51%);background-size:160px 190px,210px 150px;position:fixed;inset:0}.skip-link{z-index:100;color:var(--charcoal);background:var(--vellum-bright);padding:.65rem 1rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-header{border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;width:min(1440px,100% - 5rem);margin:0 auto;padding:1.4rem 0 1.15rem;display:grid}.brand{align-items:center;gap:.85rem;display:flex}.crest{aspect-ratio:1;border:1px solid var(--verdigris);width:3rem;color:var(--verdigris);place-items:center;display:grid;transform:rotate(45deg)}.crest span{font-family:var(--display);letter-spacing:.08em;font-size:.78rem;transform:rotate(-45deg)}.brand-overline,.section-kicker,.eyebrow{color:var(--text-accent);letter-spacing:.2em;text-transform:uppercase;margin:0 0 .2rem;font-size:.64rem;font-weight:700;line-height:1.2}.brand h1{font-family:var(--display);letter-spacing:.04em;margin:0;font-size:clamp(1.35rem,2vw,1.85rem);font-weight:500}.header-motto{color:var(--text-muted);font-family:var(--display);letter-spacing:.04em;margin:0;font-size:.93rem;font-style:italic}.theme-toggle{border:1px solid var(--line);color:var(--vellum-dim);cursor:pointer;letter-spacing:.1em;text-transform:uppercase;background:0 0;border-radius:999px;justify-self:end;align-items:center;gap:.55rem;padding:.52rem .75rem;font-size:.72rem;display:flex}.theme-toggle:hover{border-color:var(--verdigris);color:var(--text-accent)}.theme-toggle span:first-child{font-size:1rem}.expedition-layout{grid-template-columns:minmax(0,1fr) minmax(19rem,25rem);grid-template-areas:"oracle controls";gap:clamp(2rem,5vw,6rem);width:min(1440px,100% - 5rem);margin:0 auto;padding:clamp(3rem,6vw,6.5rem) 0 4.5rem;display:grid}.expedition-panel{color:var(--vellum-bright);border:1px solid var(--line);border-top:3px solid var(--verdigris-dark);background:linear-gradient(#0d2223eb,#0d2223eb),repeating-linear-gradient(0deg,#0000 0 27px,#5fa79a1a 28px);grid-area:controls;align-self:start;padding:1.8rem 1.65rem;animation:.6s .12s both reveal-panel;box-shadow:14px 16px #0000001f}:root[data-theme=light] .expedition-panel{background:linear-gradient(#eadbb9f2,#eadbb9f2),repeating-linear-gradient(0deg,#0000 0 27px,#2f6d671a 28px)}.expedition-panel h2,.manual-panel h2{font-family:var(--display);margin:.2rem 0 .65rem;font-size:1.35rem;font-weight:500}.muted-copy{color:var(--text-muted);margin:0 0 1rem;font-size:.83rem;line-height:1.55}.location-reading{color:var(--vellum-dim);align-items:flex-start;gap:.6rem;margin:0 0 .7rem;font-size:.82rem;line-height:1.4;display:flex}.location-pulse{background:var(--ui-accent);border-radius:50%;flex:none;width:.52rem;height:.52rem;margin-top:.25rem;box-shadow:0 0 0 4px #5fa79a21}.text-button{color:var(--text-accent);cursor:pointer;letter-spacing:.04em;background:0 0;border:0;align-items:center;gap:.4rem;padding:0;font-size:.76rem;font-weight:700;display:inline-flex}.text-button:hover{color:var(--ember-bright)}.address-search,.manual-panel form{gap:.75rem;margin-top:1rem;display:grid}.field{gap:.32rem;display:grid}.field label{color:var(--vellum-dim);letter-spacing:.08em;text-transform:uppercase;font-size:.68rem;font-weight:700}.field input{border:1px solid var(--line);width:100%;min-width:0;color:var(--vellum-bright);caret-color:var(--ember-bright);background:#07141670;border-radius:0;padding:.72rem .76rem}:root[data-theme=light] .field input{background:#f4e9cfb3}.field input::placeholder{color:var(--text-muted);opacity:1}.field input:focus{border-color:var(--ui-accent)}.field-error{color:var(--text-error);margin:0;font-size:.76rem;line-height:1.4}.secondary-button,.danger-button,.maps-link{border:1px solid var(--line);min-height:2.35rem;color:var(--vellum);cursor:pointer;letter-spacing:.07em;text-transform:uppercase;background:0 0;justify-content:center;align-items:center;padding:.55rem .8rem;font-size:.72rem;font-weight:700;text-decoration:none;display:inline-flex}.secondary-button:hover,.maps-link:hover{border-color:var(--verdigris);color:var(--text-accent)}.danger-button{color:var(--text-danger);border-color:#c24c3b8c}.danger-button:hover{border-color:var(--danger);background:#c24c3b1f}.rule{color:var(--verdigris-dark);grid-template-columns:1fr auto 1fr;align-items:center;gap:.6rem;margin:1.5rem 0;font-size:.55rem;display:grid}.rule:before,.rule:after{content:"";background:var(--line);height:1px}.radius-selector{border:0;min-width:0;margin:0;padding:0}.radius-selector legend,.dice-selector legend{width:100%;color:var(--vellum-bright);font-family:var(--display);margin-bottom:.85rem;font-size:1.35rem}.radius-options{grid-template-columns:repeat(3,1fr);gap:.45rem;display:grid}.radius-option{border:1px solid var(--line);min-width:0;color:var(--text-muted);cursor:pointer;background:0 0;grid-template-columns:auto auto;justify-content:center;align-items:baseline;gap:.1rem;padding:.6rem .25rem;display:grid}.radius-option strong{font-family:var(--display);font-size:1.2rem;font-weight:500}.radius-option span{font-size:.66rem}.radius-option small{letter-spacing:.08em;text-transform:uppercase;grid-column:1/-1;font-size:.55rem}.radius-option[aria-pressed=true]{border-color:var(--ui-accent);color:var(--vellum-bright);box-shadow:inset 0 -2px var(--ui-accent);background:#5fa79a1a}.manual-list,.blacklist-content ul{gap:0;margin:1rem 0 0;padding:0;list-style:none;display:grid}.manual-list li,.blacklist-content li{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:.75rem;padding:.65rem 0;display:flex}.manual-list li>span{min-width:0;display:grid}.manual-list strong{font-family:var(--display);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:500;overflow:hidden}.manual-list small{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.65rem;overflow:hidden}.icon-button{border:1px solid var(--line);width:1.85rem;height:1.85rem;color:var(--text-muted);cursor:pointer;background:0 0;flex:none;padding:0}.blacklist-drawer{border-top:1px solid var(--line);margin:1.6rem -1.65rem -1.8rem}.blacklist-drawer summary{cursor:pointer;font-family:var(--display);justify-content:space-between;align-items:center;padding:1rem 1.65rem;list-style:none;display:flex}.blacklist-drawer summary::-webkit-details-marker{display:none}.blacklist-drawer summary>span:first-child{gap:.2rem;display:grid}.blacklist-count{border:1px solid var(--line);width:1.65rem;height:1.65rem;color:var(--text-muted);font-family:var(--body);border-radius:50%;place-items:center;font-size:.68rem;display:grid}.blacklist-content{padding:0 1.65rem 1.35rem}.blacklist-content ul{margin:0 0 1rem}.blacklist-content li{font-family:var(--display);font-size:.85rem}.empty-copy{color:var(--text-muted);font-family:var(--display);margin:0;font-size:.82rem;font-style:italic}.oracle-stage{grid-area:oracle;min-width:0;animation:.7s both reveal-stage;position:relative}.stage-copy{z-index:2;max-width:45rem;position:relative}.stage-copy h2{max-width:12ch;color:var(--vellum-bright);font-family:var(--display);letter-spacing:-.035em;margin:.45rem 0 1rem;font-size:clamp(2.8rem,6.4vw,6.3rem);font-weight:400;line-height:.92}.stage-copy>p:last-child{max-width:37rem;color:var(--text-muted);margin:0;font-size:clamp(.88rem,1.2vw,1rem);line-height:1.65}.altar{border-left:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"dice seal""button seal""reading seal";align-items:center;gap:1.2rem 2.5rem;margin-top:clamp(3.5rem,7vw,6.5rem);padding:2rem 0 2rem 2rem;display:grid;position:relative}.altar:before{content:"";background:linear-gradient(var(--verdigris), var(--verdigris)) center top / 7px 7px no-repeat, linear-gradient(var(--verdigris), var(--verdigris)) center bottom / 7px 7px no-repeat;width:7px;position:absolute;top:0;bottom:0;left:-4px}.compass-rose{z-index:-1;aspect-ratio:1;opacity:.7;border:1px solid #5fa79a14;border-radius:50%;width:min(31vw,25rem);position:absolute;top:-4rem;right:-1rem}.compass-rose:before,.compass-rose:after{content:"";background:#5fa79a1a;height:1px;position:absolute;inset:50% 10%}.compass-rose:after{transform:rotate(90deg)}.compass-rose span{color:#5fa79a4d;font-size:.55rem;position:absolute}.compass-rose span:first-child{top:-1rem;left:50%}.compass-rose span:nth-child(2){top:50%;right:-1rem}.compass-rose span:nth-child(3){bottom:-1rem;left:50%}.compass-rose span:nth-child(4){top:50%;left:-1rem}.dice-selector{border:0;grid-area:dice;min-width:0;margin:0;padding:0}.dice-selector legend{color:var(--text-muted);font-family:var(--body);letter-spacing:.16em;text-transform:uppercase;margin-bottom:1rem;font-size:.68rem;font-weight:700}.dice-track{align-items:center;gap:clamp(.45rem,1.2vw,.9rem);display:flex}.die-option{cursor:pointer;flex:0 4.3rem;place-items:center;display:grid;position:relative}.die-option input{z-index:2;cursor:pointer;opacity:0;width:100%;height:100%;margin:0;position:absolute;inset:0}.die-option:focus-within .die-glyph{outline:2px solid var(--focus-ring);outline-offset:5px}.die-glyph{aspect-ratio:1;width:100%;min-width:2.7rem;max-width:4.3rem;color:var(--text-muted);background:var(--ink-soft);place-items:center;transition:transform .18s,color .18s,background .18s;display:grid}.die-glyph:before,.die-glyph:after{content:"";opacity:.25;background:currentColor;width:42%;height:1px;position:absolute;transform:rotate(45deg)}.die-glyph:after{transform:rotate(-45deg)}.die-glyph span{z-index:1;font-family:var(--display);font-size:clamp(.65rem,1.1vw,.9rem)}.die-option:hover .die-glyph{color:var(--vellum-bright);transform:translateY(-3px)}.die-option[data-selected=true] .die-glyph{color:var(--charcoal);background:var(--ember);filter:drop-shadow(0 9px 10px #dc5b2f38);transform:translateY(-5px)scale(1.08)}.die-option--d4 .die-glyph{clip-path:polygon(50% 4%,96% 91%,4% 91%)}.die-option--d6 .die-glyph{clip-path:polygon(8% 8%,92% 8%,92% 92%,8% 92%)}.die-option--d8 .die-glyph{clip-path:polygon(50% 2%,96% 50%,50% 98%,4% 50%)}.die-option--d10 .die-glyph{clip-path:polygon(50% 1%,86% 17%,98% 58%,50% 99%,2% 58%,14% 17%)}.die-option--d12 .die-glyph{clip-path:polygon(50% 1%,86% 13%,99% 46%,82% 87%,50% 99%,18% 87%,1% 46%,14% 13%)}.die-option--d20 .die-glyph{clip-path:polygon(50% 1%,78% 9%,96% 31%,94% 68%,75% 92%,50% 99%,25% 92%,6% 68%,4% 31%,22% 9%)}.roll-seal{aspect-ratio:1;width:clamp(10rem,16vw,14.5rem);color:var(--verdigris);background:#07141652;border:1px solid #5fa79a2e;border-radius:50%;grid-area:seal;place-items:center;display:grid}:root[data-theme=light] .roll-seal{background:#f4e9cf52}.seal-outer{aspect-ratio:1;border:1px dashed;border-radius:50%;place-items:center;width:79%;display:grid;transform:rotate(8deg)}.seal-inner{aspect-ratio:1;text-align:center;border:1px solid;border-radius:50%;place-content:center;width:72%;display:grid;transform:rotate(-8deg)}.seal-inner strong{color:var(--vellum-bright);font-family:var(--display);font-size:clamp(2.5rem,5vw,4.5rem);font-weight:400;line-height:.9}.seal-inner small{color:var(--verdigris);letter-spacing:.2em;text-transform:uppercase;font-size:.52rem;font-weight:700}.roll-seal.has-result{color:var(--ember)}.roll-seal.is-rolling .seal-outer{animation:.72s linear infinite seal-roll}.roll-seal.is-rolling .seal-inner strong{animation:.42s ease-in-out infinite alternate ember-pulse}.roll-button{color:#fff4dc;background:var(--ember);cursor:pointer;width:min(100%,24rem);min-height:4.2rem;font-family:var(--display);letter-spacing:.02em;border:0;grid-area:button;justify-content:space-between;align-items:center;padding:.85rem 1.25rem .85rem 1.45rem;font-size:1.1rem;transition:background .16s,transform .16s,box-shadow .16s;display:flex;box-shadow:7px 7px #dc5b2f26}.roll-button:not(:disabled):hover{background:var(--ember-bright);transform:translate(3px,3px);box-shadow:4px 4px #dc5b2f26}.roll-button span:last-child{font-family:var(--body);font-size:1.3rem}.pool-reading{color:var(--text-muted);font-family:var(--display);grid-area:reading;margin:-.5rem 0 0;font-size:.73rem;font-style:italic}.error-banner{max-width:48rem;color:var(--text-error);background:#c24c3b14;border:1px solid #c24c3b73;grid-template-columns:auto 1fr auto;align-items:center;gap:.85rem;margin-top:1rem;padding:.85rem 1rem;display:grid}.error-banner>span{width:1.45rem;height:1.45rem;font-family:var(--display);border:1px solid;border-radius:50%;place-items:center;display:grid}.error-banner p{margin:0;font-size:.78rem}.restaurant-card{max-width:50rem;color:var(--charcoal);background:linear-gradient(#e7d5aef5,#e7d5aef5),repeating-linear-gradient(0deg,#0000 0 23px,#1723241f 24px);border:1px solid #17232440;margin-top:2.5rem;animation:.52s both reveal-result;box-shadow:13px 15px #00000029}:root[data-theme=light] .restaurant-card{color:#172324;background:linear-gradient(#f4e9cff5,#f4e9cff5),repeating-linear-gradient(0deg,#0000 0 23px,#1723241f 24px)}.result-ribbon{color:#e7d5ae;background:var(--verdigris-dark);letter-spacing:.16em;text-transform:uppercase;justify-content:space-between;padding:.55rem 1.1rem;font-size:.58rem;font-weight:700;display:flex}.restaurant-card__body{grid-template-columns:auto 1fr;gap:1.2rem;padding:1.5rem;display:grid}.restaurant-mark{aspect-ratio:1;border:1px solid var(--verdigris-dark);width:3.7rem;color:var(--verdigris-dark);font-family:var(--display);border-radius:50%;align-self:start;place-items:center;display:grid}.restaurant-card h2{font-family:var(--display);margin:.1rem 0;font-size:clamp(1.65rem,3vw,2.5rem);font-weight:500;line-height:1}.cuisine{color:#53625c;letter-spacing:.08em;text-transform:capitalize;margin:.35rem 0 0;font-size:.72rem}.restaurant-details{grid-column:2;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem 1.4rem;margin:.8rem 0 0;display:grid}.restaurant-details div{min-width:0}.restaurant-details dt{color:#526660;letter-spacing:.13em;text-transform:uppercase;margin-bottom:.15rem;font-size:.55rem;font-weight:700}.restaurant-details dd{font-family:var(--display);margin:0;font-size:.8rem;line-height:1.4}.restaurant-actions{flex-wrap:wrap;justify-content:flex-end;gap:.55rem;padding:0 1.5rem 1.5rem;display:flex}.restaurant-actions .secondary-button,.restaurant-actions .danger-button{color:#273b39;border-color:#17232447}.restaurant-actions .danger-button{color:#9e382d;border-color:#9e382d66}.maps-link{color:#f8edcf;border-color:var(--verdigris-dark);background:var(--verdigris-dark)}.maps-link:hover{color:#fff8e5;background:#347b73}.empty-map{max-width:45rem;color:var(--verdigris-dark);opacity:.55;margin-top:2rem}.empty-map svg{fill:none;stroke:currentColor;stroke-dasharray:4 7;stroke-width:1px;width:100%;height:auto;display:block;overflow:visible}.empty-map circle{fill:var(--ink);stroke-dasharray:none;stroke-width:2px}.empty-map p{text-align:center;font-family:var(--display);margin:-1rem 0 0;font-size:.8rem;font-style:italic}footer{border-top:1px solid var(--line);width:min(1440px,100% - 5rem);color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;justify-content:space-between;margin:0 auto;padding:1.3rem 0 1.6rem;font-size:.58rem;display:flex}.toast-region{z-index:20;pointer-events:none;width:min(22rem,100vw - 2.5rem);position:fixed;bottom:1.25rem;right:1.25rem}.toast{border:1px solid var(--verdigris);color:var(--vellum-bright);background:var(--ink-raised);pointer-events:auto;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem;padding:.8rem .9rem;animation:.28s both toast-in;display:grid;box-shadow:6px 7px #0000002e}.toast>span{color:var(--ember-bright)}.toast p{font-family:var(--display);margin:0;font-size:.8rem}.toast button{color:var(--text-muted);cursor:pointer;background:0 0;border:0}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}@keyframes reveal-stage{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes reveal-panel{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes reveal-result{0%{opacity:0;transform:translateY(12px)rotate(-.4deg)}to{opacity:1;transform:translateY(0)rotate(0)}}@keyframes seal-roll{to{transform:rotate(368deg)}}@keyframes ember-pulse{0%{opacity:.45;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width<=980px){.site-header,.expedition-layout,footer{width:min(100% - 2.5rem,900px)}.expedition-layout{grid-template-columns:minmax(0,1fr) minmax(17rem,20rem);gap:2rem}.stage-copy h2{font-size:clamp(2.7rem,7vw,4.8rem)}.altar{grid-template-columns:1fr;grid-template-areas:"dice""seal""button""reading"}.roll-seal{width:10rem}.restaurant-details{grid-template-columns:1fr}}@media (width<=760px){.site-header{grid-template-columns:1fr auto;width:calc(100% - 2rem);padding-top:1rem}.header-motto{display:none}.crest{width:2.5rem}.theme-toggle span:last-child{display:none}.expedition-layout{grid-template-columns:minmax(0,1fr);grid-template-areas:"controls""oracle";gap:3.5rem;width:calc(100% - 2rem);padding:2rem 0 3.5rem}.expedition-panel{padding:1.4rem 1.15rem;box-shadow:7px 8px #0000001a}.blacklist-drawer{margin-bottom:-1.4rem;margin-left:-1.15rem;margin-right:-1.15rem}.blacklist-drawer summary,.blacklist-content{padding-left:1.15rem;padding-right:1.15rem}.stage-copy h2{font-size:clamp(2.65rem,13vw,4.2rem)}.altar{grid-template-columns:1fr auto;grid-template-areas:"dice dice""seal button""seal reading";gap:1.2rem;margin-top:3rem;padding:1.5rem 0 1.5rem 1rem}.dice-track{justify-content:space-between}.die-option{flex-basis:3.2rem}.roll-seal{width:8.2rem}.roll-button{min-height:3.6rem}.pool-reading{align-self:start}.compass-rose{display:none}.restaurant-card__body{grid-template-columns:auto 1fr;padding:1.1rem}.restaurant-details{grid-column:1/-1}.restaurant-actions{grid-template-columns:1fr 1fr;padding:0 1.1rem 1.1rem;display:grid}.maps-link{grid-column:1/-1}footer{width:calc(100% - 2rem)}}@media (width<=430px){.brand-overline{display:none}.radius-options{gap:.3rem}.altar{border-left:0;grid-template-columns:1fr;grid-template-areas:"dice""seal""button""reading";justify-items:center;padding-left:0}.altar:before{display:none}.dice-selector,.roll-button,.pool-reading{width:100%}.pool-reading{text-align:center}.restaurant-mark{width:3rem}.restaurant-actions{grid-template-columns:1fr}.maps-link{grid-column:auto}footer{gap:.35rem;display:grid}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
