:root{
  --crew-bg:#09090b;
  --crew-white:#f7f7f3;
  --crew-muted:#a6a6ae;
  --crew-red:#ff3b27;
  --crew-violet:#8980ff;
  --crew-lime:#caff16;
  --crew-line:rgba(255,255,255,.16);
  --crew-display:'Oswald',Impact,sans-serif;
}
.crew-page{background:#050506;color:var(--crew-white);font-family:'Outfit','Avenir Next','Helvetica Neue',sans-serif;min-height:100dvh}
.crew-page.role-pending{visibility:hidden}
.crew-page .grain{display:none}
.crew-shell{position:relative;max-width:520px;min-height:100dvh;margin:0 auto;background:var(--crew-bg);overflow:hidden;box-shadow:0 0 80px rgba(0,0,0,.55)}
.crew-top{height:calc(96px + env(safe-area-inset-top));padding:calc(18px + env(safe-area-inset-top)) 18px 14px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:#09090b;position:relative;z-index:5}
.crew-home-link{justify-self:start;display:inline-flex;align-items:center;gap:4px;color:var(--crew-red);text-decoration:none;font:500 10px 'IBM Plex Mono',monospace;letter-spacing:.04em;text-transform:uppercase;min-height:44px}
.crew-home-link svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.crew-centred-title{display:inline-flex;align-items:center;gap:5px;color:var(--crew-white);font:700 26px/1 var(--crew-display);letter-spacing:-.045em;text-transform:uppercase;white-space:nowrap}
.crew-centred-title i{font-family:Arial,sans-serif;font-style:normal;font-size:20px;color:var(--crew-red);font-weight:400}
.crew-top>.capture-ring{justify-self:end}
.crew-wordmark{display:inline-flex;align-items:center;gap:7px;color:var(--crew-white);text-decoration:none;font-family:var(--crew-display);font-weight:700;font-size:31px;letter-spacing:-.055em;line-height:1;text-transform:uppercase}
.crew-wordmark i{font-family:Arial,sans-serif;font-style:normal;font-size:28px;color:var(--crew-red);font-weight:400;transform:translateY(-1px)}
.capture-ring{--crew-progress:0deg;width:66px;height:66px;border:0;border-radius:50%;padding:3px;background:conic-gradient(var(--crew-red) var(--crew-progress),#3a3a3e 0);color:var(--crew-white);font-family:var(--crew-display);font-size:18px;cursor:pointer}
.capture-ring::before{content:'';position:absolute}
.capture-ring span{width:100%;height:100%;border-radius:50%;display:grid;place-items:center;background:var(--crew-bg)}
.mission-stage{position:relative;min-height:calc(100dvh - 96px - 188px - env(safe-area-inset-top));display:flex;align-items:flex-end;overflow:hidden;touch-action:pan-y}
.mission-media{position:absolute;inset:0;background-position:center;background-size:cover;transform:scale(1.015);transition:background-image .35s ease,transform .65s ease}
.mission-stage:active .mission-media{transform:scale(1.03)}
.mission-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,8,10,.02) 26%,rgba(8,8,10,.22) 48%,#09090b 89%),linear-gradient(90deg,rgba(8,8,10,.18),transparent 55%)}
.mission-copy{position:relative;z-index:2;width:100%;padding:34px 26px 22px}
.mission-kicker{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.2em;color:var(--crew-red);font-weight:500;margin-bottom:7px}
.mission-copy h1{font-family:var(--crew-display);font-size:clamp(49px,14vw,78px);line-height:.95;letter-spacing:-.035em;margin:0 0 15px;max-width:470px;color:var(--crew-white);text-transform:uppercase;text-wrap:balance}
.mission-copy p{font-size:17px;line-height:1.45;margin:0 0 21px;color:#f7f7f3;max-width:420px;text-wrap:balance}
.crew-primary{border:0;background:var(--crew-red);color:#fff;min-height:58px;padding:15px 22px;font-family:var(--crew-display);font-size:17px;letter-spacing:.075em;text-transform:uppercase;cursor:pointer;transition:transform .18s,opacity .18s;width:100%}
.crew-primary:hover{transform:translateY(-2px)}
.crew-primary:active{transform:translateY(0)}
.crew-primary:disabled{background:#313136;color:#8e8e93;cursor:not-allowed;transform:none}
.camera-open{display:flex;align-items:center;justify-content:center;gap:13px}
.camera-open svg{width:24px;height:24px;fill:currentColor}
.crew-skip{display:block;margin:13px auto 0;border:0;border-bottom:1px solid var(--crew-violet);background:none;color:var(--crew-violet);font-size:15px;font-weight:600;padding:3px 0;cursor:pointer}
.crew-upload-state{height:16px;margin-top:8px;text-align:center;font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.14em;color:var(--crew-lime);text-transform:uppercase}
.crew-progress{height:102px;padding:13px 26px 9px;border-top:1px solid var(--crew-line);background:var(--crew-bg)}
.progress-summary{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:600}
.progress-check{width:19px;height:19px;border:2px solid var(--crew-lime);border-radius:50%;display:grid;place-items:center;color:var(--crew-lime);font-size:11px}
.progress-rail{display:grid;grid-template-columns:repeat(12,1fr);gap:5px;margin-top:13px}
.progress-rail button{height:5px;border:0;border-radius:4px;background:#3b3b3e;padding:0;cursor:pointer}
.progress-rail button.done{background:var(--crew-lime)}
.progress-rail button.active{background:var(--crew-violet)}
.swipe-cue{text-align:center;color:#8d8d94;font-size:10px;margin-top:8px}.swipe-cue span{color:var(--crew-violet);font-size:17px;margin-right:5px}
.crew-nav{height:86px;padding:8px 10px calc(9px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--crew-line);background:#08080a;position:relative;z-index:5}
.crew-nav button{border:0;background:none;color:#d7d7da;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font:500 11px 'Outfit','Avenir Next','Helvetica Neue',sans-serif;cursor:pointer}
.crew-nav button.active{color:var(--crew-red)}
.crew-nav svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.crew-nav .camera-dock{position:relative;color:#fff;overflow:visible}
.camera-dock-icon{width:58px;height:58px;margin-top:-24px;border-radius:50%;display:grid;place-items:center;background:var(--crew-red);border:4px solid var(--crew-bg);box-shadow:0 10px 26px rgba(0,0,0,.52),0 0 0 1px color-mix(in srgb,var(--crew-red) 55%,transparent);transition:transform .18s ease}
.camera-dock:hover .camera-dock-icon{transform:translateY(-2px)}
.camera-dock:active .camera-dock-icon{transform:translateY(1px) scale(.97)}
.crew-nav .camera-dock svg{width:28px;height:28px;stroke:#fff;stroke-width:1.8}
.nav-count{width:27px;height:27px;border:1.5px solid currentColor;border-radius:50%;display:grid;place-items:center;font-family:var(--crew-display);font-size:13px}
.crew-gate{position:fixed;inset:0;z-index:20;background:#09090b;display:grid;place-items:center;padding:26px;transition:opacity .35s,visibility .35s}
.crew-gate.gone{opacity:0;visibility:hidden;pointer-events:none}
.crew-gate-inner{width:min(430px,100%);text-align:center}
.crew-gate .crew-wordmark{font-size:clamp(48px,17vw,74px);justify-content:center}.crew-gate .crew-wordmark i{font-size:.8em}
.crew-gate p{font-size:18px;line-height:1.45;color:#d3d3d7;margin:25px auto 30px;max-width:330px}
.crew-fine{display:block;margin-top:18px;font-size:11px;line-height:1.55;color:#77777e}
.crew-back{position:absolute;top:calc(18px + env(safe-area-inset-top));left:20px;color:#aaaab0;text-decoration:none;font:11px 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.08em}
.crew-sheet{position:fixed;z-index:31;left:50%;bottom:0;width:min(520px,100%);max-height:82dvh;overflow:auto;background:#101013;border-top:1px solid #35353a;transform:translate(-50%,105%);transition:transform .35s cubic-bezier(.2,.8,.2,1);padding:22px 20px calc(32px + env(safe-area-inset-bottom))}
.crew-sheet.open{transform:translate(-50%,0)}
.sheet-backdrop{position:fixed;inset:0;z-index:30;background:rgba(0,0,0,.72);opacity:0;visibility:hidden;transition:.25s}.sheet-backdrop.show{opacity:1;visibility:visible}
.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.sheet-head span{font:10px 'IBM Plex Mono',monospace;letter-spacing:.2em;color:var(--crew-red)}.sheet-head h2{font:600 34px var(--crew-display);letter-spacing:-.02em;text-transform:uppercase;margin:2px 0 0}.sheet-head button{border:0;background:none;color:#aaa;font-size:20px;cursor:pointer;padding:6px}
.mission-list{display:flex;flex-direction:column}.mission-list>button{display:grid;grid-template-columns:38px 1fr 24px;gap:12px;align-items:center;text-align:left;background:none;border:0;border-top:1px solid var(--crew-line);color:#fff;padding:14px 0;cursor:pointer}.mission-list>button.done{color:#bfc0c4}.ml-num{font:12px 'IBM Plex Mono',monospace;color:var(--crew-violet)}.ml-copy strong{display:block;font:600 20px var(--crew-display);letter-spacing:.015em}.ml-copy small{display:block;color:#8e8e96;font-size:11px;line-height:1.35;margin-top:3px}.ml-state{color:var(--crew-lime);font-size:18px;text-align:center}
.capture-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.capture-grid figure{margin:0;position:relative;background:#1b1b1f;overflow:hidden;min-height:150px}.capture-grid img,.capture-grid video{width:100%;height:100%;display:block;object-fit:cover;aspect-ratio:4/5}.capture-grid figcaption{position:absolute;inset:auto 0 0;padding:28px 9px 8px;background:linear-gradient(transparent,rgba(0,0,0,.82));font:9px 'IBM Plex Mono',monospace;color:#fff;letter-spacing:.08em}.capture-empty{grid-column:1/-1;text-align:center;color:#7e7e85;padding:50px 0}
.capture-actions{position:absolute;top:7px;right:7px;display:flex;gap:5px;z-index:2}
.capture-actions button{border:1px solid rgba(255,255,255,.3);background:rgba(8,8,10,.82);backdrop-filter:blur(8px);color:#fff;padding:6px 8px;font:600 8px 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.05em;cursor:pointer}
.capture-actions button:last-child{color:#ff9a91}
.capture-actions button:disabled{opacity:.45}
.gallery-sheet{max-height:94dvh}
.camera-choice-sheet{max-height:min(620px,88dvh);text-align:center;padding-top:26px}
.camera-choice-sheet .sheet-head{text-align:left}
.camera-choice-mark{width:94px;height:94px;margin:8px auto 24px;border-radius:50%;display:grid;place-items:center;color:var(--crew-red);background:color-mix(in srgb,var(--crew-red) 12%,#121216);border:1px solid color-mix(in srgb,var(--crew-red) 48%,transparent)}
.camera-choice-mark svg{width:43px;height:43px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.camera-choice-primary{font-size:21px;min-height:66px}
.camera-choice-secondary{display:block;width:100%;min-height:48px;margin-top:12px;border:1px solid color-mix(in srgb,var(--crew-red) 48%,#34343a);background:transparent;color:#f4f4f5;font:600 14px 'Outfit','Avenir Next','Helvetica Neue',sans-serif;cursor:pointer}
.camera-choice-note{margin:15px auto 0;color:#77777f;font-size:11px;line-height:1.5}
.gallery-intro{color:#8e8e96;font-size:12px;line-height:1.5;margin:-10px 0 18px}
.crew-chapters{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;margin:0 -20px 16px;padding:0 20px 7px;scroll-snap-type:x proximity}
.crew-chapters::-webkit-scrollbar{display:none}
.crew-chapters button{flex:0 0 auto;scroll-snap-align:start;display:flex;align-items:center;gap:8px;border:1px solid #33333a;border-radius:4px;background:#17171b;color:#aaaab2;padding:9px 11px;font:600 9px 'IBM Plex Mono',monospace;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.crew-chapters button b{display:grid;place-items:center;min-width:18px;height:18px;border-radius:50%;background:#28282e;color:#f0f0f2;font-size:8px}
.crew-chapters button.active{border-color:#ff4938;background:#ff4938;color:#fff}
.crew-chapters button.active b{background:rgba(0,0,0,.2)}
.crew-chapter-title{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:0 0 10px;padding-bottom:10px;border-bottom:1px solid #29292e}
.crew-chapter-title span{color:#ff6152;font:500 8px 'IBM Plex Mono',monospace;letter-spacing:.22em}
.crew-chapter-title strong{font:600 20px 'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.02em;color:#f4f4f5}
.crew-wall{columns:2;column-gap:0}
.crew-wall figure{break-inside:avoid;margin:0;position:relative;overflow:hidden;background:#1a1a1d}
.crew-wall img,.crew-wall video{display:block;width:100%;height:auto;object-fit:contain;background:#111}
.crew-wall figcaption{position:absolute;inset:auto 0 0;padding:26px 8px 7px;background:linear-gradient(transparent,rgba(0,0,0,.82));font:8px 'IBM Plex Mono',monospace;letter-spacing:.07em;text-transform:uppercase;color:#efeff1}
.crew-page .toast-chip{border-color:rgba(255,59,39,.45);background:#141416;color:#fff;bottom:105px}
.crew-page .modal .panel{background:#111114;border-color:#35353a}.crew-page .modal .mk,.crew-page .modal .mparty .pn{color:var(--crew-red)}.crew-page .modal h3{font-family:var(--crew-display);text-transform:uppercase}.crew-page .modal .mname{font-family:'Outfit','Avenir Next','Helvetica Neue',sans-serif;border-radius:3px;border-color:#3a3a40}.crew-page .modal .mname:hover{border-color:var(--crew-red);background:rgba(255,59,39,.1)}.crew-page .inp:focus{border-color:var(--crew-red)}
@media(min-width:700px){.crew-shell{border-left:1px solid #222227;border-right:1px solid #222227}.crew-sheet{border-left:1px solid #35353a;border-right:1px solid #35353a}}
@media(max-height:760px){.crew-top{height:calc(78px + env(safe-area-inset-top));padding-top:calc(10px + env(safe-area-inset-top))}.capture-ring{width:56px;height:56px}.mission-stage{min-height:calc(100dvh - 78px - 166px - env(safe-area-inset-top))}.mission-copy{padding-bottom:13px}.mission-copy h1{font-size:46px;margin-bottom:9px}.mission-copy p{font-size:14px;margin-bottom:13px}.crew-primary{min-height:50px}.crew-progress{height:88px;padding-top:9px}.swipe-cue{display:none}.crew-nav{height:78px}}
@media(prefers-reduced-motion:reduce){.mission-media,.crew-sheet,.crew-gate{transition:none}}
