/* CruiseLens — thecruiselens.com
   Night at sea, seen through a lens. Big serif words, generous space, one cool
   accent for you (beam), one warm accent for the ship (brass). Motion does the
   talking: options glow, notes pop in, the ship comes into focus. */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,600&family=IBM+Plex+Mono:wght@500&display=swap');

/* Expeditioner Travel palette and type, sampled from the site (not invented):
   #F5F5F5 page · #E9E6E1 header band · #9B524C terracotta accent · #7C6A56 warm
   secondary · Cormorant Garamond display · Source Serif 4 body · IBM Plex Mono
   readouts. The variable names are the ones every rule below uses, so a reskin
   is this block only. */
:root{
  --bg:#F5F5F5; --bg2:#FBFAF8; --band:#E9E6E1; --panel:#FFFFFF; --panel2:#FBFAF8;
  --line:#DDD8D0; --line2:#C9C2B8;
  --text:#1E1B18; --dim:#6E675E; --faint:#9A9288;
  --beam:#9B524C; --beam2:#7E3F3A; --beam-soft:rgba(155,82,76,.09); --beam-line:rgba(155,82,76,.5); --beam-glow:rgba(155,82,76,.28);
  --brass:#7C6A56; --brass-soft:rgba(124,106,86,.10); --brass-line:rgba(124,106,86,.5);
  --on-accent:#FBF9F6;
  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  --sans:'Source Serif 4',Georgia,serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --w:680px; --wr:820px; --r:18px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:18px;line-height:1.55;-webkit-font-smoothing:antialiased;min-height:100vh;position:relative;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(1000px 600px at 15% -10%, rgba(155,82,76,.07), transparent 60%),
             radial-gradient(800px 500px at 100% 105%, rgba(124,106,86,.08), transparent 60%),var(--bg)}
a{color:var(--beam);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
h1,h2,h3{margin:0;font-weight:400}
p{margin:.6em 0}
button{font:inherit;cursor:pointer;color:inherit}
:focus-visible{outline:2px solid var(--beam);outline-offset:3px;border-radius:6px}
.wrap{max-width:var(--wr);margin:0 auto;padding:0 22px}
#s-q,#s-int,#s-reading{max-width:var(--w);margin-left:auto;margin-right:auto}
#s-res{max-width:760px;margin-left:auto;margin-right:auto}
em.i{font-family:var(--serif);font-style:italic;font-weight:400;color:var(--beam2)}
.mono{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.dim{color:var(--dim)}
.fine{font-size:14px;color:var(--dim);line-height:1.55}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- header ---------- */
.top{position:sticky;top:0;z-index:20;background:var(--band);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:10px;height:58px}
.mark{width:26px;height:26px;color:var(--beam);flex:none}
.top .nm{font-weight:600;font-size:16px;letter-spacing:-.01em}
.top .by{font-size:13px;color:var(--dim)}
.top .by a{color:var(--dim)}
.top .right{margin-left:auto;display:flex;gap:16px;align-items:center}
.top .right a{font-size:13px;color:var(--dim)}
@media(max-width:560px){.top .by{display:none}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid var(--line2);background:var(--panel);color:var(--text);
  border-radius:999px;padding:14px 24px;font-weight:500;font-size:16px;transition:border-color .15s, background .15s, transform .15s, box-shadow .2s}
.btn:hover{border-color:var(--beam-line);background:var(--beam-soft);text-decoration:none;transform:translateY(-1px)}
.btn.primary{background:var(--beam);color:var(--on-accent);border-color:var(--beam);font-weight:600;box-shadow:0 8px 30px -10px var(--beam-glow)}
.btn.primary:hover{background:var(--beam2);border-color:var(--beam2);color:var(--on-accent);box-shadow:0 12px 36px -10px var(--beam-glow)}
.btn.brass{border-color:var(--brass-line);color:var(--brass)}
.btn.brass:hover{background:var(--brass-soft)}
.btn[disabled]{opacity:.5;cursor:default;transform:none;box-shadow:none}
.btn .arr{font-family:var(--mono);font-size:14px}
.btn small{display:block;font-weight:400;font-size:12.5px;opacity:.7;margin-top:2px}
.btn.big{flex-direction:column;align-items:flex-start;text-align:left;padding:18px 24px;border-radius:20px;gap:0;min-width:220px}
.link{background:none;border:0;padding:0;color:var(--dim);font-size:15px}
.link:hover{color:var(--text)}

/* ---------- screens ---------- */
.screen{display:none}
.screen.on{display:block;animation:rise .45s cubic-bezier(.2,.7,.2,1)}
@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ---------- intro ---------- */
#s-intro{position:relative}
.hero-art{position:absolute;top:-60px;bottom:0;left:50%;width:100vw;transform:translateX(-50%);z-index:-1;pointer-events:none;opacity:1;background-image:url('/img/hero.jpg');background-size:cover;background-position:center right;-webkit-mask-image:linear-gradient(to bottom, #000 0%, #000 72%, transparent 100%);mask-image:linear-gradient(to bottom, #000 0%, #000 72%, transparent 100%)}
.hero-art::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg, rgba(245,245,245,.94) 0%, rgba(245,245,245,.78) 38%, rgba(245,245,245,.15) 58%, rgba(245,245,245,0) 72%)}
.hero{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:48px;align-items:center;padding:76px 0 40px;min-height:78vh}
.hero-photo{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:22px;box-shadow:0 30px 60px -30px rgba(30,27,24,.45);display:block}
@media(max-width:800px){.hero{grid-template-columns:1fr;padding-top:36px;min-height:0}.hero .ret{order:-1;width:170px;height:170px;justify-self:center}.hero-art::after{background:linear-gradient(180deg, rgba(245,245,245,.35) 0%, rgba(245,245,245,.9) 45%, rgba(245,245,245,.96) 100%)}}
.hero h1{font-family:var(--serif);font-weight:500;font-size:clamp(36px,6vw,78px);line-height:1;letter-spacing:-.01em;margin:14px 0 18px}
.hero .lede{font-size:18px;color:var(--dim);max-width:30em;margin:0 0 28px}
.ret{width:320px;height:320px;position:relative}
.ret svg{width:100%;height:100%;overflow:visible}
/* The reticle sits on a photograph here, so its per-shape opacities are
   overridden and a soft light disc is placed behind it. */
.hero .ret{position:relative}
.hero .ret::before{content:"";position:absolute;inset:-6%;border-radius:50%;background:radial-gradient(circle, rgba(250,249,247,.85) 0%, rgba(250,249,247,.55) 55%, rgba(250,249,247,0) 72%)}
.hero .ret svg{position:relative}
.hero .ret svg [stroke-opacity]{stroke-opacity:1!important}
.hero .ret svg circle,.hero .ret svg path,.hero .ret svg line{stroke-width:2!important;vector-effect:non-scaling-stroke}
.hero .ret svg g[fill="currentColor"] path{stroke:none!important}
.hero .ret svg [opacity]{opacity:1!important}
.ret .orbit{transform-origin:50% 50%;animation:spin 36s linear infinite}
.ret .breathe{transform-origin:50% 50%;animation:breathe 6s ease-in-out infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes breathe{0%,100%{transform:scale(.96);opacity:.5}50%{transform:scale(1.02);opacity:1}}
.start-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.wait{display:inline-flex;align-items:center;gap:10px;color:var(--dim);font-size:15px}
.wait i{width:10px;height:10px;border-radius:50%;border:1.5px solid var(--beam);border-right-color:transparent;animation:spin 1s linear infinite}
.notice{border-left:2px solid var(--brass);padding:8px 12px;font-size:14px;color:var(--dim);margin-top:14px;display:none}
.notice.on{display:block}
.facts{margin-top:26px}

/* ---------- questionnaire ---------- */
.qhead{padding-top:28px}
.voyage{position:relative}
.voyage svg{width:100%;height:auto;overflow:visible;display:block}
.voyage .track{stroke:var(--line2);stroke-width:1.5}
.voyage .done{stroke:var(--beam);stroke-width:2;transition:stroke-dashoffset .5s ease}
.voyage .port{fill:var(--bg);stroke:var(--line2);stroke-width:1.5}
.voyage .port.on{fill:var(--beam);stroke:var(--beam)}
.voyage .boat{fill:var(--beam);filter:drop-shadow(0 0 8px var(--beam-glow));transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.qn{font-family:var(--mono);font-size:11.5px;color:var(--faint);letter-spacing:.08em;margin:10px 0 14px}
.qtext{font-family:var(--serif);font-weight:500;font-size:clamp(28px,4.6vw,42px);line-height:1.12;letter-spacing:-.01em;margin:0 0 24px;max-width:20em}
.opts{display:flex;flex-direction:column;gap:10px}
.opt{display:grid;grid-template-columns:30px 1fr;gap:14px;align-items:center;text-align:left;width:100%;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px 16px 16px;font-size:18px;line-height:1.4;color:var(--text);position:relative;
  transition:border-color .15s, background .15s, transform .15s, box-shadow .2s}
.opt:hover{border-color:var(--beam-line);background:var(--panel2);transform:translateY(-1px)}
.opt:active{transform:scale(.99)}
.opt .k{width:26px;height:26px;border-radius:50%;border:1px solid var(--line2);display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--faint);font-weight:500}
.opt.sel{border-color:var(--beam);background:linear-gradient(90deg, var(--beam-soft), rgba(155,82,76,.03));box-shadow:0 10px 40px -14px var(--beam-glow);animation:pick .35s cubic-bezier(.2,.7,.2,1)}
.opt.sel .k{background:var(--beam);color:var(--on-accent);border-color:var(--beam)}
@keyframes pick{0%{transform:scale(1)}40%{transform:scale(1.02)}100%{transform:scale(1)}}
.note{display:flex;align-items:flex-start;gap:12px;margin:22px 0 0;min-height:44px;opacity:0;transform:translateY(6px);transition:opacity .3s, transform .3s}
.note.on{opacity:1;transform:none}
.note .av{width:32px;height:32px;border-radius:50%;background:var(--beam-soft);border:1px solid var(--beam-line);display:flex;align-items:center;justify-content:center;color:var(--beam);flex:none}
.note .av svg{width:18px;height:18px}
.note .bub{font-family:var(--serif);font-style:italic;font-size:23px;color:var(--beam2);line-height:1.25;padding-top:3px}
.nav{display:flex;justify-content:space-between;align-items:center;margin-top:18px;padding-bottom:40px}

/* ---------- interim ---------- */
.int{padding:70px 0 40px}
.int .bigline{font-family:var(--serif);font-weight:500;font-size:clamp(34px,5.8vw,62px);line-height:1.02;letter-spacing:-.01em;max-width:13em}
.int .bigline b{font-weight:400;color:var(--beam);font-style:italic}
.int .say{font-size:19px;color:var(--dim);margin:20px 0 0;max-width:30em}
.route{margin-top:38px}
.route h3{font-family:var(--serif);font-weight:500;font-size:clamp(30px,4.6vw,38px);line-height:1.1;margin-bottom:8px}
.route .rline{color:var(--dim);font-size:16px;margin:0 0 20px}
.route .choice{display:flex;gap:12px;flex-wrap:wrap}
.rcard{display:none}

/* ---------- reading transition ---------- */
.reading{padding:120px 0;text-align:center}
.reading .ret{margin:0 auto 22px;width:130px;height:130px}
.reading .ret .orbit{animation-duration:2.2s}
.reading .rl{font-family:var(--serif);font-style:italic;font-size:28px;color:var(--beam2)}

/* ---------- results ---------- */
.res-head{padding:40px 0 6px}
.res-head h2{font-family:var(--serif);font-weight:500;font-size:clamp(34px,5.4vw,58px);line-height:1.02;letter-spacing:-.01em;margin:6px 0 10px}
.res-head .pdesc{font-size:18px;color:var(--dim);margin:0;max-width:34em}
.upgrade{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:22px;padding:14px 18px;border:1px solid var(--brass-line);border-radius:16px;background:var(--brass-soft)}
.upgrade p{margin:0;flex:1;min-width:14em;font-size:15px}
.card{margin-top:28px;border-radius:26px;overflow:hidden;background:var(--panel);border:1px solid var(--line);box-shadow:0 30px 70px -45px rgba(30,27,24,.45)}
.shot{position:relative;aspect-ratio:16/10;background:var(--bg2);overflow:hidden}
.shot img.photo{width:100%;height:100%;object-fit:cover;display:block;filter:blur(14px) saturate(.7);transform:scale(1.08);transition:filter 1.3s cubic-bezier(.2,.7,.2,1), transform 1.6s cubic-bezier(.2,.7,.2,1)}
.shot.focused img.photo{filter:blur(0) saturate(1);transform:scale(1)}
.shot::after{content:"";position:absolute;inset:0;background:linear-gradient(to top, rgba(24,19,16,.9), rgba(24,19,16,.3) 45%, rgba(24,19,16,0) 70%)}
.shot .noimg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px;text-align:center;padding:24px;color:var(--dim);font-size:14px;background:repeating-linear-gradient(135deg, rgba(160,188,228,.05) 0 10px, transparent 10px 20px)}
.chip-rank{position:absolute;top:16px;left:16px;z-index:2;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--beam);background:rgba(251,249,246,.92);border:1px solid var(--beam-line);border-radius:999px;padding:6px 12px;font-weight:500}
.oplogo{position:absolute;right:16px;top:16px;z-index:2;height:38px;max-width:130px;object-fit:contain;background:rgba(255,255,255,.95);border-radius:10px;padding:6px 10px}
.title-over{position:absolute;left:24px;right:24px;bottom:18px;z-index:2}
.title-over h3{font-family:var(--serif);font-weight:500;font-size:clamp(30px,5vw,50px);line-height:1;letter-spacing:-.01em;color:#FBF9F6;text-shadow:0 4px 30px rgba(0,0,0,.6)}
.title-over .sub{color:rgba(251,249,246,.82);font-size:15px;margin-top:6px}
.cbody{padding:20px 24px 26px}
.score{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.score b{font-family:var(--mono);font-weight:500;font-size:52px;line-height:1;color:var(--beam);letter-spacing:-.03em}
.score .bn{font-family:var(--serif);font-style:italic;font-size:26px;color:var(--beam2)}
.score .cr{margin-left:auto;font-size:12.5px;color:var(--faint)}
.score .cr a{color:var(--faint)}
.trace{margin:22px 0 0}
.trace svg{width:100%;height:auto;display:block}
.trace .legend{display:flex;gap:18px;font-size:13.5px;color:var(--dim);margin-bottom:4px;flex-wrap:wrap}
.trace .legend i{display:inline-block;width:18px;height:2px;vertical-align:middle;margin-right:7px;border-radius:2px}
.trace path.you{stroke:var(--beam);stroke-width:2.2;fill:none;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 6px var(--beam-glow))}
.trace path.ship{stroke:var(--brass);stroke-width:2;fill:none;stroke-linejoin:round;stroke-linecap:round}
.trace path.draw{animation:draw 1.6s ease-out}
.trace path.ship.draw{animation-delay:.25s;animation-fill-mode:backwards}
@keyframes draw{from{stroke-dasharray:2000;stroke-dashoffset:2000}to{stroke-dasharray:2000;stroke-dashoffset:0}}
.trace .cap{font-size:14px;color:var(--dim);margin:8px 0 0}
.why{list-style:none;padding:0;margin:20px 0 0;display:flex;flex-direction:column;gap:8px}
.why li{display:flex;gap:12px;align-items:baseline;font-size:16.5px}
.why li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--beam);flex:none;box-shadow:0 0 8px var(--beam-glow);position:relative;top:-2px}
.why li b{font-weight:500}
.why li.cost{margin-top:8px;padding:14px 16px;border-radius:14px;background:var(--brass-soft);border:1px solid var(--brass-line);color:var(--text)}
.why li.cost::before{background:var(--brass);box-shadow:none}
.why li.cost b{color:var(--brass)}
.deep{display:inline-flex;align-items:center;gap:10px;margin-top:20px;border:1px solid var(--beam-line);color:var(--beam);border-radius:999px;padding:12px 18px;font-weight:500;font-size:15px}
.deep:hover{background:var(--beam-soft);text-decoration:none}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.chip{font-size:12.5px;border:1px solid var(--line);border-radius:999px;padding:5px 11px;color:var(--dim)}
.chip.warn{border-color:var(--brass-line);color:var(--brass)}
.disc{display:block;background:none;border:0;color:var(--beam);font-size:15px;padding:18px 0 0;font-weight:500}
.drawer{display:none;margin-top:12px;padding-top:6px}
.drawer.on{display:block}
.spec{display:grid;grid-template-columns:1fr;gap:0;margin:8px 0 0}
.spec div{display:grid;grid-template-columns:44% 1fr;gap:12px;padding:8px 0;border-top:1px solid var(--line);font-size:14.5px}
.spec div span:first-child{color:var(--dim)}
.spec div span:last-child{color:var(--text)}
.st{font-size:11px;padding:1px 7px;border-radius:999px;border:1px solid var(--line);color:var(--faint);white-space:nowrap;margin-left:6px}
.st.N{border-color:var(--brass-line);color:var(--brass)}
.st.D{border-color:var(--beam-line);color:var(--beam)}
.sect{margin-top:34px}
.sect h3{font-family:var(--serif);font-weight:500;font-size:32px;line-height:1.1;margin-bottom:6px}
.sect .sub{color:var(--dim);font-size:15px;margin:0 0 12px}
.locked{display:flex;justify-content:space-between;align-items:center;gap:16px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:14px 18px;margin-top:8px}
.locked .lname{display:flex;align-items:center;gap:14px;min-width:0}
.locked .rank{font-family:var(--mono);color:var(--faint);font-size:12px}
.locked .veil{height:14px;width:min(200px,38vw);border-radius:7px;background:linear-gradient(90deg, var(--line2), var(--line));filter:blur(3px)}
.locked .lband{font-size:14px;color:var(--dim);white-space:nowrap}
.locked .lband b{font-family:var(--mono);color:var(--beam);font-weight:500;font-size:16px}
.callout{font-size:14.5px;color:var(--dim);border-left:2px solid var(--brass);padding:4px 0 4px 14px;margin-top:12px}
.ko-line{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px;font-size:15px;color:var(--dim)}
.ko-line .chip{color:var(--brass);border-color:var(--brass-line)}
.perks{margin-top:34px;padding:24px 26px;border-radius:22px;background:var(--band);border:1px solid var(--line)}
.perks h3{font-family:var(--serif);font-weight:500;font-size:34px;line-height:1.05;margin-bottom:10px}
.perks ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.perks li{display:flex;gap:12px;align-items:baseline;font-size:16px;color:var(--text)}
.perks li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--brass);flex:none;position:relative;top:-2px}
.gate{margin-top:26px;padding:26px;border-radius:22px;background:var(--panel);border:1px solid var(--beam-line)}
.gate h3{font-family:var(--serif);font-weight:500;font-size:36px;line-height:1.05;margin-bottom:6px}
label{display:block;font-size:13px;color:var(--dim);margin:14px 0 6px}
input,textarea{width:100%;background:var(--bg2);border:1px solid var(--line2);color:var(--text);border-radius:14px;padding:13px 15px;font:inherit;font-size:16px}
input:focus,textarea:focus{outline:none;border-color:var(--beam-line);box-shadow:0 0 0 3px var(--beam-soft)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:520px){.grid2{grid-template-columns:1fr}.gate{padding:20px}.cbody{padding:18px 18px 22px}.title-over{left:18px;right:18px}}
.sent h3{font-family:var(--serif);font-weight:500;font-size:36px;line-height:1.05}
.foot{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin:34px 0 60px;font-size:14px;color:var(--dim)}
.err{position:fixed;top:0;left:0;right:0;background:#7a1f1f;color:#fff;padding:9px 14px;font-size:12.5px;font-family:var(--mono);z-index:99;display:none;white-space:pre-wrap}

/* ---------- static documents ---------- */
.doc{padding:44px 0 60px;max-width:44em}
.doc h1{font-family:var(--serif);font-size:clamp(38px,5vw,56px);line-height:1.02;margin:12px 0 10px}
.doc h2{font-family:var(--serif);font-size:30px;margin:38px 0 8px}
.doc h3{font-size:17px;font-weight:600;margin:24px 0 6px}
.doc p,.doc li{color:var(--dim);font-size:16px}
.doc .formula{font-family:var(--mono);font-size:15px;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:inline-block}
.doc .todo{border:1px solid var(--brass-line);border-radius:10px;padding:12px 14px;color:var(--brass);font-size:14px}
.doc table{width:100%;border-collapse:collapse;font-size:15px;margin:8px 0}
.doc td{padding:8px 0;border-bottom:1px solid var(--line);vertical-align:top;color:var(--dim)}
.doc td:first-child{color:var(--text);width:38%;padding-right:12px}
footer.site{border-top:1px solid var(--line);margin-top:40px;padding:22px 0}
footer.site .wrap{display:flex;gap:18px;flex-wrap:wrap;justify-content:space-between;align-items:center}
footer.site a{color:var(--dim);font-size:13px}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.shot img.photo{filter:none;transform:none}}
