:root{--color-brand: #243b32;--color-brand-strong: #17261d;--color-moss: #788267;--color-accent: #a4523e;--color-gold: #c49c5b;--color-bg: #f6f4ed;--color-surface: #fffefa;--color-surface-soft: #e7e9df;--color-text: #222b26;--color-text-muted: #545b53;--color-border: #8a8f84;--color-line: #e8e7df;--color-focus: #0b57d0;--color-on-brand: #ffffff;--color-success: #1e6b3a;--color-warning: #7a4b00;--color-danger: #9b1c1c;--color-demo-bg: #f3e7c4;--color-demo-text: #4a3a10;--shadow-card: 0 18px 60px #17261d1c;--font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-family-display: Georgia, "Times New Roman", serif;--font-scale: 1;--text-base: calc(1rem * var(--font-scale));--text-small: calc(.9375rem * var(--font-scale));--text-title: calc(1.5rem * var(--font-scale));--space-1: .5rem;--space-2: 1rem;--space-3: 1.5rem;--radius: 12px;--touch-min: 52px;--nav-height: 76px}:root[data-contrast=high]{--color-bg: #ffffff;--color-surface: #ffffff;--color-surface-soft: #ffffff;--color-text: #000000;--color-text-muted: #000000;--color-brand: #000000;--color-border: #000000;--color-line: #000000;--color-focus: #000000}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--color-bg: #151a17;--color-surface: #1f2622;--color-surface-soft: #2a332e;--color-text: #f2f2ee;--color-text-muted: #d0d4cc;--color-brand: #9fd3b8;--color-on-brand: #151a17;--color-border: #9a9f94;--color-line: #353e38;--color-focus: #8ab4ff;--color-demo-bg: #3a3205;--color-demo-text: #ffe68a}}:root[data-contrast=high][data-theme=dark]{--color-bg: #000000;--color-surface: #000000;--color-text: #ffffff;--color-brand: #ffffff;--color-on-brand: #000000;--color-border: #ffffff}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-family);font-size:var(--text-base);line-height:1.5;overflow-x:hidden;-webkit-font-smoothing:antialiased}#root{position:relative;width:100%;max-width:440px;min-height:100vh;margin:0 auto;background:var(--color-bg)}@media (min-width: 480px){html{background:var(--color-surface-soft)}#root{box-shadow:0 0 0 1px var(--color-line),0 0 48px #17261d24}}h1,h2,h3{line-height:1.25}h1{font-size:var(--text-title)}img{max-width:100%;height:auto}a{color:var(--color-brand)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}.skip-link{position:absolute;left:var(--space-2);top:-100px;background:var(--color-surface);padding:var(--space-1) var(--space-2);z-index:100}.skip-link:focus{top:var(--space-1)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.page{padding:var(--space-2) 1rem calc(var(--nav-height) + var(--space-3));display:grid;gap:.75rem;align-content:start}.page>h1{margin:.25rem 0 0;font-size:clamp(1.5rem,6vw,1.875rem)}.page>p{margin:0;color:var(--color-text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-min);padding:var(--space-1) var(--space-2);font-size:1rem;border-radius:14px;border:2px solid var(--color-brand);background:var(--color-brand);color:var(--color-on-brand);font:inherit;font-weight:600;text-decoration:none;cursor:pointer}.btn--secondary{background:transparent;color:var(--color-brand)}.card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:16px;padding:1.125rem;margin-bottom:var(--space-2);box-shadow:0 1px 2px #17261d0f}.badge{display:inline-block;padding:.125rem .5rem;border-radius:999px;border:1px solid currentColor;font-size:var(--text-small);font-weight:600}.notice{border-left:4px solid var(--color-brand);padding:var(--space-1) var(--space-2);background:var(--color-surface);border-radius:var(--radius);margin-bottom:var(--space-2)}.notice--demo{border-left-color:var(--color-accent);background:var(--color-demo-bg);color:var(--color-demo-text)}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:var(--space-2)}.field input,.field select{min-height:var(--touch-min);padding:var(--space-1);font:inherit;border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text)}.visually-hidden-when-no-js{display:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.app-header__account:focus-visible{outline:3px solid var(--color-gold);outline-offset:2px}.app-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:var(--space-1);padding:calc(var(--space-1) + env(safe-area-inset-top)) 1rem var(--space-1);background:var(--color-bg);border-bottom:1px solid var(--color-line)}.app-brand{display:flex;align-items:center;gap:.625rem;color:var(--color-text);text-decoration:none;min-height:var(--touch-min)}.app-brand img{width:44px;height:44px}.app-brand strong,.app-brand small{display:block;line-height:1.2}.app-brand small{font-size:.6875rem;letter-spacing:.06em;white-space:nowrap;color:var(--color-text-muted);text-transform:uppercase}.app-header__account{min-height:var(--touch-min);display:inline-flex;align-items:center;padding:0 var(--space-2);border-radius:999px;border:2px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-weight:700;text-decoration:none}.app-header__actions{display:flex;align-items:center;gap:var(--space-1)}.app-header__icon{display:inline-flex;align-items:center;justify-content:center;width:var(--touch-min);height:var(--touch-min);border-radius:50%;color:var(--color-text)}.app-header__icon svg{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor}.hero{position:relative;overflow:hidden;border-radius:var(--radius);background:var(--color-brand);color:var(--color-on-brand);padding:.75rem;margin-bottom:var(--space-2)}.hero__eyebrow{font-size:.8125rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;margin:0 0 .5rem}.hero__info{position:relative;z-index:1;margin:0;padding:.75rem;background:var(--color-surface);color:var(--color-text)}.hero__art{position:absolute;right:0;bottom:0;width:62%;opacity:.9;pointer-events:none}.card-list,.shortcut-grid{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.shortcut-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.shortcut{display:flex;align-items:center;min-height:var(--touch-min);margin:0;color:var(--color-text);font-weight:600;text-decoration:none}.card-list .card{margin:0}.toggle{display:flex;align-items:center;gap:var(--space-1);min-height:var(--touch-min);margin-bottom:var(--space-1);font-weight:600}.toggle input{width:1.5rem;height:1.5rem;accent-color:var(--color-brand)}.menu-grid{list-style:none;margin:0 0 var(--space-2);padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-1)}.menu-tile{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;min-height:6.5rem;padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font-weight:600;text-decoration:none}.menu-tile__icon{width:1.75rem;height:1.75rem;fill:none;stroke:var(--color-brand)}.opening{display:grid;gap:var(--space-2);padding:var(--space-2) 16px var(--space-3);min-height:100vh;align-content:start}.opening__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-1)}.opening__header small{white-space:nowrap}.opening__header .app-header__actions{display:flex;align-items:center;gap:.5rem}.opening__eyebrow{color:var(--color-accent);font-size:var(--text-small);font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin:var(--space-2) 0 0}.opening h1{margin:0;font-size:clamp(2.25rem,9vw,3rem);line-height:1.05}.opening__lead,.opening__about{margin:0;color:var(--color-text-muted);font-size:var(--text-small)}.opening__hero{border-radius:var(--radius);background:#151a17;overflow:hidden;display:grid;place-items:center;aspect-ratio:4 / 3}.opening__hero img{width:80%;height:auto}.opening__place{display:flex;align-items:center;justify-content:space-between;gap:var(--space-1);margin:0}.opening__dates{margin:0;color:var(--color-accent);font-size:var(--text-small);font-weight:700;letter-spacing:.08em;text-transform:uppercase}.opening__city{margin:0;font-family:var(--font-family-display);font-size:var(--text-title);color:var(--color-brand)}.opening__pin{width:1.5rem;height:1.5rem;fill:none;stroke:var(--color-accent);flex-shrink:0}.opening__actions{display:grid;gap:var(--space-1)}.opening__actions .btn,.opening__actions .btn--secondary{text-align:center}.opening__footer{margin:0;color:var(--color-text-muted);font-size:var(--text-small);text-align:center}.greeting,.page h1{font-family:var(--font-family-display);font-weight:400;color:var(--color-brand)}.shortcut{flex-direction:column;align-items:flex-start;gap:.5rem;min-height:0;padding:.625rem .75rem;text-align:left;line-height:1.25;font-size:1rem;overflow-wrap:anywhere}.shortcut__badge{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius);background:var(--color-surface-soft)}.shortcut__icon{width:1.5rem;height:1.5rem;fill:none;stroke:var(--color-brand)}.eyebrow{margin:0;color:var(--color-brand);font-size:var(--text-small);font-weight:700;letter-spacing:.12em;text-transform:uppercase}.notice-item{display:grid;grid-template-columns:auto 1fr;gap:var(--space-1);align-items:start}.notice-item__icon{width:2.5rem;height:2.5rem;fill:none;stroke:var(--color-brand)}.notice-item__meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;color:var(--color-text-muted);font-size:var(--text-small)}.notice-item h3{margin:.25rem 0;font-size:var(--text-base)}.notice-item p{margin:0}.perm-row{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-1);align-items:start}.perm-row__icon{width:2.5rem;height:2.5rem;fill:none;stroke:var(--color-brand)}.perm-row h2{margin:0 0 .25rem;font-size:var(--text-base)}.perm-row p{margin:0 0 .25rem}.perm-row__state{color:var(--color-text-muted);font-size:var(--text-small)}.switch{position:relative;display:inline-flex;align-items:center;min-width:var(--touch-min);min-height:var(--touch-min);justify-content:center;cursor:pointer}.switch input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer}.switch__track{width:3.25rem;height:2rem;border-radius:999px;background:var(--color-border);position:relative;transition:background .15s}.switch__track:after{content:"";position:absolute;top:.25rem;left:.25rem;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--color-surface);transition:transform .15s}.switch input:checked+.switch__track{background:var(--color-brand)}.switch input:checked+.switch__track:after{transform:translate(1.25rem)}.switch input:focus-visible+.switch__track{outline:3px solid var(--color-focus);outline-offset:3px}.perm-link{display:flex;align-items:center;justify-content:space-between;min-height:var(--touch-min);color:var(--color-text);font-weight:600;text-decoration:none}.perm-link svg{width:1.5rem;height:1.5rem;color:var(--color-text-muted)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-1)}.chip-group{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 var(--space-2);padding:0;border:0}.chip{min-height:var(--touch-min);padding:0 var(--space-2);border:2px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text);font:inherit;font-weight:600;cursor:pointer}.chip[aria-pressed=true]{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-on-brand)}.empty-card{text-align:center;padding:var(--space-3) var(--space-2)}.map-image{display:block;width:100%;height:auto;border-radius:var(--radius);border:1px solid var(--color-border);margin-bottom:var(--space-2)}.ticket{background:var(--color-brand);color:var(--color-on-brand);border:0;text-align:center;padding:var(--space-3) var(--space-2)}.ticket__event{margin:0;font-family:var(--font-family-display);font-weight:400;font-size:var(--text-title);color:inherit}.ticket__dates{margin:.25rem 0 var(--space-2);opacity:.9}.ticket__qr{position:relative;display:inline-block;padding:var(--space-1);border-radius:var(--radius);background:#fff}.ticket__qr img{display:block;width:min(60vw,16rem);height:auto}.ticket__stamp{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-30deg);padding:.25rem .75rem;border:2px solid var(--color-accent);color:var(--color-accent);background:#ffffffe6;font-size:var(--text-small);font-weight:700;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}.ticket__info{display:grid;gap:.5rem;margin:var(--space-2) 0;padding-top:var(--space-2);border-top:1px solid rgba(255,255,255,.25);text-align:left}.ticket__info div{display:flex;justify-content:space-between;gap:var(--space-1)}.ticket__info dt{opacity:.8}.ticket__info dd{margin:0;font-weight:700}.ticket__brightness{width:100%;min-height:var(--touch-min);border:1px solid rgba(255,255,255,.5);border-radius:var(--radius);background:transparent;color:inherit;font:inherit;font-weight:600;cursor:pointer}.ticket__hint{margin:var(--space-1) 0 0;font-size:var(--text-small)}.ticket__footer{margin-top:var(--space-2);color:var(--color-text-muted);font-size:var(--text-small)}.speaker{display:grid;grid-template-columns:auto 1fr;gap:var(--space-1);align-items:start}.speaker h2{margin:0 0 .25rem;font-size:var(--text-base)}.speaker p{margin:0 0 .25rem}.speaker__photo,.speaker__initial{width:3.5rem;height:3.5rem;border-radius:var(--radius)}.speaker__photo{object-fit:cover}.speaker__initial{display:inline-flex;align-items:center;justify-content:center;background:var(--color-surface-soft);color:var(--color-brand);font-family:var(--font-family-display);font-size:1.5rem}.bottom-nav{position:fixed;left:50%;bottom:0;transform:translate(-50%);width:min(100%,440px);background:var(--color-surface);border-top:1px solid var(--color-line);box-shadow:0 -4px 16px #17261d14;padding-bottom:env(safe-area-inset-bottom);z-index:10}.bottom-nav ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr)}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--nav-height);padding:.375rem .125rem;color:var(--color-text-muted);text-decoration:none;text-align:center}.tab__label{font-size:.875rem;font-weight:600;line-height:1.2}.tab__icon{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor;margin-bottom:.125rem}.tab--active{color:var(--color-brand);font-weight:700;border-top:3px solid var(--color-brand)}
