:root{--paper:#FFFFFF;--ink:#23303D;--haze:#6E6456;--line:#EDE4D5;--clay:#C4604A;--shadow:rgba(35,48,61,.16);
    --terra:#DC7A5C;--terra-deep:#B85F44;--sage:#6E9B8E;--sage-soft:#9DBDB3;--sage-deep:#4E7A6D;--sage-ink:#3F6256;
    --gold:#D6A24E;--gold-ink:#8A6420;--mist:#D9E5E3;--cream:#FAF5EC;
    /* elevation scale */
    --shadow-1:0 12px 26px -18px var(--shadow);
    --shadow-2:0 18px 38px -22px var(--shadow);
    --shadow-3:0 24px 50px -16px rgba(35,48,61,.4);
    --shadow-press:0 12px 26px -8px rgba(184,95,68,.5);
    /* radius scale */
    --r-sm:12px;--r-md:16px;--r-lg:20px;--r-pill:100px;--r-sheet:26px;
    /* type scale */
    --t-xs:11px;--t-sm:13px;--t-md:14px;--t-lg:16px;--t-xl:19px;--t-2xl:23px;--t-3xl:28px;--t-4xl:34px;--t-5xl:42px;}
  *{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
  html,body{height:100%}
  /* MOBILE-FIRST: real phones get the full viewport, no frame, nav pinned. */
  body{font-family:'Nunito',system-ui,sans-serif;color:var(--ink);
    -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
    background:var(--cream);min-height:100dvh;overflow:hidden}
  .phone{width:100%;height:100dvh;background:var(--cream);overflow:hidden;
    position:relative;display:flex;flex-direction:column}
  /* Desktop only: the centred phone-preview frame. */
  @media (min-width:560px){
    body{display:flex;align-items:center;justify-content:center;padding:24px;overflow:auto;
      background:radial-gradient(120% 80% at 50% -10%,#EDE6DA 0%,#DAD2C2 50%,#C7BCA8 100%)}
    .phone{width:390px;height:auto;min-height:780px;max-height:92dvh;border-radius:42px;
      box-shadow:0 40px 80px -20px rgba(35,48,61,.5),0 0 0 11px #1A2330,0 0 0 13px #33414f}
  }
  .status{height:30px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:10px 26px 0;font:600 13px/1 'Nunito'}
  .status .dots{display:flex;gap:5px;align-items:center;font:600 11px 'Nunito';color:var(--ink)}
  .screen{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}
  .screen::-webkit-scrollbar{width:0}
  .view{display:none;animation:fade .35s ease}
  .view.active{display:block}
  @keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  .pad{padding:6px 22px 124px}
  .cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
  .mast{padding:10px 22px 4px;display:flex;align-items:flex-end;justify-content:space-between}
  .mast .word{font-family:'Fredoka';font-weight:600;font-size:25px;letter-spacing:-.01em}
  .mast .word b{color:var(--terra)}
  .crewbtn{background:none;border:1px solid var(--line);border-radius:100px;padding:5px 11px;font:600 10px 'Nunito';color:var(--terra);cursor:pointer}
  .eyebrow{font-family:'Nunito';font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--haze)}

  .cast-banner{margin-top:14px;width:100%;border:none;cursor:pointer;text-align:left;
    background:linear-gradient(120deg,var(--terra-deep),var(--terra));color:#F4F2EA;border-radius:22px;padding:18px 20px;
    display:flex;align-items:center;gap:16px;box-shadow:0 16px 30px -16px rgba(184,95,68,.8);position:relative;overflow:hidden}
  .cast-banner::after{content:"";position:absolute;right:-30px;top:-30px;width:130px;height:130px;border-radius:50%;
    background:radial-gradient(circle,rgba(157,189,179,.35),transparent 70%)}
  .cast-banner .glyph{font-size:28px;flex:none;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}
  .cast-banner h3{font-family:'Fredoka';font-weight:600;font-size:17px;line-height:1.1}
  .cast-banner p{font-family:'Nunito';font-size:11px;color:var(--sage-soft);margin-top:4px}

  .vintro{margin-top:14px;border-radius:18px;background:var(--paper);border:1px solid var(--line);padding:14px 16px}
  .vintro h2{font-family:'Fredoka';font-weight:600;font-size:18px;line-height:1.15}
  .vintro p{font-family:'Nunito';font-size:11px;color:var(--haze);margin-top:6px;line-height:1.5}

  .timeline{margin-top:22px;position:relative;padding-left:30px}
  .timeline::before{content:"";position:absolute;left:9px;top:8px;bottom:8px;width:2px;background:repeating-linear-gradient(var(--line) 0 6px,transparent 6px 12px)}
  .tlrow{position:relative;margin-bottom:14px}
  .tlrow.port{cursor:pointer}
  .tlrow .dot{position:absolute;left:-26px;top:18px;width:12px;height:12px;border-radius:50%;background:var(--line);border:2px solid var(--cream)}
  .tlrow.port .dot{background:var(--sage)}
  .tlrow.sea .dot{background:var(--haze)}
  .tlcard{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:13px 15px;display:flex;gap:13px;align-items:center}
  .tlrow.port .tlcard{border-color:var(--sage-soft)}
  .tlrow.sea .tlcard{background:transparent;border-style:dashed}
  .tlcard .tcbody{flex:1;min-width:0}
  .tlthumb{width:60px;height:60px;border-radius:13px;position:relative;overflow:hidden;flex:none}
  .tlcard .top{display:flex;justify-content:space-between;align-items:baseline}
  .tlcard .day{font:700 10px 'Nunito';letter-spacing:.1em;text-transform:uppercase;color:var(--haze)}
  .tlcard .dt{font:400 11px 'Nunito';color:var(--haze)}
  .tlcard h3{font-family:'Fredoka';font-weight:600;font-size:18px;margin-top:3px;line-height:1.1}
  .tlrow.sea h3{color:var(--haze);font-size:16px}
  .tlcard .hours{font:400 11px 'Nunito';color:var(--terra);margin-top:6px}
  .tlcard .go{font:600 11px 'Nunito';color:var(--sage);margin-top:8px;display:inline-block}
  .flagrow{margin:0 0 14px 30px;font-size:12px;line-height:1.45;color:var(--clay);background:rgba(176,87,62,.08);border-radius:11px;padding:9px 12px}
  .flagrow b{font-family:'Nunito';font-size:10px;letter-spacing:.1em;text-transform:uppercase;display:block;margin-bottom:3px}

  .pback{background:none;border:none;color:var(--terra);font:600 12px 'Nunito';cursor:pointer;padding:4px 0;margin-top:4px}
  .phead{margin-top:8px}
  .phead .region{font-family:'Nunito';font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--haze)}
  .phead h2{font-family:'Fredoka';font-weight:600;font-size:27px;line-height:1.05;letter-spacing:-.01em;margin-top:4px}
  .phead .ph-meta{font-family:'Nunito';font-size:12px;color:var(--terra);margin-top:8px;line-height:1.5}
  .phead .dock{font-family:'Nunito';font-size:11px;color:var(--haze);margin-top:4px}
  .phead .flag{margin-top:12px;font-size:13px;line-height:1.5;color:var(--clay);background:rgba(176,87,62,.08);border:1px solid rgba(176,87,62,.2);border-radius:12px;padding:11px 13px}
  .phead .flag b{font-family:'Nunito';font-size:10px;letter-spacing:.1em;text-transform:uppercase;display:block;margin-bottom:4px}

  .hero{margin-top:18px;border-radius:24px;overflow:hidden;position:relative;cursor:pointer;box-shadow:0 18px 38px -16px var(--shadow)}
  .hero .himg{height:240px;position:relative}
  .hero .himg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,48,61,0) 35%,rgba(35,48,61,.86) 100%)}
  .hero .meta{position:absolute;left:0;right:0;bottom:0;padding:18px;z-index:2;color:#F4F2EA}
  .hero .kick{font-family:'Nunito';font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--sage-soft);margin-bottom:6px}
  .hero h3{font-family:'Fredoka';font-weight:600;font-size:24px;line-height:1.08}
  .hero .sub{font-family:'Nunito';font-size:12px;color:#D6D9CF;margin-top:7px;display:flex;gap:14px;flex-wrap:wrap}
  .herotag{position:absolute;top:14px;left:14px;z-index:3;background:rgba(251,250,244,.92);color:var(--terra-deep);font:700 10px 'Nunito';letter-spacing:.1em;text-transform:uppercase;padding:6px 10px;border-radius:100px}

  .findcard{background:var(--paper);border:1px solid var(--line);border-radius:18px;overflow:hidden;cursor:pointer;margin-bottom:14px;box-shadow:0 10px 22px -16px var(--shadow)}
  .findcard .img{height:130px;position:relative}
  .findcard .img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,48,61,0) 40%,rgba(35,48,61,.7) 100%)}
  .findcard .ov{position:absolute;left:0;right:0;bottom:0;padding:13px;z-index:2;color:#F4F2EA}
  .findcard .ov h4{font-family:'Fredoka';font-weight:600;font-size:18px;line-height:1.1}
  .findcard .body{padding:12px 15px 15px}
  .findcard .rowmeta{font-family:'Nunito';font-size:11px;color:var(--haze);display:flex;gap:12px;flex-wrap:wrap}
  .findcard .best{font-size:13px;color:var(--ink);line-height:1.45;margin-top:9px}
  .tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:11px}
  .tag{font:600 10px 'Nunito';letter-spacing:.04em;text-transform:uppercase;color:var(--terra);background:rgba(220,122,92,.09);border-radius:100px;padding:4px 9px}
  .tag.match{background:var(--sage);color:var(--ink)}
  .scorepill{float:right;font:700 10px 'Nunito';color:var(--ink);background:var(--sage-soft);border-radius:100px;padding:4px 9px}

  .chips{display:flex;gap:9px;flex-wrap:wrap;margin-top:8px}
  .chip{border:1px solid var(--line);background:var(--paper);border-radius:100px;padding:9px 15px;font:500 13px/1 'Nunito';cursor:pointer;transition:.16s}
  .chip.on{background:var(--terra);color:#F4F2EA;border-color:var(--terra)}
  .tune-note{font-family:'Nunito';font-size:11px;color:var(--haze);margin:14px 0 4px;line-height:1.5}

  /* reader */
  #reader{position:absolute;inset:0;background:var(--ink);z-index:40;display:none;flex-direction:column}
  #reader.open{display:flex;animation:rise .32s ease}
  @keyframes rise{from{transform:translateY(100%)}to{transform:none}}
  .r-top{flex:none;padding:14px 18px 8px}
  .r-segs{display:flex;gap:5px;margin-bottom:14px}
  .r-segs .seg{flex:1;height:3px;border-radius:3px;background:rgba(244,242,234,.22);overflow:hidden}
  .r-segs .seg i{display:block;height:100%;width:0;background:var(--sage);transition:width .35s}
  .r-segs .seg.done i,.r-segs .seg.cur i{width:100%}
  .r-bar{display:flex;align-items:center;justify-content:space-between;color:#E7E4DA}
  .r-bar .name{font-family:'Nunito';font-size:11px;color:var(--sage-soft)}
  .r-close{background:none;border:none;color:#E7E4DA;font-size:24px;cursor:pointer;line-height:1;padding:4px}
  .r-stage{flex:1;position:relative;overflow:hidden}
  .r-slide{position:absolute;inset:0;display:flex;flex-direction:column;opacity:0;pointer-events:none;transition:opacity .3s}
  .r-slide.show{opacity:1;pointer-events:auto}
  .r-img{height:44%;position:relative}
  .r-img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,48,61,0) 55%,var(--ink) 100%)}
  .r-content{flex:1;padding:22px 26px 26px;display:flex;flex-direction:column;overflow-y:auto}
  .r-content::-webkit-scrollbar{display:none}
  .r-step{font-family:'Nunito';font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--sage);margin-bottom:10px}
  .r-content h2{font-family:'Fredoka';font-weight:600;font-size:25px;line-height:1.1;color:#F6F4EC;letter-spacing:-.01em}
  .r-place{font-family:'Nunito';font-size:12px;color:var(--haze);margin-top:9px;display:flex;align-items:center;gap:7px}
  .r-place .pin{color:var(--sage)}
  .r-text{color:#D9D6CC;font-size:15px;line-height:1.62;margin-top:16px}
  .r-tip{margin-top:18px;border-left:2px solid var(--sage);padding:4px 0 4px 14px;font-size:13px;line-height:1.55;color:#C9C6BB}
  .r-tip b{color:var(--sage-soft);font-family:'Nunito';font-size:10px;letter-spacing:.12em;text-transform:uppercase;display:block;margin-bottom:4px}
  .r-tap{position:absolute;top:0;bottom:0;width:32%;z-index:5}
  .r-tap.left{left:0}.r-tap.right{right:0;width:68%}
  .r-foot{flex:none;padding:14px 22px 22px;display:flex;gap:10px}
  .r-foot button{flex:1;border:none;border-radius:100px;padding:14px;font:600 14px 'Nunito';cursor:pointer}
  .r-save{background:rgba(244,242,234,.12);color:#E7E4DA}
  .r-save.saved{background:var(--sage);color:var(--ink)}
  .r-next{background:#F4F2EA;color:var(--ink)}
  .r-finish{justify-content:center;align-items:center;padding:36px 30px;text-align:center}
  .r-finish .seal{width:74px;height:74px;border-radius:50%;background:var(--sage);display:flex;align-items:center;justify-content:center;margin-bottom:18px;font-size:30px}
  .r-finish h2{color:#F6F4EC}
  .r-finish p{color:#C9C6BB;font-size:14px;line-height:1.6;margin-top:12px;max-width:280px}
  .r-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:26px;width:100%;max-width:300px}
  .r-actions button{border:none;border-radius:14px;padding:13px;font:600 13px 'Nunito';cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:5px}
  .r-actions .ic{font-size:18px}
  .r-actions .prime{grid-column:1/3;background:var(--sage);color:var(--ink)}
  .r-actions .ghost{background:rgba(244,242,234,.1);color:#E7E4DA}

  /* cast */
  #cast{position:absolute;inset:0;z-index:45;display:none;flex-direction:column;align-items:center;justify-content:center;
    background:radial-gradient(130% 90% at 50% 40%,var(--terra) 0%,var(--terra-deep) 60%,#142420 100%);padding:30px}
  #cast.open{display:flex;animation:fade .25s ease}
  #cast .cap{font-family:'Nunito';font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--sage-soft);margin-bottom:18px}
  .reel{width:280px;height:300px;border-radius:24px;overflow:hidden;position:relative;box-shadow:0 24px 50px -16px rgba(0,0,0,.6);background:#0d1614}
  .reel .label{position:absolute;left:0;right:0;bottom:0;padding:18px;z-index:2;color:#F4F2EA;background:linear-gradient(180deg,transparent,rgba(13,22,20,.92))}
  .reel .label h2{font-family:'Fredoka';font-weight:600;font-size:20px;line-height:1.1}
  .reel .label .m{font-family:'Nunito';font-size:11px;color:var(--sage-soft);margin-top:6px}
  .reel.spinning .label{opacity:.35}
  .cast-foot{margin-top:26px;display:flex;flex-direction:column;gap:10px;width:280px}
  .cast-foot.hidden{visibility:hidden}
  .cast-foot button{border:none;border-radius:100px;padding:14px;font:600 14px 'Nunito';cursor:pointer}
  .cast-open{background:#F4F2EA;color:var(--ink)}
  .cast-plan{background:var(--sage);color:var(--ink)}
  .cast-again{background:transparent;color:var(--sage-soft);border:1px solid rgba(157,189,179,.4)!important;font-family:'Nunito';font-size:12px}
  .cast-x{position:absolute;top:16px;right:18px;background:none;border:none;color:#E7E4DA;font-size:26px;cursor:pointer}

  /* sheets */
  #sheet{position:absolute;inset:0;z-index:50;display:none}
  #sheet.open{display:block}
  .sheet-bd{position:absolute;inset:0;background:rgba(35,48,61,.5);animation:fade .25s}
  .sheet-card{position:absolute;left:0;right:0;bottom:0;background:var(--paper);border-radius:26px 26px 0 0;padding:10px 22px calc(26px + env(safe-area-inset-bottom));max-height:88%;overflow-y:auto;animation:sheetup .3s ease}
  .sheet-card::-webkit-scrollbar{display:none}
  @keyframes sheetup{from{transform:translateY(100%)}to{transform:none}}
  .sheet-handle{width:40px;height:4px;border-radius:4px;background:var(--line);margin:6px auto 16px}
  .sheet h3{font-family:'Fredoka';font-weight:600;font-size:21px;letter-spacing:-.01em}
  .sheet .lead{font-family:'Nunito';font-size:11px;color:var(--haze);margin-top:4px;margin-bottom:18px}
  .field{margin-bottom:16px}
  .field label{display:block;font:600 11px 'Nunito';letter-spacing:.08em;text-transform:uppercase;color:var(--haze);margin-bottom:7px}
  .field input,.field textarea{width:100%;border:1px solid var(--line);background:var(--cream);border-radius:13px;padding:13px;font:400 14px 'Nunito';color:var(--ink);resize:none}
  .field textarea{min-height:78px;line-height:1.5}
  .twocol{display:flex;gap:12px}.twocol .field{flex:1}
  .btn{width:100%;border:none;border-radius:100px;padding:15px;font:600 14px 'Nunito';cursor:pointer;margin-top:4px}
  .btn-brass{background:var(--sage);color:var(--ink)}
  .btn-river{background:var(--terra);color:#F4F2EA}
  .btn-line{background:var(--paper);color:var(--ink);border:1px solid var(--line)}
  .btn-row{display:flex;gap:10px}.btn-row .btn{margin-top:0}
  .rating{display:flex;gap:10px;margin-bottom:4px}
  .tidemark{font-size:28px;color:var(--line);cursor:pointer;transition:.12s;line-height:1}
  .tidemark.on{color:var(--sage);transform:scale(1.06)}
  .rating-cap{font-family:'Nunito';font-size:11px;color:var(--haze);min-height:14px}
  .photo-grid{display:flex;gap:9px;flex-wrap:wrap}
  .photo-grid .thumb{width:64px;height:64px;border-radius:12px;background-size:cover;background-position:center;position:relative}
  .photo-grid .thumb b{position:absolute;top:-8px;right:-8px;width:26px;height:26px;border-radius:50%;background:var(--ink);color:#fff;font:700 15px/26px 'Nunito';text-align:center;cursor:pointer}
  .photo-add{width:64px;height:64px;border-radius:12px;border:1.5px dashed var(--haze);background:var(--cream);display:flex;align-items:center;justify-content:center;color:var(--haze);font-size:26px;cursor:pointer}
  .photo-add input{display:none}
  .cardwrap{border-radius:16px;overflow:hidden;box-shadow:0 14px 30px -14px var(--shadow);margin-bottom:18px;background:var(--cream)}
  #cardCanvas2{width:100%;height:auto;display:block}

  #stamp{position:absolute;inset:0;z-index:60;display:none;align-items:center;justify-content:center;pointer-events:none}
  #stamp.go{display:flex}
  #stamp .s{width:150px;height:150px;border-radius:50%;border:3px solid var(--sage);color:var(--terra-deep);background:rgba(251,250,244,.95);display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'Nunito';transform:scale(2.4) rotate(-14deg);opacity:0;animation:press .9s ease forwards}
  #stamp .s .tick{font-size:40px;color:var(--sage)}
  #stamp .s span{font:700 13px 'Nunito';letter-spacing:.18em;margin-top:4px}
  @keyframes press{0%{transform:scale(2.4) rotate(-14deg);opacity:0}40%{transform:scale(.92) rotate(-14deg);opacity:1}55%{transform:scale(1) rotate(-14deg)}80%{opacity:1}100%{transform:scale(1) rotate(-14deg);opacity:0}}

  .empty{text-align:center;padding:54px 30px;color:var(--haze)}
  .empty .ic{font-size:34px;margin-bottom:14px}
  .empty h3{font-family:'Fredoka';font-size:19px;color:var(--ink);margin-bottom:8px}
  .empty p{font-size:14px;line-height:1.55}
  .strap{font-family:'Nunito';font-size:11px;color:var(--haze);margin:2px 0 16px}
  .logentry{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:15px;margin-bottom:14px}
  .logentry .date{font-family:'Nunito';font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--sage)}
  .logentry h4{font-family:'Fredoka';font-weight:600;font-size:17px;margin:5px 0 7px;line-height:1.12}
  .logentry .marks{color:var(--sage);font-size:14px;letter-spacing:2px;margin-bottom:8px}
  .logentry .note{font-size:14px;line-height:1.5;color:var(--ink);margin-bottom:10px}
  .logentry .shots{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin-bottom:12px}
  .logentry .shots::-webkit-scrollbar{display:none}
  .logentry .shots .s{width:88px;height:88px;flex:none;border-radius:12px;background-size:cover;background-position:center}
  .logentry .row{display:flex;gap:9px}
  .logentry .row button{flex:1;border:none;border-radius:100px;padding:10px;font:600 12px 'Nunito';cursor:pointer}
  .mini-share{background:var(--terra);color:#F4F2EA}
  .mini-del{background:var(--cream);color:var(--clay);border:1px solid var(--line)!important}

  .ai-intro{font-size:14px;line-height:1.55;color:var(--ink);margin-top:6px}
  .ai-prefs{font-family:'Nunito';font-size:11px;color:var(--haze);margin-top:12px;line-height:1.5}
  .ai-results{margin-top:18px}
  .ai-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:15px;margin-bottom:12px;font-size:14px;line-height:1.6;white-space:pre-wrap}
  .ai-card.user{background:var(--terra-deep);color:#EBE8DE;border:none;font-family:'Nunito';font-size:13px}
  .ai-load{display:flex;align-items:center;gap:10px;color:var(--haze);font-family:'Nunito';font-size:12px;padding:10px 0}
  .spin{width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--terra);border-radius:50%;animation:sp 1s linear infinite}
  @keyframes sp{to{transform:rotate(360deg)}}

  .nav{flex:none;display:flex;background:var(--paper);border-top:1px solid var(--line);padding:10px 4px calc(10px + env(safe-area-inset-bottom));position:relative;z-index:30}
  .nav button{flex:1;background:none;border:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--haze);font:600 10px 'Nunito';padding:4px}
  .nav button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7}
  .nav button.on{color:var(--terra)}
  .savecount{position:absolute;top:2px;background:var(--sage);color:var(--ink);font:700 9px/16px 'Nunito';min-width:16px;height:16px;border-radius:8px;text-align:center;padding:0 3px;display:none;transform:translateX(14px)}
  .savecount.show{display:block}
  /* nav rendered as links (multi-page) — mirror the prototype's .nav button */
  .nav .navbtn{flex:1;background:none;border:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--haze);font:600 10px 'Nunito';padding:4px;text-decoration:none}
  .nav .navbtn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7}
  .nav .navbtn.on{color:var(--terra)}

  /* port category tabs */
  .ptabs{display:flex;gap:7px;margin-top:18px;flex-wrap:wrap}
  .ptab{border:1px solid var(--line);background:var(--paper);border-radius:100px;padding:8px 14px;font:600 12px/1 'Nunito';color:var(--ink);cursor:pointer;display:flex;align-items:center;gap:6px}
  .ptab.on{background:var(--terra);color:#F4F2EA;border-color:var(--terra)}
  .ptab .n{font:700 10px 'Nunito';opacity:.8}
  /* branded gradient placeholders (no stock photos) */
  .ph-fill{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
  .ph-fill .mono{font-family:'Fredoka';font-weight:600;color:rgba(244,242,234,.5);font-size:30px}
  .ph0{background:linear-gradient(135deg,var(--terra-deep),var(--terra))}
  .ph1{background:linear-gradient(135deg,var(--terra),var(--haze))}
  .ph2{background:linear-gradient(135deg,var(--ink),var(--terra-deep))}
  .ph3{background:linear-gradient(135deg,var(--sage),var(--clay))}
  .ph4{background:linear-gradient(135deg,var(--haze),var(--terra-deep))}
  .ph5{background:linear-gradient(135deg,var(--clay),var(--terra-deep))}
  /* redesigned card: price + timing forward, tags off the card */
  .pricechip{position:absolute;top:12px;right:12px;z-index:3;background:rgba(251,250,244,.94);color:var(--terra-deep);
    font:700 12px 'Nunito';padding:5px 10px;border-radius:100px}
  .cardline{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font:600 11px 'Nunito';color:var(--haze);margin-bottom:8px}
  .cardline .sc{color:var(--ink)}
  .cardline .sig{background:rgba(220,122,92,.10);color:var(--terra);border-radius:100px;padding:3px 9px;font-size:10px;letter-spacing:.04em;text-transform:uppercase}
  .cardline .sig.warnsig{background:rgba(176,87,62,.12);color:var(--clay)}

  /* === #13 voyage page === */
  .vhero{padding:50px 24px 26px;background:linear-gradient(180deg,var(--mist) 0%,#E9EFEA 52%,var(--cream) 100%);position:relative;overflow:hidden}
  .vhero-sun{position:absolute;width:62px;height:62px;border-radius:50%;background:var(--gold);opacity:.5;top:30px;right:14px}
  .vhero-top{display:flex;justify-content:space-between;align-items:center;position:relative;z-index:2}
  .vbrand{font-family:'Fredoka';font-weight:600;font-size:22px;letter-spacing:.01em}
  .vcrew{font-family:'Fredoka';font-weight:500;font-size:12px;color:var(--ink);background:rgba(255,255,255,.7);border:1px solid var(--line);border-radius:100px;padding:7px 13px;text-decoration:none}
  .vmascot-row{display:flex;align-items:flex-end;gap:11px;margin-top:14px;position:relative;z-index:2}
  .vmascot{width:78px;flex:none;filter:drop-shadow(0 8px 12px rgba(35,48,61,.16));animation:bob 4s ease-in-out infinite}
  @keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
  .vbubble{background:#fff;border-radius:16px 16px 16px 4px;padding:11px 14px;font-size:13px;font-weight:600;color:var(--ink);box-shadow:0 8px 20px -10px rgba(35,48,61,.3);margin-bottom:10px;line-height:1.4}
  .vtitle{font-family:'Fredoka';font-weight:600;font-size:42px;line-height:1;letter-spacing:-.01em;margin-top:20px;position:relative;z-index:2}
  .vtitle em{font-style:normal;color:var(--terra)}
  .vwink{font-size:13px;font-weight:600;color:var(--haze);margin-top:11px;position:relative;z-index:2}
  .voylist{padding:20px 22px 124px}
  .vsea{font-family:'Fredoka';font-weight:500;font-size:14px;color:var(--haze);text-align:center;padding:18px 0}
  .vsea .wv{display:block;color:var(--sage-deep);font-size:13px;letter-spacing:.4em;margin-bottom:3px}
  .vcard{background:#fff;border-radius:22px;overflow:hidden;margin:14px 0;box-shadow:0 18px 38px -22px var(--shadow);cursor:pointer;transition:transform .15s}
  .vcard:active{transform:scale(.985)}
  .vph{height:160px;position:relative;background:var(--mist)}
  .vbadge{position:absolute;top:13px;left:13px;font-family:'Fredoka';font-weight:500;font-size:11px;letter-spacing:.02em;color:var(--ink);background:rgba(255,255,255,.92);padding:6px 12px;border-radius:100px;backdrop-filter:blur(4px);z-index:2}
  .vbot{padding:15px 17px 17px;display:flex;align-items:center;justify-content:space-between}
  .vbot h3{font-family:'Fredoka';font-weight:600;font-size:25px;line-height:1}
  .vhrs{font-size:13px;font-weight:700;color:var(--sage-deep);margin-top:6px}
  .vgo{font-family:'Fredoka';font-weight:500;font-size:13px;color:var(--terra);flex:none}

  /* lens menu — "what do you fancy?" image tiles */
  .lensgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
  .lenstile{position:relative;height:134px;border-radius:18px;overflow:hidden;border:none;cursor:pointer;background:var(--ink);text-align:left;padding:0;box-shadow:0 12px 26px -16px var(--shadow)}
  .lt-photo{position:absolute;inset:0}
  .lt-grad{position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,48,61,.1) 28%,rgba(35,48,61,.86) 100%)}
  .lt-meta{position:absolute;left:0;right:0;bottom:0;padding:13px;color:#F4F2EA;z-index:2}
  .lt-glyph{font-size:19px}
  .lt-meta h4{font-family:'Fredoka';font-weight:600;font-size:17px;line-height:1.05;margin-top:2px}
  .lt-n{font:600 10px 'Nunito';color:var(--sage-soft)}
  .lenshead{margin:16px 0 2px}
  .lens-title{font-family:'Fredoka';font-weight:600;font-size:23px;letter-spacing:-.01em}

  /* Tinder-style swipe deck */
  .deck{position:relative;height:min(60vh,460px);margin-top:16px}
  .deck-card.top{touch-action:none}   /* we own the gesture — browser never scroll-steals it */
  .deck-card{position:absolute;inset:0;border-radius:24px;overflow:hidden;background:var(--ink);
    box-shadow:0 22px 46px -18px rgba(35,48,61,.6);transition:transform .25s ease;cursor:grab;user-select:none}
  .deck-card.top{cursor:grab}
  .dc-photo{position:absolute;inset:0}
  .dc-grad{position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,48,61,0) 36%,rgba(35,48,61,.9) 100%)}
  .dc-meta{position:absolute;left:0;right:0;bottom:0;padding:22px;color:#F4F2EA;z-index:2}
  .dc-badges{display:flex;gap:8px;margin-bottom:11px;flex-wrap:wrap;align-items:center}
  .dtag{font:700 10px 'Nunito';padding:5px 9px;border-radius:100px;background:rgba(244,242,234,.92);color:var(--ink)}
  .dtag.bad{background:rgba(176,87,62,.95);color:#fff}
  .dtag.warn{background:rgba(194,147,62,.95);color:var(--ink)}
  .dtag.good{background:var(--sage-deep);color:#fff}
  .dtag.cool{background:var(--clay);color:#fff}
  .dc-meta h3{font-family:'Fredoka';font-weight:600;font-size:27px;line-height:1.05;letter-spacing:-.01em}
  .dc-meta p{font-size:14px;line-height:1.45;color:#E7E4DA;margin-top:9px}
  .dc-famous{font-size:13px!important;line-height:1.4;color:var(--sage-soft)!important;margin-top:9px!important;font-weight:500}
  .dc-tap{font:600 10px 'Nunito';letter-spacing:.12em;text-transform:uppercase;color:var(--sage-soft);margin-top:13px}
  .famous-lbl{font:700 9px 'Nunito';letter-spacing:.06em;text-transform:uppercase;color:var(--sage)}
  .deck-stamp{position:absolute;top:28px;font:800 24px 'Nunito';letter-spacing:.08em;padding:7px 14px;border-radius:12px;border:3px solid;opacity:0;z-index:3;pointer-events:none}
  .deck-stamp.like{right:22px;color:var(--terra);border-color:var(--terra);transform:rotate(13deg)}
  .deck-stamp.nope{left:22px;color:var(--clay);border-color:var(--clay);transform:rotate(-13deg)}
  .deck-actions{display:flex;justify-content:center;gap:20px;margin-top:20px}
  .da{width:56px;height:56px;border-radius:50%;border:1px solid var(--line);background:var(--paper);font-size:22px;cursor:pointer;box-shadow:0 8px 18px -10px var(--shadow);display:flex;align-items:center;justify-content:center}
  .da.like{color:var(--terra)}.da.nope{color:var(--clay)}.da.open{font-size:17px;color:var(--haze);width:48px;height:48px;align-self:center}
  .deck-hint{text-align:center;font:600 11px 'Nunito';color:var(--haze);margin-top:12px}
  .deck-empty{text-align:center;padding:54px 30px;color:var(--haze)}
  .deck-empty .ic{font-size:34px}
  .deck-empty h3{font-family:'Fredoka';font-size:20px;color:var(--ink);margin:10px 0 8px}

  /* vibe filter bar */
  .filterbar{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;padding:10px 0 2px;margin-top:2px}
  .filterbar::-webkit-scrollbar{display:none}
  .fchip{flex:none;border:1px solid var(--line);background:var(--paper);border-radius:100px;padding:7px 13px;
    font:600 12px/1 'Nunito';color:var(--ink);cursor:pointer;white-space:nowrap}
  .fchip.on{background:var(--sage);color:var(--ink);border-color:var(--sage)}
  .fchip .fn{font:700 9px 'Nunito';opacity:.65;margin-left:2px}
  .cardline .sig.coolsig{background:rgba(176,87,62,.14);color:var(--clay)}

  /* add-to-day button */
  .daybtn{margin-top:10px;width:100%;border:1.5px solid var(--terra);background:var(--paper);color:var(--terra);
    border-radius:100px;padding:11px;font:600 13px 'Nunito';cursor:pointer;transition:.14s}
  .daybtn.on{background:var(--terra);color:#F4F2EA}
  .daybtn.logd{border-color:var(--sage);color:var(--sage-soft);background:var(--terra-deep);margin-top:8px}

  /* itinerary route map + numbered pins */
  .itin-map{height:210px;border-radius:14px;margin:6px 0 14px;border:1px solid var(--line);z-index:1}
  .itin-pin span{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;
    background:var(--terra);color:#fff;font:700 12px 'Nunito';border:2px solid #fff;box-shadow:0 1px 5px rgba(0,0,0,.35)}
  .itin-pin.dock span{background:var(--sage);color:var(--ink)}
  .itin-num{position:absolute;top:-9px;left:-9px;width:23px;height:23px;border-radius:50%;background:var(--terra);
    color:#fff;font:700 11px 'Nunito';display:flex;align-items:center;justify-content:center;border:2px solid var(--paper)}
  .itin-acts{display:flex;gap:6px;margin-top:9px}
  .itin-acts .ia{flex:1;border:1px solid var(--line);background:var(--cream);border-radius:100px;padding:12px 7px;min-height:44px;
    font:600 11px 'Nunito';cursor:pointer;color:var(--ink)}
  .itin-acts .ia.rm{color:var(--clay)}

  /* logbook hero photo */
  .logentry .loghero{height:170px;border-radius:14px;overflow:hidden;position:relative;margin-bottom:11px}

  /* itinerary builder — the clever part */
  .itin-head{font-family:'Nunito';font-size:11px;color:var(--haze);margin:2px 0 14px;line-height:1.5}
  .itin-leg{display:flex;gap:12px;align-items:flex-start;margin-bottom:2px}
  .itin-time{flex:none;width:48px;font:700 12px 'Nunito';color:var(--terra);padding-top:14px}
  .itin-body{flex:1;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:11px 13px;margin-bottom:10px;position:relative}
  .itin-body.warn{border-color:var(--clay);background:rgba(176,87,62,.05)}
  .itin-body h4{font-family:'Fredoka';font-weight:600;font-size:16px;line-height:1.1}
  .itin-body .sub{font:400 11px 'Nunito';color:var(--haze);margin-top:4px;display:flex;gap:10px;flex-wrap:wrap}
  .itin-body .warnmsg{font:700 10px 'Nunito';color:var(--clay);margin-top:6px;text-transform:uppercase;letter-spacing:.04em}
  .itin-travel{font:400 10px 'Nunito';color:var(--haze);padding:2px 0 2px 60px;position:relative}
  .itin-travel::before{content:"↓";position:absolute;left:21px;color:var(--line)}
  .itin-foot{margin-top:14px;padding:14px;border-radius:14px;background:var(--terra-deep);color:#F4F2EA}
  .itin-foot.bad{background:var(--clay)}
  .itin-foot b{font-family:'Nunito';font-size:11px;letter-spacing:.06em}
  .itin-dropped{margin-top:18px}
  .itin-dropped .h{font:700 10px 'Nunito';letter-spacing:.1em;text-transform:uppercase;color:var(--clay);margin-bottom:8px}
  .itin-dropped .d{font-size:13px;color:var(--haze);padding:6px 0;border-bottom:1px solid var(--line)}
  .itin-dropped .d b{color:var(--ink);font-family:'Fredoka';font-weight:600}
  .d-social{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
  .d-social a{font:600 11px 'Nunito';color:var(--terra);background:var(--cream);border-radius:100px;padding:7px 12px;text-decoration:none}

  /* timing badge — "can we do this, and when?" at a glance */
  .tbadge{position:absolute;top:12px;left:12px;z-index:3;font:700 10px 'Nunito';letter-spacing:.02em;
    padding:5px 9px;border-radius:100px;display:inline-flex;align-items:center;gap:5px;max-width:78%}
  .tbadge.good{background:var(--sage-deep);color:#fff}
  .tbadge.warn{background:rgba(194,147,62,.95);color:var(--ink)}
  .tbadge.bad{background:rgba(176,87,62,.95);color:#F4F2EA}
  .tbadge .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}

  /* wishlist ticks — Elaine / Alan / Rebecca */
  .wish{display:flex;gap:7px;margin-top:12px;align-items:center}
  .wish .lbl{font:600 10px 'Nunito';letter-spacing:.1em;text-transform:uppercase;color:var(--haze);margin-right:2px}
  .wbtn{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:var(--paper);
    font:700 14px 'Nunito';color:var(--haze);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.12s}
  .wbtn.on{color:#F4F2EA;border-color:transparent}

  /* list / map toggle + picks bar */
  .vtoggle{display:flex;gap:0;margin:16px 0 4px;border:1px solid var(--line);border-radius:100px;overflow:hidden;width:fit-content}
  .vtoggle button{background:var(--paper);border:none;padding:8px 16px;font:600 12px 'Nunito';color:var(--haze);cursor:pointer}
  .vtoggle button.on{background:var(--terra);color:#F4F2EA}
  .picksbar{margin-top:14px;width:100%;border:none;cursor:pointer;text-align:left;background:linear-gradient(120deg,var(--terra-deep),var(--terra));
    color:#F4F2EA;border-radius:16px;padding:13px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}
  .picksbar h4{font-family:'Fredoka';font-weight:600;font-size:15px}
  .picksbar p{font-family:'Nunito';font-size:11px;color:var(--sage-soft);margin-top:3px}
  .picksbar .chev{font-size:18px;color:var(--sage-soft)}
  .picks-dots{display:inline-flex;gap:3px;vertical-align:middle;margin-left:6px}
  .picks-dots i{width:9px;height:9px;border-radius:50%;display:inline-block}

  /* maps */
  #portmap{height:60vh;border-radius:18px;margin-top:8px;border:1px solid var(--line);z-index:1}
  .d-map{height:160px;border-radius:14px;margin-top:14px;border:1px solid var(--line);z-index:1}
  .leaflet-container{font-family:'Nunito',sans-serif;background:var(--cream)}
  .map-pop b{font-family:'Fredoka';font-size:14px}
  .map-pop button{margin-top:7px;border:none;background:var(--terra);color:#F4F2EA;border-radius:100px;padding:6px 12px;font:600 11px 'Nunito';cursor:pointer}

  /* TikTok section */
  .tiktok-sec{margin-top:30px}
  .tiktok-sec .hdr{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}
  .tiktok-sec .hdr h3{font-family:'Fredoka';font-weight:600;font-size:19px}
  .tiktok-row{display:flex;gap:14px;overflow-x:auto;scrollbar-width:none;padding:6px 0 4px}
  .tiktok-row::-webkit-scrollbar{display:none}
  .tt-shot{font-size:12px;line-height:1.45;color:var(--ink);margin-bottom:9px;background:var(--cream);border-radius:11px;padding:10px 12px}
  .tt-shot b{display:block;font-family:'Fredoka';font-weight:600;font-size:14px;margin-bottom:3px}
  .tt-fallback{width:240px;border:1px solid var(--line);border-radius:16px;background:var(--paper);padding:14px;text-decoration:none;color:var(--ink);display:block}
  .tt-fallback .pl{font:700 9px 'Nunito';letter-spacing:.1em;text-transform:uppercase;color:var(--clay)}
  .tt-fallback h5{font-family:'Fredoka';font-weight:600;font-size:15px;margin:8px 0 6px;line-height:1.15}
  .tt-fallback .cr{font-family:'Nunito';font-size:11px;color:var(--haze)}

  /* detail sheet */
  .d-hero{height:150px;border-radius:16px;position:relative;overflow:hidden;margin-top:4px}
  .d-hero .ov{position:absolute;left:0;right:0;bottom:0;padding:14px;z-index:2;color:#F4F2EA}
  .d-hero .ov .cat{font:700 10px 'Nunito';letter-spacing:.12em;text-transform:uppercase;color:var(--sage-soft)}
  .d-hero .ov h2{font-family:'Fredoka';font-weight:600;font-size:22px;line-height:1.1}
  .d-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;font-family:'Nunito';font-size:12px;color:var(--terra)}
  .d-row span{background:var(--cream);border-radius:100px;padding:5px 10px}
  .d-block{margin-top:16px}
  .d-block .h{font:700 10px 'Nunito';letter-spacing:.1em;text-transform:uppercase;color:var(--haze);margin-bottom:7px}
  .d-block p{font-size:14px;line-height:1.55;color:var(--ink)}
  .recency{display:flex;gap:18px;align-items:flex-end;margin-top:6px}
  .recency .big{font-family:'Fredoka';font-weight:600;font-size:30px;line-height:1}
  .recency .lt{font-family:'Nunito';font-size:11px;color:var(--haze)}
  .recency .tr{font:700 10px 'Nunito';padding:4px 9px;border-radius:100px}
  .tr.rising{background:rgba(220,122,92,.12);color:var(--terra)}
  .tr.steady{background:var(--cream);color:var(--haze)}
  .tr.slipping{background:rgba(176,87,62,.12);color:var(--clay)}
  .asp{display:flex;flex-wrap:wrap;gap:6px}
  .asp span{font:600 10px 'Nunito';border-radius:100px;padding:4px 9px}
  .asp .pos{background:rgba(220,122,92,.12);color:var(--terra)}
  .asp .neg{background:rgba(176,87,62,.12);color:var(--clay)}
  .asp .neutral{background:var(--cream);color:var(--haze)}
  .d-actions{display:flex;gap:10px;margin-top:18px}
  .d-actions a,.d-actions button{flex:1;text-align:center;border-radius:100px;padding:12px;font:600 13px 'Nunito';cursor:pointer;text-decoration:none;border:none}
  .planrow{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
  .planrow .pm{flex:1;min-width:0}
  .planrow h4{font-family:'Fredoka';font-weight:600;font-size:16px;line-height:1.1}
  .planrow .x{background:none;border:none;color:var(--clay);font:600 12px 'Nunito';cursor:pointer}
  .settings-tbl{width:100%;border-collapse:collapse;margin-top:10px;font-size:13px}
  .settings-tbl td,.settings-tbl th{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line)}
  .settings-tbl th{font:700 10px 'Nunito';letter-spacing:.08em;text-transform:uppercase;color:var(--haze)}
  .trav-dot{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:8px;vertical-align:middle}
  .sectionlbl{font-family:'Nunito';font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--haze);margin:26px 0 6px}

  /* whatson — live OpenTripMap layer (additive, design-system tokens only) */
  .whatson-grid{display:flex;flex-direction:column;gap:10px;margin-top:12px}
  .whatson-card{display:flex;gap:12px;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:11px 13px}
  .whatson-card .wt{width:54px;height:54px;border-radius:11px;flex:none;position:relative;overflow:hidden;background:var(--cream)}
  .whatson-card .wb{flex:1;min-width:0}
  .whatson-card h5{font-family:'Fredoka';font-weight:600;font-size:15px;line-height:1.12}
  .whatson-card .wk{font:400 11px 'Nunito';color:var(--haze);margin-top:4px;text-transform:capitalize}
  .whatson-card a.wlink{font:600 10px 'Nunito';color:var(--terra);text-decoration:none}
  .whatson-attr{font-family:'Nunito';font-size:10px;color:var(--haze);margin-top:12px;line-height:1.5}
  .whatson-note{font-family:'Nunito';font-size:11px;color:var(--haze);margin-top:10px;line-height:1.5}

  /* === #13 polish across all pages === */
  .findcard{border:none;border-radius:22px;box-shadow:0 18px 38px -22px var(--shadow)}
  .logentry{border:none;border-radius:22px;box-shadow:0 18px 38px -22px var(--shadow)}
  .vintro{border:none;border-radius:20px;box-shadow:0 14px 30px -22px var(--shadow)}
  .btn,.daybtn,.plan,.vgo,.go,.ia,.r-next,.cast-open,.cast-plan,.mini-share,.spin{font-family:'Fredoka';font-weight:500}
  .ptab,.chip,.fchip{font-family:'Fredoka';font-weight:500;border-radius:100px}
  .ptab.on,.fchip.on,.chip.on{box-shadow:0 6px 16px -10px var(--shadow)}
  .nav .navbtn{font-family:'Fredoka';font-weight:500}
  .empty h3,.sheet h3,.lens-title,.logentry h4,.itin-body h4,.planrow h4{font-family:'Fredoka'}
  .picksbar{border-radius:20px;box-shadow:0 16px 30px -18px rgba(184,95,68,.55)}
  .lenstile{box-shadow:0 16px 32px -20px var(--shadow)}

  /* === #13 port header + first-mate + screen polish === */
  .phero{background:linear-gradient(160deg,var(--mist),#ECF1ED);border-radius:22px;padding:16px 18px;margin-top:6px;box-shadow:0 14px 32px -24px var(--shadow)}
  .phero .phead{margin-top:0}
  .phero .region{color:var(--haze)}
  .phero .ph-meta{color:var(--terra);font-weight:700}
  .pmate{display:flex;align-items:flex-end;gap:9px;margin-top:13px}
  .pmate .mate{flex:none;filter:drop-shadow(0 6px 8px rgba(35,48,61,.14))}
  .pmate-bubble{background:#fff;border-radius:14px 14px 14px 4px;padding:9px 12px;font-size:13px;font-weight:600;color:var(--ink);box-shadow:0 8px 18px -10px rgba(35,48,61,.22);line-height:1.35}
  .d-hero{border-radius:18px}
  .d-actions a,.d-actions button{font-family:'Fredoka';font-weight:500}
  .logentry .marks{color:var(--gold)}
  .itin-foot{border-radius:16px}
  .itin-body{border-radius:16px}

  /* === Skipper — chief-of-staff button + panel === */
  .skipfab{position:absolute;right:16px;bottom:calc(78px + env(safe-area-inset-bottom));z-index:46;
    width:60px;height:60px;border:none;border-radius:50%;cursor:pointer;padding:0;
    background:linear-gradient(150deg,var(--terra),var(--terra-deep));
    box-shadow:0 12px 26px -8px rgba(184,95,68,.6);animation:bob 4s ease-in-out infinite;display:flex;align-items:center;justify-content:center}
  .skipfab svg{width:40px;filter:drop-shadow(0 3px 4px rgba(35,48,61,.2))}
  .skipfab .sk-tag{position:absolute;bottom:-7px;background:var(--ink);color:#FBF8F1;font:700 8px 'Nunito';letter-spacing:.12em;text-transform:uppercase;padding:3px 7px;border-radius:100px}

  .skip{position:absolute;inset:0;z-index:55;display:none}
  .skip.open{display:block}
  .skip-bd{position:absolute;inset:0;background:rgba(35,48,61,.42);backdrop-filter:blur(2px)}
  .skip-card{position:absolute;left:0;right:0;bottom:0;background:var(--cream);border-radius:28px 28px 0 0;
    padding:8px 20px calc(24px + env(safe-area-inset-bottom));max-height:90%;overflow-y:auto;animation:sheetup .3s ease}
  .skip-card::-webkit-scrollbar{display:none}
  .skip-handle{width:40px;height:4px;border-radius:100px;background:var(--line);margin:6px auto 8px}
  .skip-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
  .skip-top .who{font-family:'Fredoka';font-weight:600;font-size:16px;color:var(--ink);display:flex;align-items:center;gap:6px}
  .skip-top .who small{font-family:'Nunito';font-weight:600;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--haze)}
  .skip-x{background:none;border:none;font-size:20px;color:var(--haze);cursor:pointer;line-height:1;padding:4px}

  .sk-mate{display:flex;align-items:flex-end;gap:10px;margin:10px 0 4px}
  .sk-ghost{width:46px;flex:none;filter:drop-shadow(0 6px 8px rgba(35,48,61,.14))}
  .sk-bubble{background:var(--paper);border-radius:16px 16px 16px 4px;padding:11px 14px;font-size:13px;font-weight:600;
    color:var(--ink);line-height:1.4;box-shadow:0 8px 18px -10px rgba(35,48,61,.22)}
  .sk-bubble b{color:var(--terra-deep)}

  .sk-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
  .sk-chip{background:var(--paper);border:1px solid var(--line);border-radius:100px;padding:13px 16px;min-height:44px;
    font-family:'Fredoka';font-weight:500;font-size:13px;color:var(--ink);cursor:pointer;box-shadow:0 5px 12px -10px var(--shadow);transition:transform .1s}
  .sk-chip:active{transform:scale(.96)}
  .sk-chip.back{background:var(--ink);color:#FBF8F1;border-color:var(--ink)}
  .sk-hint{font-family:'Nunito';font-size:11px;color:var(--haze);line-height:1.5;margin-top:16px}

  .sk-loading{text-align:center;padding:34px 0;color:var(--haze)}
  .sk-loading svg{width:54px;margin:0 auto 8px;display:block;animation:bob 3s ease-in-out infinite}
  .sk-loading p{font-family:'Nunito';font-size:12px}

  .sk-lead{font-family:'Nunito';font-size:13px;color:var(--ink);margin:12px 2px 0;line-height:1.45}
  .sk-lead b{color:var(--terra-deep)}
  .sk-note{font-family:'Nunito';font-size:11px;color:var(--haze);background:var(--mist);border-radius:12px;padding:8px 11px;margin-top:10px;line-height:1.45}
  .sk-card{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:16px 17px;margin-top:12px;box-shadow:0 12px 26px -18px var(--shadow)}
  .sk-name{font-family:'Fredoka';font-weight:600;font-size:19px;color:var(--ink);line-height:1.15}
  .sk-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-family:'Nunito';font-size:11px;font-weight:700;color:var(--haze)}
  .sk-meta span{white-space:nowrap}
  .sk-blurb{font-family:'Nunito';font-size:13px;color:var(--ink);line-height:1.5;margin-top:9px}
  .sk-fit{font-family:'Nunito';font-size:12px;font-weight:700;border-radius:12px;padding:9px 12px;margin-top:12px;line-height:1.4}
  .sk-fit.good{background:rgba(110,155,142,.16);color:#3F6256}
  .sk-fit.warn{background:rgba(214,162,78,.18);color:#8A6420}
  .sk-fit.bad{background:rgba(196,96,74,.15);color:var(--terra-deep)}
  .sk-actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
  .sk-actions .btn-river,.sk-actions .btn-line{flex:1;min-width:96px;text-align:center;text-decoration:none;
    border-radius:13px;padding:11px 10px;font-family:'Fredoka';font-weight:500;font-size:13px;cursor:pointer}
  .sk-actions .btn-line{border:1px solid var(--line)}
  .sk-more{font-family:'Nunito';font-size:11px;color:var(--haze);text-align:center;margin-top:11px}

  /* === Skipper online — ask box + live finds === */
  .sk-ask{display:flex;gap:8px;margin-top:16px}
  .sk-ask input{flex:1;border:1px solid var(--line);border-radius:14px;padding:13px 15px;font-family:'Nunito';font-size:14px;color:var(--ink);background:var(--paper)}
  .sk-ask input:focus{outline:none;border-color:var(--terra);box-shadow:0 0 0 3px rgba(220,122,92,.12)}
  .sk-ask button{border:none;background:var(--terra);color:#F4F2EA;border-radius:14px;width:48px;font-size:20px;cursor:pointer;flex:none}
  .sk-or{font-family:'Nunito';font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--haze);text-align:center;margin-top:16px}
  .sk-back{margin-top:16px;text-align:center}
  .sk-card.found{border:1px dashed var(--sage-soft);background:linear-gradient(180deg,rgba(110,155,142,.06),var(--paper))}
  .sk-foundtag{font-family:'Nunito';font-weight:700;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--sage);margin-bottom:7px}

  /* === Settings — Skipper AI key === */
  .ai-box{margin-top:6px}
  .ai-form{display:flex;gap:8px;margin-top:10px}
  .ai-form input{flex:1;border:1px solid var(--line);border-radius:12px;padding:11px 13px;font-family:'Nunito';font-size:13px;color:var(--ink);background:var(--paper)}
  .ai-form input:focus{outline:none;border-color:var(--terra);box-shadow:0 0 0 3px rgba(220,122,92,.12)}
  .ai-form .btn-river{border:none;border-radius:12px;padding:11px 17px;font-family:'Fredoka';font-weight:500;font-size:13px;color:#F4F2EA;background:var(--terra);cursor:pointer;flex:none}
  .ai-status{display:flex;align-items:center;gap:8px;font-family:'Nunito';font-weight:700;font-size:13px;color:var(--ink);margin-top:8px}
  .ai-status .ai-dot{width:9px;height:9px;border-radius:50%;background:var(--sage);box-shadow:0 0 0 3px rgba(110,155,142,.2)}
  .ai-model{font-family:'Nunito';font-size:11px;color:var(--haze);margin-top:5px}
  .ai-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}
  .ai-actions .btn-line{border:1px solid var(--line);background:var(--paper);border-radius:11px;padding:9px 14px;font-family:'Fredoka';font-weight:500;font-size:13px;color:var(--ink);cursor:pointer}
  .ai-actions .btn-line.danger{color:var(--terra-deep);border-color:rgba(184,95,68,.32)}
  .ai-msg{font-family:'Nunito';font-size:11px;margin-top:11px;line-height:1.45}
  .ai-msg.good{color:#3F6256}
  .ai-msg.bad{color:var(--terra-deep)}

  /* === Ship — Liberty of the Seas on-board page === */
  .ship-hero{margin-top:10px;border-radius:24px;padding:20px 20px 18px;color:#F4F2EA;position:relative;overflow:hidden;
    background:linear-gradient(150deg,var(--ink),#2E4456 60%,var(--sage));box-shadow:0 18px 38px -18px var(--shadow)}
  .ship-title{font-family:'Fredoka';font-weight:600;font-size:27px;line-height:1.05;margin-top:4px}
  .ship-refit{font-family:'Nunito';font-weight:700;font-size:11px;color:var(--gold);margin-top:7px;letter-spacing:.02em}
  .ship-mate{display:flex;align-items:flex-end;gap:9px;margin-top:15px}
  .ship-mate .mate{flex:none;filter:drop-shadow(0 6px 8px rgba(0,0,0,.25))}
  .ship-bubble{background:rgba(255,255,255,.16);backdrop-filter:blur(3px);border-radius:14px 14px 14px 4px;padding:9px 12px;font-size:13px;font-weight:600;line-height:1.4}
  .ship-ask{margin-top:15px;width:100%;border:none;border-radius:14px;padding:13px;font-family:'Fredoka';font-weight:500;font-size:14px;
    background:var(--terra);color:#F4F2EA;cursor:pointer;box-shadow:0 10px 22px -10px rgba(184,95,68,.7)}

  .ship-quick{display:flex;flex-direction:column;gap:10px;margin-top:16px}
  .qcard{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:14px 15px;box-shadow:0 10px 22px -18px var(--shadow)}
  .qq{font-family:'Fredoka';font-weight:600;font-size:14px;color:var(--ink)}
  .qa{font-family:'Nunito';font-size:12px;color:var(--ink);line-height:1.5;margin-top:6px}

  .ship-sec{margin-top:24px}
  .ship-seclbl{font-family:'Fredoka';font-weight:600;font-size:16px;color:var(--ink);display:flex;align-items:center;gap:8px;margin-bottom:12px}
  .ship-seclbl span{font-family:'Nunito';font-weight:700;font-size:11px;color:var(--haze);background:var(--mist);border-radius:100px;padding:2px 9px}
  .vcard2{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:14px 15px;margin-bottom:10px;box-shadow:0 8px 18px -16px var(--shadow)}
  .vcard2-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
  .vcard2-name{font-family:'Fredoka';font-weight:600;font-size:16px;color:var(--ink);line-height:1.15}
  .vfree{flex:none;font:700 10px 'Nunito';letter-spacing:.06em;text-transform:uppercase;color:#3F6256;background:rgba(110,155,142,.16);border-radius:100px;padding:4px 9px}
  .vpaid{flex:none;font:700 10px 'Nunito';color:var(--terra-deep);background:rgba(196,96,74,.12);border-radius:100px;padding:4px 9px}
  .vcard2-meta{display:flex;flex-wrap:wrap;gap:5px 13px;margin-top:8px;font-family:'Nunito';font-size:11px;font-weight:600;color:var(--haze)}
  .vcard2-fame{font-family:'Nunito';font-size:12px;color:var(--ink);line-height:1.45;margin-top:8px}
  .vcard2-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}

  .deckmap{display:flex;flex-direction:column;gap:8px}
  .deckrow{display:flex;gap:12px;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:11px 13px}
  .decknum{flex:none;font-family:'Fredoka';font-weight:600;font-size:13px;color:var(--terra);width:56px}
  .deckwhat{font-family:'Nunito';font-size:11px;color:var(--ink);line-height:1.45}

  /* Voyage → on-board entry card */
  .onboard-card{display:flex;align-items:center;gap:13px;margin-top:16px;border-radius:20px;padding:15px 16px;cursor:pointer;text-decoration:none;
    background:linear-gradient(150deg,var(--ink),#2E4456);color:#F4F2EA;box-shadow:0 14px 30px -18px var(--shadow)}
  .onboard-card .ob-emoji{font-size:26px;flex:none}
  .onboard-card .ob-t{font-family:'Fredoka';font-weight:600;font-size:16px}
  .onboard-card .ob-s{font-family:'Nunito';font-size:11px;color:rgba(244,242,234,.8);margin-top:2px;line-height:1.4}
  .onboard-card .ob-go{margin-left:auto;flex:none;font-size:18px;opacity:.8}

  /* Skipper on-board: open-now badge */
  .sk-open{font:700 9px 'Nunito';letter-spacing:.06em;text-transform:uppercase;border-radius:100px;padding:3px 8px;margin-left:auto}
  .sk-open.good{color:#3F6256;background:rgba(110,155,142,.16)}
  .sk-open.bad{color:var(--terra-deep);background:rgba(196,96,74,.13)}
  .sk-open.warn{color:#8A6420;background:rgba(214,162,78,.18)}

  /* === Ship social — TikTok/YouTube strip + per-venue clips === */
  .ship-social{margin-top:22px}
  .social-strip{display:flex;gap:11px;overflow-x:auto;padding:2px 2px 8px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
  .social-strip::-webkit-scrollbar{display:none}
  .sclip{position:relative;flex:none;width:140px;height:200px;border-radius:16px;overflow:hidden;scroll-snap-align:start;
    text-decoration:none;background:var(--ink);box-shadow:0 12px 24px -16px var(--shadow);display:block}
  .sclip-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
  .sclip::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,48,61,0) 38%,rgba(35,48,61,.86))}
  .sclip-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:2;width:42px;height:42px;border-radius:50%;
    background:rgba(255,255,255,.92);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:15px;padding-left:3px}
  .sclip-badge{position:absolute;top:9px;left:9px;z-index:2;font:700 9px 'Nunito';letter-spacing:.06em;text-transform:uppercase;
    color:#fff;padding:3px 8px;border-radius:100px}
  .sclip-badge.tiktok{background:#1a1a1a}
  .sclip-badge.youtube{background:#C4302B}
  .sclip-foot{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:10px 11px;color:#fff;display:flex;flex-direction:column;gap:2px}
  .sclip-title{font-family:'Fredoka';font-weight:500;font-size:12px;line-height:1.2}
  .sclip-by{font-family:'Nunito';font-weight:600;font-size:10px;color:rgba(255,255,255,.78)}

  .vclip{display:flex;align-items:center;gap:10px;margin-top:11px;padding:7px;border-radius:12px;text-decoration:none;
    background:var(--mist);position:relative}
  .vclip img{width:54px;height:40px;object-fit:cover;border-radius:8px;flex:none}
  .vclip-play{position:absolute;left:25px;top:50%;transform:translateY(-50%);width:18px;height:18px;border-radius:50%;
    background:rgba(255,255,255,.92);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:8px;padding-left:1px}
  .vclip-txt{font-family:'Nunito';font-weight:700;font-size:11px;color:var(--ink);line-height:1.3}

  /* Logbook — entry saved on-device, pending sync */
  .logsync{font-family:'Nunito';font-weight:700;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--sage);background:rgba(110,155,142,.14);border-radius:100px;padding:4px 10px;display:inline-block;margin-bottom:8px}

  /* ======================================================================
     Design System v2 — consolidation + accessibility (Design Wave 1)
     ====================================================================== */

  /* Card family — one radius, two elevation tiers, borderless & floaty */
  .vcard2,.qcard,.sk-card,.ai-card,.whatson-card{border:none}
  .findcard,.vcard,.vcard2,.qcard,.sk-card,.ai-card,.whatson-card,.logentry,.vintro{border-radius:var(--r-lg)}
  .vcard2,.qcard,.sk-card,.ai-card,.whatson-card{box-shadow:var(--shadow-1)}
  .findcard,.vcard,.logentry,.vintro{box-shadow:var(--shadow-2)}

  /* Visible keyboard focus everywhere (was entirely absent) */
  :focus-visible{outline:2px solid var(--terra);outline-offset:2px;border-radius:3px}

  /* Close buttons — reachable 44px targets (were ~28px) */
  .skip-x,.r-close,.cast-x{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0}

  /* Flat brand surfaces — the brief forbids graduated reds */
  .skipfab{background:var(--terra)}
  .picksbar{background:var(--terra-deep)}
  .cast-banner{background:var(--terra-deep)}

  /* Respect prefers-reduced-motion: stop the perpetual bob + slide-ups */
  @media (prefers-reduced-motion: reduce){
    *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
    .vmascot,.skipfab,.sk-loading svg,.sk-ghost{animation:none!important}
  }

  /* voyage port card is now an <a> — reset link styling */
  a.vcard{display:block;text-decoration:none;color:inherit}

  /* ======================================================================
     Design Wave 2/3 — feedback, consensus, on-board link
     ====================================================================== */
  .lf-toast{position:absolute;left:50%;bottom:calc(86px + env(safe-area-inset-bottom));z-index:70;
    transform:translateX(-50%) translateY(20px);background:var(--ink);color:#FBF8F1;border-radius:var(--r-pill);
    padding:11px 18px;font:600 13px 'Nunito';display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-3);
    opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:88%}
  .lf-toast.show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}
  .lf-toast-act{background:none;border:none;color:var(--gold);font:700 13px 'Fredoka';cursor:pointer;padding:4px 6px;white-space:nowrap;min-height:32px}
  .picksbar.pulse{animation:pickpulse .5s ease}
  @keyframes pickpulse{0%{transform:scale(1)}40%{transform:scale(1.025)}100%{transform:scale(1)}}

  /* consensus — "all three agree" */
  .cons{display:inline-flex;align-items:center;gap:4px;font:700 10px 'Nunito';letter-spacing:.04em;text-transform:uppercase;
    color:var(--sage-ink);background:rgba(110,155,142,.16);border-radius:var(--r-pill);padding:4px 10px;margin-top:10px}
  .cons.all{color:#fff;background:var(--sage-deep)}
  .cons-slot:empty{display:none}
  .cons-row{margin-top:7px}
  .cons-row .cons{margin-top:0}

  /* Skipper → on-board shortcut */
  .sk-onboard{display:block;text-align:center;margin-top:14px;text-decoration:none;
    font:500 13px 'Fredoka';color:#fff;background:linear-gradient(150deg,var(--ink),#2E4456);border-radius:var(--r-md);padding:13px;min-height:44px}

  /* Settings — editable rows (Design Wave 3) */
  .set-list{display:flex;flex-direction:column;gap:9px;margin-top:10px}
  .set-row{display:flex;align-items:center;gap:10px;background:var(--paper);border-radius:var(--r-md);padding:10px 13px;box-shadow:var(--shadow-1)}
  .set-row.sail{justify-content:space-between}
  .set-input{flex:1;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:600 14px 'Nunito';color:var(--ink);background:var(--cream);min-height:44px}
  .set-port b{font-family:'Fredoka';font-weight:600;font-size:15px;display:block;line-height:1.1}
  .set-port span{font:600 11px 'Nunito';color:var(--haze)}
  .set-times{display:flex;align-items:center;gap:7px}
  .set-time{width:62px;text-align:center;border:1px solid var(--line);border-radius:10px;padding:10px 6px;font:700 14px 'Nunito';color:var(--terra-deep);background:var(--cream);min-height:44px}
  .set-times span{color:var(--haze);font-weight:700}
  .set-save{margin-top:4px}
  .set-msg{font:600 12px 'Nunito';color:var(--sage-ink);min-height:16px;margin-top:2px;text-align:center}

  /* ======================================================================
     Ship — photo hero, visual deck stack, tappable venue detail
     ====================================================================== */
  .ship-hero{position:relative;min-height:296px;padding:0;overflow:hidden;border-radius:24px;background:var(--ink)}
  .ship-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
  .ship-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,48,61,.15) 0%,rgba(35,48,61,.35) 45%,rgba(35,48,61,.9) 100%)}
  .ship-hero-body{position:relative;z-index:2;padding:18px 20px 18px;display:flex;flex-direction:column;justify-content:flex-end;min-height:296px}
  .ship-attrib{font:600 9px 'Nunito';color:var(--haze);text-align:right;margin:5px 2px 0;letter-spacing:.01em}

  /* visual deck stack — a cross-section of the ship */
  .deckstack{display:flex;flex-direction:column;border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-1)}
  .deckband{display:flex;gap:11px;align-items:flex-start;background:var(--paper);padding:11px 12px;border-bottom:1px solid var(--line)}
  .deckband:last-child{border-bottom:none}
  .deckband:nth-child(even){background:var(--cream)}
  .deckband-no{flex:none;width:40px;font-family:'Fredoka';font-weight:600;font-size:21px;color:var(--terra-deep);line-height:.9;display:flex;flex-direction:column;align-items:center;padding-top:2px}
  .deckband-no small{font:700 7.5px 'Nunito';letter-spacing:.12em;text-transform:uppercase;color:var(--haze);margin-top:3px}
  .deckband-v{flex:1;display:flex;flex-wrap:wrap;gap:6px}
  .deckchip{background:var(--silt);border:1px solid var(--line);border-radius:var(--r-pill);padding:7px 11px;font:600 11px 'Nunito';color:var(--ink);cursor:pointer;min-height:34px}
  .deckchip:active{transform:scale(.96)}

  /* venue card is now a tappable button */
  button.vcard2{width:100%;text-align:left;font:inherit;cursor:pointer;display:block;border:none}
  button.vcard2:active{transform:scale(.99)}
  .vcard2-more{font-family:'Fredoka';font-weight:500;font-size:11px;color:var(--terra);margin-top:11px}
  .vc-open{font:700 9px 'Nunito';letter-spacing:.04em;text-transform:uppercase;border-radius:var(--r-pill);padding:3px 8px;white-space:nowrap}
  .vc-open.good{color:var(--sage-ink);background:rgba(110,155,142,.16)}
  .vc-open.warn{color:var(--gold-ink);background:rgba(214,162,78,.18)}
  .vc-open.bad{color:var(--terra-deep);background:rgba(196,96,74,.13)}

  /* venue detail sheet */
  .sv-hero{height:128px;border-radius:var(--r-md);position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;padding:14px;margin-top:2px}
  .sv-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,48,61,0) 40%,rgba(35,48,61,.7) 100%)}
  .sv-cat{position:relative;z-index:2;font:700 9px 'Nunito';letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.88)}
  .sv-hero h2{position:relative;z-index:2;font-family:'Fredoka';font-weight:600;font-size:22px;color:#fff;line-height:1.1;margin-top:3px}
  .sv-best{font:700 12px 'Nunito';color:var(--sage-ink);background:rgba(110,155,142,.14);border-radius:12px;padding:9px 12px;margin-top:12px}
  .sv-tip,.sv-teen{border-radius:12px;padding:11px 13px;margin-top:11px;font:400 12.5px 'Nunito';color:var(--ink);line-height:1.5}
  .sv-tip{background:var(--mist)}
  .sv-teen{background:rgba(220,122,92,.08)}
  .sv-tip b,.sv-teen b{display:block;font:700 10px 'Nunito';letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px}
  .sv-tip b{color:var(--gold-ink)}
  .sv-teen b{color:var(--terra-deep)}
  .sv-clip{display:flex;align-items:center;gap:10px;text-decoration:none;background:var(--silt);border-radius:12px;padding:8px}
  .sv-clip img{width:62px;height:46px;object-fit:cover;border-radius:8px;flex:none}
  .sv-clip span{font:700 11.5px 'Nunito';color:var(--ink);line-height:1.3}

  /* TikTok / clips — clean tappable thumbnail tiles (portrait, fits the screen) */
  .tiktok-row .tt{flex:none;width:min(46vw,180px);display:flex;flex-direction:column;gap:9px}
  .ttile{position:relative;display:block;width:100%;aspect-ratio:9/16;border-radius:var(--r-md);overflow:hidden;
    background:var(--ink);text-decoration:none;box-shadow:var(--shadow-1)}
  .ttile-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
  .ttile::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,48,61,0) 40%,rgba(35,48,61,.85))}
  .ttile-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:2;width:40px;height:40px;border-radius:50%;
    background:rgba(255,255,255,.92);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:14px;padding-left:2px}
  .ttile-badge{position:absolute;top:8px;left:8px;z-index:2;font:700 8px 'Nunito';letter-spacing:.06em;text-transform:uppercase;color:#fff;background:#1a1a1a;padding:3px 7px;border-radius:var(--r-pill)}
  .ttile-foot{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:9px 10px;color:#fff;display:flex;flex-direction:column;gap:1px}
  .ttile-t{font-family:'Fredoka';font-weight:500;font-size:11.5px;line-height:1.2}
  .ttile-by{font:600 9.5px 'Nunito';color:rgba(255,255,255,.78)}
  .tt-shot{font-size:11px;line-height:1.4;color:var(--ink);background:var(--silt);border-radius:10px;padding:8px 10px}
