:root {
  --ink: #101211;
  --paper: #e8e5dc;
  --muted: #a7a69f;
  --line: rgba(232, 229, 220, 0.2);
  --lime: #d7ff4f;
  --orange: #ff7449;
  --display: "Instrument Serif", Georgia, serif;
  --sans: "Manrope", sans-serif;
  --mono: "DM Mono", monospace;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { min-height: 100%; background: var(--ink); }
body { min-width: 320px; min-height: 100vh; margin: 0; color: var(--paper); background: var(--ink); font-family: var(--sans); }
button, input { font: inherit; }
button { cursor: pointer; }
.grain { position: fixed; z-index: 10; inset: 0; pointer-events: none; opacity: .17; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E"); mix-blend-mode: soft-light; }
.site-shell { position: relative; z-index: 1; width: min(1360px, calc(100% - 64px)); min-height: 100vh; margin: auto; padding: 26px 0 38px; }
.topbar { display: flex; justify-content: space-between; align-items: flex-start; }
.brand { display: inline-flex; gap: 10px; align-items: center; color: var(--paper); text-decoration: none; font: 500 10px/1.04 var(--mono); letter-spacing: .08em; }
.brand-mark { display: grid; width: 29px; height: 29px; place-items: center; border: 1px solid var(--paper); border-radius: 50%; font: italic 23px/1 var(--display); letter-spacing: 0; }
.topbar-note { display: flex; gap: 8px; align-items: center; padding-top: 6px; font: 500 10px var(--mono); letter-spacing: .08em; }
.topbar-note i, .status-message i, .connection-pill i { width: 7px; height: 7px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 12px var(--lime); }
.view { animation: arrive .55s both; }
.welcome-view { display: grid; grid-template-columns: 1.25fr .8fr 88px; gap: 44px; align-items: center; min-height: calc(100vh - 93px); }
.hero-copy { padding: 9vh 0 8vh 9.5%; }
.eyebrow, .panel-index, .control-hint { margin: 0; color: var(--muted); font: 500 10px var(--mono); letter-spacing: .11em; }
.hero-copy h1, .console-heading h1 { margin: 17px 0 21px; font: 400 clamp(74px, 9.6vw, 152px)/.76 var(--display); letter-spacing: -.06em; }
h1 em { color: var(--lime); }
.intro { max-width: 340px; margin: 0; color: #c3c1bb; font-size: 15px; line-height: 1.7; }
.text-button { display: inline-flex; gap: 12px; align-items: center; margin-top: 43px; padding: 0 0 8px; color: var(--paper); background: none; border: 0; border-bottom: 1px solid var(--lime); font: 700 11px var(--mono); letter-spacing: .1em; transition: color .2s, gap .2s; }
.text-button:hover { gap: 19px; color: var(--lime); }
.panel { background: rgba(232, 229, 220, .055); border: 1px solid var(--line); box-shadow: 20px 24px 0 rgba(0, 0, 0, .13); }
.join-panel { position: relative; min-height: 466px; padding: 28px; overflow: hidden; }
.join-panel::after { position: absolute; right: -52px; bottom: -91px; width: 239px; height: 239px; border: 1px solid rgba(215, 255, 79, .29); border-radius: 50%; content: ""; }
.panel-index { display: flex; gap: 11px; align-items: center; color: var(--lime); }
.panel-index span { color: var(--muted); }
.join-panel h2 { margin: 55px 0 7px; font: 400 46px/.95 var(--display); letter-spacing: -.04em; }
.join-panel > p { max-width: 290px; margin: 0 0 30px; color: var(--muted); font-size: 13px; line-height: 1.5; }
form { position: relative; z-index: 1; }
form label { display: block; margin-bottom: 9px; color: var(--muted); font: 500 9px var(--mono); letter-spacing: .09em; }
input { width: 100%; padding: 15px 13px 13px; color: var(--paper); outline: none; background: rgba(0, 0, 0, .18); border: 1px solid var(--line); border-radius: 0; font: 500 20px var(--mono); letter-spacing: .16em; text-transform: uppercase; transition: border-color .2s; }
input:focus { border-color: var(--lime); }
input::placeholder { color: #767771; }
.form-error { min-height: 17px; margin: 8px 0 0; color: var(--orange); font-size: 11px; }
.primary-button { display: flex; justify-content: space-between; width: 100%; margin-top: 13px; padding: 16px 15px; color: var(--ink); background: var(--lime); border: 0; font: 800 11px var(--mono); letter-spacing: .1em; transition: background .2s, transform .2s; }
.primary-button:hover { background: #e5ff8f; transform: translateY(-2px); }
.primary-button:disabled, .remote-button:disabled, .media-button:disabled { cursor: wait; opacity: .58; }
.join-foot { position: absolute; bottom: 28px; display: flex; gap: 11px; align-items: center; color: var(--muted); font: 10px var(--mono); }
.signal-mark { color: var(--lime); letter-spacing: -3px; }
.side-caption { display: flex; min-height: 465px; flex-direction: column; justify-content: space-between; padding-bottom: 11px; color: var(--muted); font: 9px/1.3 var(--mono); letter-spacing: .09em; writing-mode: vertical-rl; }

.presenter-view { padding: 11vh 8% 0; }
.console-heading { max-width: 550px; }
.console-heading h1 { font-size: clamp(60px, 7vw, 104px); }
.console-heading > p:last-child { max-width: 390px; color: var(--muted); font-size: 14px; line-height: 1.6; }
.console-layout { display: grid; grid-template-columns: 1.1fr .8fr; gap: 15px; max-width: 930px; margin-top: 46px; }
.code-card, .status-card { min-height: 286px; padding: 25px; }
.panel-index .state-label { margin-left: auto; color: var(--lime); font-size: 9px; }
.code-display { margin: 39px 0 23px; font: 500 clamp(35px, 4.1vw, 56px)/1 var(--mono); letter-spacing: .07em; }
.copy-button, .share-line button, .end-room, .leave-button { color: var(--paper); background: none; border: 0; font: 700 10px var(--mono); letter-spacing: .08em; }
.copy-button { padding: 0 0 7px; border-bottom: 1px solid var(--lime); }
.share-line { display: flex; justify-content: space-between; gap: 16px; margin-top: 45px; padding-top: 15px; border-top: 1px solid var(--line); color: var(--muted); font: 9px var(--mono); letter-spacing: .08em; }
.share-line button { overflow: hidden; max-width: 240px; padding: 0; color: var(--paper); text-overflow: ellipsis; white-space: nowrap; }
.pulse-orb { display: flex; width: 144px; height: 144px; flex-direction: column; align-items: center; justify-content: center; margin: 22px auto 16px; border: 1px solid rgba(215, 255, 79, .55); border-radius: 50%; box-shadow: 0 0 0 15px rgba(215, 255, 79, .05), 0 0 58px rgba(215, 255, 79, .1); }
.pulse-orb span { font: 400 55px/.9 var(--display); color: var(--lime); }
.pulse-orb small { margin-top: 6px; color: var(--muted); font: 8px/1.3 var(--mono); text-align: center; letter-spacing: .08em; }
.status-message { display: flex; justify-content: center; gap: 8px; align-items: center; color: var(--muted); font-size: 10px; text-align: center; }
.status-message i { flex: 0 0 auto; width: 5px; height: 5px; }
.bridge-card { grid-column: 1 / -1; padding: 24px 25px; }.bridge-card > p { max-width: 490px; margin: 25px 0 13px; color: var(--muted); font-size: 12px; line-height: 1.55; }.bridge-downloads { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }.bridge-downloads a { padding: 9px 10px; color: var(--paper); border: 1px solid var(--line); font: 700 9px var(--mono); letter-spacing: .06em; text-decoration: none; transition: border-color .15s, color .15s, background .15s; }.bridge-downloads a:hover, .bridge-downloads a.selected { color: var(--ink); background: var(--lime); border-color: var(--lime); }.open-bridge-button { display: inline-flex; gap: 10px; margin: 2px 0 3px; padding: 11px 12px; color: var(--ink); background: var(--lime); font: 800 10px var(--mono); letter-spacing: .08em; text-decoration: none; transition: background .15s, transform .15s; }.open-bridge-button:hover { background: #e5ff8f; transform: translateY(-2px); }.bridge-card code { display: block; overflow-x: auto; padding: 12px; color: var(--lime); background: rgba(0, 0, 0, .28); border: 1px solid var(--line); font: 10px/1.45 var(--mono); white-space: nowrap; }.bridge-card .bridge-command-note { margin: 10px 0 0; font: 10px var(--mono); }.bridge-card .copy-button { margin-top: 16px; }
.setup-note { display: flex; grid-column: 1 / -1; gap: 22px; padding: 17px 4px 0; color: var(--muted); border-top: 1px solid var(--line); font-size: 11px; line-height: 1.5; }
.setup-note strong { flex: 0 0 105px; color: var(--paper); font: 500 10px var(--mono); letter-spacing: .08em; }
.end-room { margin-top: 28px; padding-bottom: 5px; color: var(--muted); border-bottom: 1px solid var(--muted); }

.remote-view { display: flex; width: min(100%, 570px); min-height: calc(100vh - 92px); margin: 0 auto; flex-direction: column; justify-content: center; }
.remote-top { display: flex; justify-content: space-between; align-items: end; margin-bottom: 28px; }
.remote-room-code { margin: 5px 0 0; font: 500 18px var(--mono); letter-spacing: .09em; }
.connection-pill { display: flex; gap: 6px; align-items: center; color: var(--lime); font: 500 10px var(--mono); letter-spacing: .08em; }
.connection-pill.attention { color: var(--orange); }.connection-pill.attention i { background: var(--orange); box-shadow: 0 0 12px var(--orange); }
.remote-stage { padding: clamp(26px, 5vw, 43px); background: rgba(232, 229, 220, .05); border: 1px solid var(--line); box-shadow: 18px 20px 0 rgba(0, 0, 0, .14); }
.control-hint { margin-bottom: 17px; text-align: center; }
.direction-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.remote-button { display: flex; min-height: 180px; flex-direction: column; justify-content: space-between; padding: 20px; color: var(--paper); background: #171a18; border: 1px solid rgba(232, 229, 220, .14); font: 700 12px var(--mono); letter-spacing: .1em; text-align: left; transition: color .18s, background .18s, transform .18s; }
.remote-button.next { align-items: flex-end; background: var(--lime); color: var(--ink); text-align: right; }.remote-button .arrow { font: 400 48px/1 var(--display); }.remote-button:hover { transform: translateY(-3px); }.remote-button.previous:hover { background: #242925; color: var(--lime); }.remote-button.next:hover { background: #e5ff8f; }.remote-button.success, .media-button.success { transform: scale(.97); }
.media-button { display: flex; width: 100%; justify-content: center; gap: 10px; align-items: center; min-height: 70px; margin-top: 10px; color: var(--paper); background: var(--orange); border: 0; font: 800 11px var(--mono); letter-spacing: .09em; transition: filter .2s, transform .18s; }.media-button:hover { filter: brightness(1.1); transform: translateY(-2px); }.play-icon { display: grid; width: 22px; height: 22px; place-items: center; color: var(--orange); background: var(--paper); border-radius: 50%; font-size: 8px; }
.laser-control { margin-top: 25px; }.laser-control .control-hint { margin-bottom: 12px; }.laser-pad { --laser-x: 50%; --laser-y: 50%; position: relative; display: grid; min-height: 210px; place-items: center; overflow: hidden; color: var(--muted); background: radial-gradient(circle at var(--laser-x) var(--laser-y), rgba(255, 116, 73, .23), transparent 16%), #171a18; border: 1px solid rgba(232, 229, 220, .16); touch-action: none; user-select: none; -webkit-user-select: none; }.laser-pad::before, .laser-pad::after { position: absolute; content: ""; pointer-events: none; }.laser-pad::before { inset: 14px; border: 1px solid rgba(232, 229, 220, .09); }.laser-pad::after { width: 1px; height: 100%; background: rgba(232, 229, 220, .08); box-shadow: 0 0 0 0 rgba(232, 229, 220, .08); }.laser-target { position: absolute; z-index: 1; left: var(--laser-x); top: var(--laser-y); width: 18px; height: 18px; border: 1px solid var(--orange); border-radius: 50%; box-shadow: 0 0 20px var(--orange); pointer-events: none; transform: translate(-50%, -50%); }.laser-target::before, .laser-target::after { position: absolute; left: 50%; top: 50%; width: 30px; height: 1px; background: var(--orange); content: ""; transform: translate(-50%, -50%); }.laser-target::after { width: 1px; height: 30px; }.laser-pad-status { position: relative; z-index: 2; padding: 7px 10px; background: rgba(16, 18, 17, .78); font: 700 10px var(--mono); letter-spacing: .09em; }.laser-pad[data-state="acquiring"] .laser-target { animation: laser-pulse .7s infinite alternate; }.laser-pad[data-state="active"] { border-color: var(--orange); }.laser-pad[data-state="active"] .laser-pad-status { color: var(--orange); }.laser-pad[data-state="in-use"] { cursor: not-allowed; opacity: .6; }.remote-feedback { min-height: 20px; margin: 19px 0 0; color: var(--muted); font: 10px var(--mono); text-align: center; }.leave-button { display: block; margin: auto; padding: 22px 0 4px; color: var(--muted); border-bottom: 1px solid transparent; }.leave-button:hover { color: var(--paper); border-color: var(--paper); }
.toast { position: fixed; z-index: 20; right: 24px; bottom: 24px; padding: 13px 17px; color: var(--ink); background: var(--lime); box-shadow: 5px 6px 0 rgba(0,0,0,.25); font: 500 11px var(--mono); animation: toast-in .25s both; }
@keyframes arrive { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } } @keyframes toast-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } } @keyframes laser-pulse { to { transform: translate(-50%, -50%) scale(1.35); } }
@media (max-width: 780px) { .site-shell { width: min(100% - 38px, 620px); padding-top: 19px; }.topbar-note { font-size: 8px; }.welcome-view { grid-template-columns: 1fr; gap: 32px; padding: 12vh 0 45px; }.hero-copy { padding: 0; }.hero-copy h1 { font-size: clamp(70px, 22vw, 115px); }.side-caption { display: none; }.join-panel { min-height: 420px; }.presenter-view { padding: 12vh 0 34px; }.console-layout { grid-template-columns: 1fr; }.console-heading h1 { font-size: clamp(62px, 17vw, 96px); }.code-display { font-size: clamp(32px, 10vw, 49px); }.status-card { min-height: 255px; }.remote-view { min-height: calc(100vh - 71px); }.remote-stage { padding: 19px; }.remote-button { min-height: min(36vh, 190px); }.setup-note { gap: 13px; }.setup-note strong { flex-basis: 90px; } }
@media (max-width: 390px) { .site-shell { width: min(100% - 28px, 620px); }.hero-copy h1 { font-size: 69px; }.join-panel { padding: 22px; }.code-card, .status-card { padding: 20px; }.share-line { gap: 9px; }.share-line button { max-width: 160px; }.remote-button { min-height: 145px; }.remote-stage { padding: 14px; } }
