/* Vacation Creators — warm, clean, mobile-first */
:root{--bg:#fbf6ee;--card:#fff;--ink:#2b2a28;--muted:#77706a;--teal:#2f6f73;--teal2:#e3f0ef;--gold:#d9a441;--gold2:#fbf0d9;--coral:#d8664c;--line:#ece4d8;--r:16px;--fs:17px;--tap:52px}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font:var(--fs)/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
body{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
main{padding:12px 14px 24px;max-width:640px;margin:0 auto}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
h1.ph{font-size:1.5rem;margin:.3rem 0 .6rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
h1.ph small{font-size:.85rem;color:var(--muted);font-weight:500}
h2,h3{margin:.8rem 0 .4rem}h2.sh{display:flex;align-items:center;gap:.5rem}
.ic{width:36px;height:36px;border-radius:10px;object-fit:cover;flex:none}.ic.sm{width:26px;height:26px;border-radius:8px}
.top{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:calc(8px + env(safe-area-inset-top)) 12px 8px;background:rgba(251,246,238,.96);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.trip-btn{display:flex;align-items:center;gap:8px;background:none;border:0;text-align:left;min-width:0;padding:0}
.trip-btn span{display:flex;flex-direction:column;min-width:0}.trip-btn b{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:56vw}.trip-btn small{color:var(--muted);font-size:.75rem}
.top-logo{width:38px;height:38px;border-radius:10px;object-fit:cover}
.who-btn{background:var(--teal);color:#fff;border:0;border-radius:999px;padding:8px 14px;font-weight:600;font-size:.9rem;min-height:40px;white-space:nowrap}
.tabs{position:fixed;bottom:0;left:0;right:0;z-index:30;display:grid;grid-template-columns:repeat(7,1fr);background:#fff;border-top:1px solid var(--line);padding:4px 2px calc(4px + env(safe-area-inset-bottom))}
.tab{background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.66rem;color:var(--muted);padding:4px 0;min-height:var(--tap)}
.tab.on{color:var(--teal);font-weight:700}.tab.on .nav-ic{outline:2px solid var(--teal)}
.nav-ic{width:28px;height:28px;border-radius:8px;object-fit:cover}.nav-em{font-size:22px;line-height:28px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin:10px 0;box-shadow:0 1px 2px rgba(60,40,10,.04)}
.hero{display:flex;gap:12px;align-items:center;background:linear-gradient(135deg,#fff,var(--gold2))}
.hero h2{margin:.1rem 0 .3rem;font-size:1.3rem}.hero small{color:var(--muted)}
.hero-ic{width:64px;height:64px;border-radius:16px;object-fit:cover;flex:none}
.pill{display:inline-block;background:var(--teal2);color:var(--teal);border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:700}.pill.big{font-size:1rem;padding:6px 14px;margin:6px 0}
.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}.quick.cap{grid-template-columns:repeat(2,1fr)}.quick.kidq{grid-template-columns:1fr 1fr}
.qbtn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:76px;border-radius:14px;border:1px solid var(--line);background:#fff;font-size:.78rem;font-weight:600;text-align:center;padding:6px;position:relative}
.qbtn span{font-size:1.6rem;line-height:1}.qimg{width:30px;height:30px;border-radius:8px;object-fit:cover}
.qbtn.big{min-height:96px;font-size:1rem}
.hidden-file{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tap);padding:10px 18px;border-radius:14px;border:1px solid var(--teal);background:#fff;color:var(--teal);font-weight:700;position:relative;text-align:center}
.btn.primary{background:var(--teal);color:#fff}.btn.ghost{border-color:var(--line);color:var(--ink)}.btn.danger{border-color:var(--coral);color:var(--coral);margin-top:14px}
.btn.small{min-height:40px;padding:6px 12px;font-size:.88rem}.btn.wide{width:100%;margin:6px 0}.btn[disabled]{opacity:.45}
.link{background:none;border:0;color:var(--teal);text-decoration:underline;padding:6px 0;font-size:.9rem}
.wiz .wiz-h{display:flex;justify-content:space-between;font-size:.85rem;color:var(--muted);font-weight:600}
.wiz-from{font-size:.8rem;color:var(--muted);margin-top:10px;text-transform:uppercase;letter-spacing:.03em}
.wiz-btns{display:grid;grid-template-columns:1fr 2fr;gap:10px;margin-top:12px}
.done{font-size:1.2rem;padding:16px 0;text-align:center}
.bar{height:10px;background:#efe8dc;border-radius:99px;overflow:hidden;margin:6px 0 2px}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--gold));border-radius:99px}
.field{margin:12px 0}.field>label,.cell .cl{display:block;font-weight:650;margin-bottom:6px}.field.big>label{font-size:1.2rem}
.hint,.fine,.sub{color:var(--muted);font-size:.85rem;margin:.3rem 0}
.inp{width:100%;min-height:var(--tap);border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff;font-size:1rem}.inp:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px var(--teal2)}
textarea.inp{resize:vertical}.sel{appearance:auto}
.row-inline{display:flex;gap:8px;align-items:center}.row-inline .inp{flex:1}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{min-height:46px;padding:8px 16px;border-radius:999px;border:1.5px solid var(--line);background:#fff;font-weight:600}.chip.on{background:var(--teal);border-color:var(--teal);color:#fff}
.stars{display:flex;gap:4px}.star{width:52px;height:52px;border:0;background:none;font-size:2rem;color:var(--gold);padding:0;line-height:1}
.trow{border:1px dashed var(--line);border-radius:12px;padding:10px;margin:8px 0;background:#fffdf9}.trow-h{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--muted)}
.cell{margin:8px 0}.cell .cl{font-size:.85rem;font-weight:600}.cell .star{width:44px;height:44px;font-size:1.7rem}
.x{background:none;border:0;font-size:1.1rem;color:var(--muted);min-width:40px;min-height:40px}
.add{width:100%}
.plink{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;font-size:1rem}.plink>div{flex:1}.plink small{color:var(--muted)}.plink>span{font-size:1.6rem;color:var(--muted)}.plink.on{border-color:var(--teal)}
.rules-mini{font-size:.78rem;background:var(--gold2);border-radius:10px;padding:6px 10px;color:#6d5521}.rules-mini .link{font-size:.78rem;padding:0 4px}
.note{background:var(--teal2);border-radius:10px;padding:8px 12px;margin:8px 0;font-size:.9rem}
.warnbox{background:#fdebe6;border:1px solid #f2c2b5;color:#8a2f1b;border-radius:12px;padding:10px 12px;margin:10px 0;font-size:.88rem}
.okbox{background:#e6f4ea;border:1px solid #bfe0c8;border-radius:12px;padding:10px;margin:10px 0;font-size:.9rem}
.err{color:var(--coral);font-weight:700;min-height:1.2em}
.prompt,.handoff{display:flex;gap:12px;align-items:flex-start}.prompt p,.handoff p{margin:.2rem 0 .5rem}
.timer{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--gold2);border-color:var(--gold)}.timer .col{display:flex;flex-direction:column;gap:6px}
.tbig{font-size:2.2rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--teal)}
.prog .pgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pitem{background:#fffdf9;border:1px solid var(--line);border-radius:12px;padding:8px;text-align:left;font-size:.85rem}.pitem small{color:var(--muted)}
.who-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0}
.who-tile{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:92px;border-radius:16px;border:1.5px solid var(--line);background:#fff;font-weight:700;font-size:1.05rem}.who-tile span{font-size:1.8rem}.who-tile small{font-weight:500;color:var(--muted);font-size:.72rem}.who-tile.on{border-color:var(--teal);background:var(--teal2)}
.trav{display:flex;gap:6px;align-items:center;margin:6px 0}.trav .inp{flex:1}
.back{background:none;border:0;color:var(--teal);font-weight:700;padding:8px 0;min-height:40px}
.fab{position:fixed;right:14px;bottom:calc(92px + env(safe-area-inset-bottom));z-index:25;width:64px;height:64px;border-radius:50%;border:3px solid #fff;padding:0;overflow:hidden;box-shadow:0 6px 18px rgba(0,0,0,.22);background:var(--teal)}.fab-ic{width:100%;height:100%;object-fit:cover}
.seg{display:grid;grid-template-columns:1fr 1fr;background:#efe8dc;border-radius:14px;padding:4px;gap:4px}.seg button{min-height:46px;border:0;border-radius:11px;background:none;font-weight:700}.seg button.on{background:#fff;color:var(--teal);box-shadow:0 1px 3px rgba(0,0,0,.1)}
.mgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.mcard{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:#f4eee4;padding:0}
.mcard img{width:100%;height:100%;object-fit:cover}.mph{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;font-size:2rem;padding:6px}.mph small{font-size:.65rem;color:var(--muted)}
.mmeta{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.55);color:#fff;font-size:.62rem;padding:2px 4px;text-align:left}
.mst{position:absolute;top:4px;left:4px;background:#fff;border-radius:99px;font-size:.6rem;padding:1px 6px;font-weight:700}.s-approved{color:#1e7b3a}.s-not-approved{color:#a32a12}.s-needs-edit{color:#8a6100}
.mflag{position:absolute;top:4px;right:4px;background:#fdebe6;color:#8a2f1b;border-radius:99px;font-size:.6rem;padding:1px 6px;font-weight:700}
.mexp{position:absolute;bottom:18px;right:4px;background:var(--teal);color:#fff;border-radius:99px;font-size:.55rem;padding:0 5px}
.filters{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:10px 0}.filters .inp{min-height:44px;font-size:.88rem;padding:6px}
.counts{display:flex;gap:10px;flex-wrap:wrap;font-size:.85rem;font-weight:600;margin:6px 0}
.dnu{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:4px 0}.dnu small{color:var(--muted)}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.tag{background:var(--teal2);border-radius:99px;padding:2px 10px;font-size:.78rem}
.prev{width:100%;max-height:44vh;object-fit:contain;border-radius:12px;background:#000}.notetext{background:var(--gold2);border-radius:12px;padding:12px;white-space:pre-wrap}
.sheet-bg{position:fixed;inset:0;z-index:50;background:rgba(30,25,20,.45);display:flex;align-items:flex-end}
.sheet{width:100%;max-width:640px;margin:0 auto;max-height:92vh;overflow:auto;background:var(--bg);border-radius:22px 22px 0 0;padding:14px 16px calc(20px + env(safe-area-inset-bottom));animation:up .18s ease-out}
.sheet-h{display:flex;align-items:center;gap:8px;position:sticky;top:-14px;background:var(--bg);padding:6px 0;z-index:2}.sheet-h b{flex:1;font-size:1.1rem}
@keyframes up{from{transform:translateY(30px);opacity:.4}}
.map div{font-size:.88rem;margin-top:4px}
pre.md{white-space:pre-wrap;font-size:.72rem;background:#f6f1e8;padding:10px;border-radius:10px;max-height:300px;overflow:auto}
#toast{position:fixed;left:50%;bottom:calc(100px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(20px);background:#2b2a28;color:#fff;padding:10px 16px;border-radius:12px;font-size:.9rem;opacity:0;transition:.2s;z-index:60;max-width:90vw;text-align:center;pointer-events:none}#toast.show{opacity:1;transform:translateX(-50%)}
/* Kid mode: bigger, simpler */
body.kid{--fs:20px;--tap:62px}
body.kid .field.big>label,body.kid .field>label{font-size:1.4rem}
body.kid .star{width:58px;height:58px;font-size:2.4rem;filter:grayscale(1);opacity:.35}body.kid .star.on{filter:none;opacity:1}
body.kid .cell .star{width:52px;height:52px;font-size:2rem}
body.kid .chip{font-size:1.15rem;min-height:56px}
body.kid .hero{background:linear-gradient(135deg,#fff,#e8e1f7)}
body.kid .rules-mini{display:none}
@media (min-width:700px){.mgrid{grid-template-columns:repeat(4,1fr)}}
.trow{display:grid;grid-template-columns:1fr 1fr;column-gap:10px}.trow-h{grid-column:1/-1}
.trow .cell{grid-column:1/-1}.trow .cell.t-num,.trow .cell.t-time,.trow .cell.t-money,.trow .cell.t-yn,.trow .cell.t-date{grid-column:auto}
.trow .cell .row-inline .btn{padding:6px 8px}
.mst ~ .mflag{top:24px}
/* Ideas */
.idea{display:block;width:100%;text-align:left;cursor:pointer}.idea-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.idea .idea-t{display:block;font-size:1.05rem}.idea small{color:var(--muted);display:block}
.badge{font-size:.75rem;font-weight:700;border-radius:99px;padding:2px 10px;background:var(--teal2);color:var(--teal)}.badge.product{background:var(--gold2);color:#7a5a12}
.scorepill{min-width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.15rem;background:var(--teal);color:#fff}
.idea-f{font-size:.84rem;margin:8px 0;color:#4a4540}.idea-actions{display:flex;gap:8px;align-items:center;margin-top:6px;flex-wrap:wrap}.idea-actions .chip{min-height:42px;padding:6px 14px}
.gate-badge{display:inline-block;font-size:.72rem;font-weight:800;border-radius:6px;padding:1px 7px;vertical-align:middle}.gate-badge.pass{background:#e6f4ea;color:#1e7b3a}.gate-badge.cond{background:#fff4d6;color:#8a6100}.gate-badge.fail{background:#fdebe6;color:#a32a12}
.score-card{background:#fff;border:2px solid var(--teal);border-radius:var(--r);padding:14px;margin:12px 0}.score-top{display:flex;gap:12px;align-items:center}.score-top small{display:block;color:var(--muted);font-size:.78rem;margin-top:2px}
.score-num{min-width:72px;height:72px;border-radius:18px;background:linear-gradient(135deg,var(--teal),#3f8f8f);color:#fff;font-size:2rem;font-weight:800;display:flex;align-items:center;justify-content:center}
.why{font-weight:600;margin:10px 0 6px}.gates{list-style:none;padding:0;margin:6px 0}.gates li{display:flex;gap:8px;padding:6px 0;border-top:1px solid var(--line);font-size:.88rem}.gates li small{display:block;color:var(--muted)}
.parts{display:flex;flex-wrap:wrap;gap:6px;font-size:.8rem}.parts span{background:#f4eee4;border-radius:8px;padding:2px 8px}
.sticky-score{position:sticky;top:58px;z-index:15;background:var(--teal);color:#fff;border-radius:12px;padding:6px 12px;margin:4px 0 10px;font-size:.9rem;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sticky-score:empty{display:none}

/* Gear check-ins */
.ckchips { gap: 4px; flex-wrap: nowrap; overflow-x: auto; }
.ckchips .chip { padding: 6px 10px; white-space: nowrap; flex: 0 0 auto; }
.ckchips .chip small { opacity: .7; margin-left: 2px; }
.topicdots { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.topicdots { flex-wrap: nowrap; justify-content: space-between; gap: 2px; }
.topicdots .dot { width: 36px; height: 36px; flex: 0 0 36px; border-radius: 50%; border: 2px solid #d8cfc2; background: #fff; font-size: 18px; padding: 0; }
.topicdots .dot.done { background: #e6f1ef; border-color: #2f6f73; }
.topicdots .dot.cur { border-color: #d9a441; box-shadow: 0 0 0 3px rgba(217,164,65,.3); }
.gearcard .gq { font-size: 1.15rem; margin: 4px 0 10px; }
.gearwarn { background: #fff4dc; border: 1px solid #d9a441; border-radius: 10px; padding: 8px 10px; margin: 10px 0; font-size: .92rem; }
.colors { display: flex; flex-wrap: wrap; gap: 8px; }
.swatch { width: 40px; height: 40px; border-radius: 50%; border: 2px solid #ccc; position: relative; padding: 0; }
.swatch span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.swatch.on { border: 3px solid #2f6f73; box-shadow: 0 0 0 3px #fff inset; }
.swatch.on::after { content: '✓'; position: absolute; inset: 0; display: grid; place-items: center; color: #fff; font-weight: 800; text-shadow: 0 0 3px #000; }
.kidchips .chip { font-size: 1.05rem; padding: 10px 14px; min-height: 52px; display: inline-flex; flex-direction: column; align-items: center; min-width: 84px; }
.kidchips .chip .em { font-size: 1.8rem; line-height: 1.1; }
body.kid .swatch, .kid .swatch { width: 52px; height: 52px; }
.kidq .qbtn.big { min-height: 84px; font-size: 1.1rem; }
.kidq .qbtn.big span { font-size: 2rem; }
.gearToday .bigem { font-size: 2rem; margin-right: 6px; }
.pgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 6px; }
.pitem { background: #faf6f0; border: 1px solid #e5dccf; border-radius: 10px; padding: 6px; text-align: left; font: inherit; }
.pitem span { display: block; font-weight: 600; }

.kidcam { grid-template-columns: 1fr 1fr; }
.kidcam .cambig { grid-column: 1 / -1; min-height: 110px; font-size: 1.4rem; background: #d9a441; color: #222; border-color: #c4902e; }
.kidcam .cambig span { font-size: 2.6rem; }
.minfo { position: absolute; left: 4px; top: 4px; background: rgba(255,255,255,.9); border-radius: 8px; padding: 1px 6px; font-size: .75rem; }
/* v11: reservation card, safe links, shot list */
.resv{border:2px solid var(--gold);background:var(--gold2)}.resv-h{display:flex;gap:10px;align-items:center}.resv-h small{display:block;color:var(--muted);font-weight:700;text-transform:uppercase;font-size:.72rem;letter-spacing:.04em}
.resv-name{display:block;font-size:1.2rem}.resv-when{font-weight:700;color:var(--teal)}.resv-facts{margin:.4rem 0}.resv-notes{margin:.2rem 0 .4rem 1.1rem;padding:0}.resv-notes li{margin:2px 0}
.resv-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.resv-links a{text-decoration:none}
.links{font-size:.85rem;margin:4px 0;word-break:break-all}.links a,.resv-notes a,.prompt a,.shots a{color:var(--teal);font-weight:700}
.shots{margin:.3rem 0 .5rem 1.1rem;padding:0}.shots li{margin:3px 0}
.resv .bigem{font-size:2rem}

/* v12 Stay & tickets card */
.st h4{margin:.7rem 0 .2rem;font-size:.95rem}
.st-list{margin:.2rem 0 .4rem 1.2rem;padding:0}
.st-list li{margin:.25rem 0}
.st-line{margin:.3rem 0}
.st-line small{display:block;opacity:.7}
.calrow{margin:.4rem 0}
/* v14: 1–10 score buttons (daily questions, old tables, ideas) */
.stars.s10,.idea .stars,.stars:has(.n10){display:grid;grid-template-columns:repeat(5,1fr);gap:6px;max-width:360px}
.star.n10{width:auto;height:48px;min-width:44px;border:2px solid var(--gold);border-radius:12px;background:transparent;color:inherit;font-size:1.15rem;font-weight:700;line-height:1}
.star.n10.on{background:color-mix(in srgb,var(--gold) 35%,transparent)}.star.n10.pick{background:var(--gold);color:#1b1b1b}
.cell .star.n10{width:auto;height:44px;font-size:1.05rem}
body.kid .star.n10,body.kid .cell .star.n10{filter:none;opacity:1;width:auto;height:54px;font-size:1.35rem}
.field.ten .cl{display:block;font-size:.85rem;font-weight:600;margin:8px 0 4px}.field.ten .inp{margin-bottom:4px}
.sh2{font-size:.95rem;margin:12px 0 6px;opacity:.8}
/* v17 (Oct 26 2026): audit fixes. Tap targets ≥44px, darker score borders (3.9:1), larger tab labels,
   the photo button never covers a text box, folded booking cards and Full log, one-line progress. */
:root{--gold-line:#a8791f}
.star.n10{border-color:var(--gold-line)}
.btn.small{min-height:44px}
.link{min-height:44px;display:inline-flex;align-items:center}
.who-btn{min-height:44px}
.trip-btn{min-height:44px}
.links a,.st-links a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
.tab{font-size:.75rem}
main{padding-bottom:120px}
body.typing .fab{display:none}
.fab{width:56px;height:56px}
details.fold>summary,details.fold-in>summary{cursor:pointer;list-style:none;min-height:44px;display:flex;flex-direction:column;justify-content:center}
details.fold>summary::-webkit-details-marker,details.fold-in>summary::-webkit-details-marker{display:none}
details.fold>summary b::after{content:" ▸";color:var(--muted)}details.fold[open]>summary b::after{content:" ▾"}
details.fold>summary small,.st-sum{color:var(--muted);font-size:.85rem;display:block}
details.fold-in>summary{color:var(--teal);font-weight:700;font-size:.9rem}
details.fold-in>summary::after{content:" ▸"}details.fold-in[open]>summary::after{content:" ▾"}
.st .st-sum .st-name{color:var(--ink)}
.tdates{display:block}
.prog1 small{display:block}
.back{min-height:44px}

/* v18 (Oct 26 2026): profile cards + Update my info */
.who-tile{position:relative;padding:8px 4px}
.who-tile em{font-style:normal;font-weight:500;font-size:.72rem;color:var(--muted)}
.who-tile .me{position:absolute;top:6px;right:8px;font-style:normal;font-size:.7rem;font-weight:700;color:var(--accent,#2f6f73)}
.who-tile.on{outline:2.5px solid var(--accent,#2f6f73)}
#profileForm .inp{min-height:44px}

/* v18: "Nova's lab" glass look — bottom nav (plus the profile cards / Update my info panel).
   Frosted dark-navy/teal glass, thin glowing cyan edges, faint constellation lines + star points, diagonal sheen. Solid fallback where backdrop-filter is missing. */
:root{--lab-navy:#0b1a2e;--lab-teal:#0f3a44;--lab-cyan:#5fe6ff;--lab-ice:#e8fbff;--lab-dim:#a9d9e6}
.tabs{gap:3px;padding:6px 5px calc(6px + env(safe-area-inset-bottom));border-top:1px solid rgba(95,230,255,.45);
  background:linear-gradient(180deg,#10263d,#08131f);   /* solid fallback */
  box-shadow:0 -6px 22px rgba(20,120,160,.28),inset 0 1px 0 rgba(160,240,255,.25)}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .tabs{background:linear-gradient(180deg,rgba(16,40,64,.82),rgba(6,16,28,.9));-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}}
.tabs::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.55;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='70' viewBox='0 0 240 70'%3E%3Cg fill='none' stroke='%235fe6ff' stroke-opacity='.28' stroke-width='.7'%3E%3Cpath d='M8 52 L38 30 L66 44 L98 14 L130 36'/%3E%3Cpath d='M150 58 L176 26 L204 40 L232 12'/%3E%3Cpath d='M0 20 H22 V8 H48' stroke-opacity='.16'/%3E%3Cpath d='M190 66 V54 H216 V62 H240' stroke-opacity='.16'/%3E%3C/g%3E%3Cg fill='%23dffaff'%3E%3Ccircle cx='38' cy='30' r='1.2'/%3E%3Ccircle cx='98' cy='14' r='1.4'/%3E%3Ccircle cx='130' cy='36' r='1'/%3E%3Ccircle cx='176' cy='26' r='1.3'/%3E%3Ccircle cx='232' cy='12' r='1'/%3E%3Ccircle cx='66' cy='44' r='.9'/%3E%3C/g%3E%3C/svg%3E") repeat-x left center/240px 70px}
.tab{position:relative;overflow:hidden;min-height:48px;padding:5px 0 4px;border-radius:12px;color:var(--lab-dim);font-weight:600;letter-spacing:.01em;
  background:linear-gradient(160deg,rgba(40,120,150,.30),rgba(10,30,50,.40));border:1px solid rgba(95,230,255,.30);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.04),0 0 6px rgba(95,230,255,.10);transition:box-shadow .25s,border-color .25s,color .25s}
.tab::after{content:"";position:absolute;top:-60%;left:-40%;width:55%;height:220%;transform:rotate(25deg);pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(200,250,255,.16),transparent)}   /* diagonal sheen */
.tab span:not(.nav-em){color:inherit;text-shadow:0 1px 2px rgba(0,0,0,.6)}
.tab .nav-ic{border-radius:8px;box-shadow:0 0 0 1px rgba(95,230,255,.35)}
.tab .nav-em{filter:drop-shadow(0 0 3px rgba(95,230,255,.45))}
.tab:focus-visible{outline:2px solid var(--lab-cyan);outline-offset:1px}
.tab.on{color:var(--lab-ice);font-weight:800;border-color:rgba(130,240,255,.95);
  background:linear-gradient(160deg,rgba(60,190,220,.42),rgba(12,50,80,.55));
  box-shadow:0 0 14px rgba(95,230,255,.55),0 0 2px rgba(180,250,255,.9),inset 0 0 10px rgba(95,230,255,.30)}
.tab.on .nav-ic{outline:0;box-shadow:0 0 0 1.5px var(--lab-cyan),0 0 10px rgba(95,230,255,.7)}
.tab.on::before{content:"✦";position:absolute;top:2px;right:5px;font-size:.55rem;color:#dffaff;text-shadow:0 0 6px var(--lab-cyan)}
@media (prefers-reduced-motion:no-preference){.tab.on::after{animation:labSheen 3.2s ease-in-out infinite}}
@keyframes labSheen{0%{left:-60%}55%,100%{left:130%}}
@media (prefers-reduced-motion:reduce){.tab,.who-tile{transition:none}.tab::after{display:none}}
body.kid .tab{font-size:.75rem}

/* Profile cards + Update my info panel: the same glass, lighter touch */
.who-tile{color:var(--lab-ice);border:1px solid rgba(95,230,255,.45);background:linear-gradient(160deg,#16405a,#0b1a2e);
  box-shadow:0 0 10px rgba(95,230,255,.18),inset 0 1px 0 rgba(200,250,255,.15);overflow:hidden}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.who-tile{background:linear-gradient(160deg,rgba(28,90,120,.88),rgba(10,26,46,.92));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}}
.who-tile small,.who-tile em{color:var(--lab-dim)}
.who-tile .me{color:#9ff3ff}
.who-tile.on{outline:0;border-color:#9ff3ff;box-shadow:0 0 16px rgba(95,230,255,.6),inset 0 0 10px rgba(95,230,255,.25)}
.who-tile::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(120deg,transparent 35%,rgba(200,250,255,.12) 50%,transparent 65%)}
#profileForm{padding:14px;border-radius:16px;border:1px solid rgba(95,230,255,.5);background:linear-gradient(160deg,#12324a,#0b1a2e);box-shadow:0 0 14px rgba(95,230,255,.2)}
#profileForm label{color:var(--lab-ice)}#profileForm .hint{color:var(--lab-dim)}
#profileForm .inp{background:rgba(255,255,255,.96);color:#14202c;border:1px solid rgba(95,230,255,.6)}

/* ======================================================================
   v19 (Oct 26 2026): "Nova's lab" theme for the WHOLE app.
   Deep navy lab background with a faint circuit grid + star points, frosted holographic glass panels with thin cyan edges,
   cyan/teal accents, warm amber (the fox's fur and eyes) for primary actions and ratings. System fonts only (CSP-safe).
   Everything is driven by the variables below; backdrop-filter has a solid fallback; motion respects prefers-reduced-motion.
   ====================================================================== */
:root{color-scheme:dark;
  --bg:#060d18;--bg2:#0b1a2e;--card:#0e2236;--glass:rgba(14,36,58,.72);--glass2:rgba(20,52,78,.62);
  --ink:#e8f6fb;--muted:#a6c8d4;--teal:#5fe6ff;--teal-ink:#7cecff;--teal2:rgba(95,230,255,.14);
  --gold:#ffb54a;--gold2:rgba(255,176,74,.14);--gold-line:#ffb54a;--amber1:#ffc56e;--amber2:#ff9a2e;--amber-ink:#1c1204;
  --line:rgba(95,230,255,.26);--edge:rgba(95,230,255,.42);--edge-hi:rgba(150,240,255,.9);--coral:#ff8f73;
  --glow:0 0 14px rgba(95,230,255,.22);--glow-hi:0 0 18px rgba(95,230,255,.55);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Inter,Roboto,"Helvetica Neue",Arial,sans-serif;
  --font-h:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI Variable Display","Segoe UI",Inter,Roboto,sans-serif}
html{background:var(--bg)}
html,body{color:var(--ink);font-family:var(--font)}
body{background:radial-gradient(120% 70% at 85% -10%,#12385a 0%,rgba(18,56,90,0) 60%),radial-gradient(90% 60% at -10% 110%,#0d3340 0%,rgba(13,51,64,0) 60%),var(--bg);min-height:100vh}
/* lab backdrop: fixed layer (iPhone Safari ignores background-attachment:fixed) */
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.9;
  background:
   url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='320' viewBox='0 0 320 320'%3E%3Cg fill='none' stroke='%235fe6ff' stroke-width='.6'%3E%3Cpath stroke-opacity='.10' d='M0 40H90V110H170M230 0V60H320M40 320V250H120V190M320 220H250V280H190'/%3E%3Cpath stroke-opacity='.18' d='M60 150L105 128L140 160L188 120L222 140M240 250L270 214L300 232'/%3E%3C/g%3E%3Cg fill='%235fe6ff' fill-opacity='.35'%3E%3Ccircle cx='90' cy='110' r='1.6'/%3E%3Ccircle cx='230' cy='60' r='1.6'/%3E%3Ccircle cx='120' cy='190' r='1.6'/%3E%3Ccircle cx='250' cy='280' r='1.6'/%3E%3C/g%3E%3Cg fill='%23e8fbff'%3E%3Ccircle cx='105' cy='128' r='1.1' fill-opacity='.8'/%3E%3Ccircle cx='188' cy='120' r='1.3' fill-opacity='.85'/%3E%3Ccircle cx='140' cy='160' r='.9' fill-opacity='.6'/%3E%3Ccircle cx='270' cy='214' r='1.1' fill-opacity='.7'/%3E%3Ccircle cx='24' cy='272' r='.8' fill-opacity='.5'/%3E%3Ccircle cx='296' cy='96' r='.8' fill-opacity='.5'/%3E%3Ccircle cx='160' cy='20' r='.7' fill-opacity='.5'/%3E%3C/g%3E%3Cg fill='%23ffc56e' fill-opacity='.7'%3E%3Ccircle cx='222' cy='140' r='1'/%3E%3Ccircle cx='60' cy='150' r='.8'/%3E%3C/g%3E%3C/svg%3E") 0 0/320px 320px,
   linear-gradient(rgba(95,230,255,.035) 1px,transparent 1px) 0 0/32px 32px,
   linear-gradient(90deg,rgba(95,230,255,.035) 1px,transparent 1px) 0 0/32px 32px}
h1,h2,h3,h4,.ph,.hero h2{font-family:var(--font-h);letter-spacing:.01em;color:#f2fcff}
h1.ph{font-weight:750;text-shadow:0 0 18px rgba(95,230,255,.25)}
h1.ph small,.hint,.fine,.sub,.trip-btn small,.hero small,.plink small,.idea small,.st-sum,details.fold>summary small{color:var(--muted)}
a{color:var(--teal-ink)}
::selection{background:rgba(95,230,255,.35)}
/* ---- glass panels ---- */
.card,.sheet,.score-card,.trow,.pitem,.who-tile,#profileForm,.resv,.timer,.qbtn,.mcard,.seg,.note,.okbox,.warnbox,.gearwarn,.rules-mini,pre.md,.notetext{
  border:1px solid var(--edge);box-shadow:var(--glow),inset 0 1px 0 rgba(200,250,255,.08)}
.card,.score-card,.resv,.timer{background:linear-gradient(160deg,#10304a,#0b1a2e);position:relative}
.sheet{background:linear-gradient(180deg,#10283f,#070f1c)}
.top{background:rgba(6,14,26,.94)}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .card,.score-card,.resv,.timer{background:linear-gradient(160deg,rgba(22,62,92,.62),rgba(9,22,40,.78));-webkit-backdrop-filter:blur(12px) saturate(130%);backdrop-filter:blur(12px) saturate(130%)}
  .sheet{background:linear-gradient(180deg,rgba(16,42,66,.9),rgba(7,16,30,.94));-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%)}
  .top{background:rgba(6,14,26,.72);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}}
.card::after,.sheet::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(120deg,transparent 30%,rgba(200,250,255,.06) 48%,transparent 62%)}
.card>*,.sheet>*{position:relative;z-index:1}
.hero{background:linear-gradient(135deg,rgba(26,78,110,.75),rgba(10,24,44,.85))!important;border-color:var(--edge-hi)}
body.kid .hero{background:linear-gradient(135deg,rgba(40,70,120,.8),rgba(14,22,50,.88))!important}
.hero-ic,.ic,.top-logo{box-shadow:0 0 0 1px var(--edge),0 0 10px rgba(95,230,255,.3)}
.top{border-bottom:1px solid var(--edge);box-shadow:0 4px 18px rgba(0,0,0,.35)}
.trip-btn b{color:#f2fcff}
.sheet-bg{background:rgba(2,6,14,.62)}
.sheet{position:relative;border-bottom:0;box-shadow:0 -8px 30px rgba(95,230,255,.18)}
.sheet-h{background:transparent}
.sheet .sheet-h{background:rgba(10,26,44,.96)}
/* ---- buttons ---- */
.btn{background:linear-gradient(160deg,rgba(40,120,150,.28),rgba(10,30,50,.45));border:1px solid var(--edge);color:var(--teal-ink);box-shadow:inset 0 1px 0 rgba(200,250,255,.1);transition:box-shadow .2s,border-color .2s}
.btn:hover,.btn:focus-visible{border-color:var(--edge-hi);box-shadow:var(--glow-hi)}
.btn.primary{background:linear-gradient(160deg,var(--amber1),var(--amber2));border-color:#ffd9a0;color:var(--amber-ink);font-weight:800;box-shadow:0 0 16px rgba(255,160,60,.35),inset 0 1px 0 rgba(255,255,255,.45);overflow:hidden}
.btn.primary::after{content:"";position:absolute;top:-50%;left:-30%;width:40%;height:200%;transform:rotate(20deg);pointer-events:none;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent)}
.btn.ghost{background:rgba(8,20,36,.55);border-color:var(--line);color:var(--ink)}
.btn.danger{background:rgba(60,14,10,.4);border-color:var(--coral);color:var(--coral)}
.btn[disabled]{opacity:.5}
.who-btn{background:linear-gradient(160deg,rgba(60,190,220,.35),rgba(12,50,80,.6));border:1px solid var(--edge-hi);color:#f2fcff;box-shadow:var(--glow)}
.link,.back,details.fold-in>summary{color:var(--teal-ink)}
.x{color:var(--muted)}
.fab{border:2px solid var(--edge-hi);box-shadow:0 0 18px rgba(95,230,255,.5);background:var(--bg2)}
/* ---- quick buttons, chips, segments ---- */
.qbtn{background:linear-gradient(160deg,rgba(30,90,120,.4),rgba(10,26,46,.7));color:var(--ink)}
.qbtn:active{box-shadow:var(--glow-hi)}
.kidcam .cambig{background:linear-gradient(160deg,var(--amber1),var(--amber2));color:var(--amber-ink);border-color:#ffd9a0}
.chip{background:rgba(10,28,48,.7);border:1px solid var(--line);color:var(--ink)}
.chip.on{background:linear-gradient(160deg,rgba(60,190,220,.38),rgba(12,50,80,.6));border-color:var(--edge-hi);color:#f2fcff;box-shadow:var(--glow-hi)}
.seg{background:rgba(6,16,30,.7)}.seg button{color:var(--muted)}.seg button.on{background:linear-gradient(160deg,rgba(60,190,220,.38),rgba(12,50,80,.6));color:#f2fcff;box-shadow:var(--glow)}
.pill,.badge,.tag{background:var(--teal2);color:var(--teal-ink);border:1px solid var(--line)}
.badge.product{background:var(--gold2);color:var(--amber1);border-color:rgba(255,181,74,.45)}
/* ---- inputs / questionnaire ---- */
.inp,#profileForm .inp{background:rgba(3,10,20,.72);color:var(--ink);border:1px solid var(--edge)}
.inp::placeholder{color:#89aab7;opacity:1}
.inp:focus{border-color:var(--edge-hi);box-shadow:0 0 0 3px rgba(95,230,255,.2),var(--glow-hi)}
.inp[disabled]{opacity:.55}
select.inp option{background:#0b1a2e;color:var(--ink)}
.field>label,.cell .cl{color:#e2f5fb}
.trow{background:rgba(8,22,40,.55);border-style:solid;border-color:var(--line)}
.bar{background:rgba(95,230,255,.12)}.bar i{background:linear-gradient(90deg,var(--teal),var(--amber1));box-shadow:0 0 8px rgba(95,230,255,.6)}
/* ratings: amber, like the fox's eyes */
.star{color:var(--gold)}
.star.n10{border:1.5px solid rgba(255,181,74,.75);background:rgba(10,22,38,.6);color:var(--ink)}
.star.n10.on{background:rgba(255,176,74,.22);color:#ffe2b8}
.star.n10.pick{background:linear-gradient(160deg,var(--amber1),var(--amber2));color:var(--amber-ink);box-shadow:0 0 14px rgba(255,160,60,.55)}
.topicdots .dot{background:rgba(10,26,46,.8);border-color:var(--line)}.topicdots .dot.done{background:rgba(95,230,255,.2);border-color:var(--teal)}.topicdots .dot.cur{border-color:var(--gold);box-shadow:0 0 0 3px rgba(255,181,74,.3)}
.swatch.on{border-color:var(--teal);box-shadow:0 0 0 3px var(--bg) inset,var(--glow-hi)}
/* ---- notes, warnings, misc panels ---- */
.note{background:rgba(95,230,255,.1);color:var(--ink)}
.okbox{background:rgba(60,200,140,.12);border-color:rgba(110,230,170,.5);color:#d6f7e6}
.warnbox{background:rgba(255,120,90,.12);border-color:rgba(255,143,115,.55);color:#ffd9cf}
.gearwarn,.rules-mini,.notetext{background:rgba(255,176,74,.1);border-color:rgba(255,181,74,.45);color:#ffe7c4}
.err{color:var(--coral)}
.timer{border-color:rgba(255,181,74,.6)}.tbig{color:var(--amber1);text-shadow:0 0 12px rgba(255,160,60,.4)}
.pitem{background:rgba(8,22,40,.6);color:var(--ink)}
.plink>span{color:var(--teal-ink)}.plink.on{border-color:var(--edge-hi)}
.scorepill,.score-num{background:linear-gradient(160deg,var(--amber1),var(--amber2));color:var(--amber-ink);box-shadow:0 0 12px rgba(255,160,60,.4)}
.score-card{border:1px solid var(--edge-hi)}
.sticky-score{background:rgba(8,30,50,.92);border:1px solid var(--edge);color:var(--ink)}
.idea-f{color:#cfe6ee}.parts span{background:rgba(95,230,255,.1)}
.gate-badge.pass{background:rgba(60,200,140,.2);color:#9ff0c6}.gate-badge.cond{background:rgba(255,176,74,.2);color:#ffd79a}.gate-badge.fail{background:rgba(255,120,90,.2);color:#ffb7a4}
.gates li,.dnu{border-color:var(--line)}
.resv{border-color:rgba(255,181,74,.6)}.resv-when{color:var(--teal-ink)}.resv-h small{color:var(--muted)}
.links a,.resv-notes a,.prompt a,.shots a{color:var(--teal-ink)}
.st .st-sum .st-name{color:var(--ink)}
pre.md{background:rgba(3,10,20,.8);color:#d8eef5}
.mcard{background:rgba(8,22,40,.8)}.mph small{color:var(--muted)}
.mst{background:rgba(6,16,30,.88);color:var(--ink);border:1px solid var(--line)}
.s-approved{color:#9ff0c6}.s-not-approved{color:#ffb7a4}.s-needs-edit{color:#ffd79a}
.mst.s-received{color:#06222b;background:linear-gradient(160deg,#9ff3ff,#5fe6ff);border-color:#c8faff;white-space:normal;max-width:calc(100% - 8px);line-height:1.15;box-shadow:0 0 8px rgba(95,230,255,.6)}
.mflag{background:rgba(255,120,90,.9);color:#1b0802}
.minfo{background:rgba(6,16,30,.85);color:var(--ink)}
.mexp{background:var(--amber2);color:var(--amber-ink)}
#toast{background:rgba(8,24,40,.96);border:1px solid var(--edge-hi);color:#f2fcff;box-shadow:var(--glow-hi)}
.kidchips .chip .em,.nav-em,.qbtn span{filter:drop-shadow(0 0 3px rgba(95,230,255,.35))}
/* ---- v19 profile cards: just the name (and the person's photo if they added one) ---- */
.who-tile{justify-content:center;gap:8px;min-height:96px;padding:12px 6px;font-family:var(--font-h);font-size:1.12rem;font-weight:750;letter-spacing:.01em}
.who-tile .nm{font-size:inherit;line-height:1.2;display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px}
.who-tile .avatar{width:58px;height:58px;border-radius:50%;object-fit:cover;border:1.5px solid var(--edge-hi);box-shadow:0 0 12px rgba(95,230,255,.45);background:var(--bg2)}
.who-tile.has-photo{min-height:120px}
.who-tile.on .nm{color:#fff;text-shadow:0 0 10px rgba(95,230,255,.8)}
/* Update my info: photo */
.pf-photo{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:8px}
.avatar-lg{width:132px;height:132px;border-radius:50%;display:grid;place-items:center;overflow:hidden;border:1.5px solid var(--edge-hi);box-shadow:0 0 22px rgba(95,230,255,.45),inset 0 0 18px rgba(95,230,255,.2);
  background:radial-gradient(circle at 35% 30%,rgba(95,230,255,.25),rgba(10,26,46,.9) 70%)}
.avatar-lg .avatar{width:100%;height:100%;object-fit:cover}
.avatar-lg .nm{font-family:var(--font-h);font-weight:750;font-size:1.2rem;color:#f2fcff;padding:0 8px;text-align:center}
.pf-photo .btn{width:100%}
.pf-photo .hint{text-align:center}
/* ---- v19 Beam it to Mission Control ---- */
.beam-btn{font-size:1.05rem;letter-spacing:.01em}
.beam-ok{position:relative;overflow:hidden;margin:12px 0 6px;padding:12px 14px;border-radius:14px;border:1px solid var(--edge-hi);text-align:center;
  background:linear-gradient(160deg,rgba(60,190,220,.3),rgba(10,30,52,.8));box-shadow:var(--glow-hi)}
.beam-ok b{display:block;font-family:var(--font-h);font-size:1.1rem;color:#f2fcff;letter-spacing:.02em}
.beam-ok small{display:block;color:var(--muted);margin-top:2px}
.beam-ok::before{content:"";position:absolute;left:50%;top:-40%;width:3px;height:180%;transform:translateX(-50%);pointer-events:none;opacity:0;
  background:linear-gradient(180deg,transparent,rgba(200,250,255,.95),transparent);box-shadow:0 0 16px 6px rgba(95,230,255,.55)}
@media (prefers-reduced-motion:no-preference){
  .beam-ok.beaming{animation:beamGlow 1.2s ease-out 1}
  .beam-ok.beaming::before{animation:beamRay 1s ease-out 1}
  .btn.primary::after{animation:labSheen 4.5s ease-in-out infinite}
  .card.hero::after{animation:heroSheen 7s ease-in-out infinite}}
@keyframes beamGlow{0%{box-shadow:0 0 0 rgba(95,230,255,0);transform:scale(.98)}40%{box-shadow:0 0 34px rgba(95,230,255,.9)}100%{box-shadow:var(--glow-hi);transform:none}}
@keyframes beamRay{0%{opacity:0;width:2px}25%{opacity:1;width:6px}100%{opacity:0;width:90%}}
@keyframes heroSheen{0%,60%{background-position:-200% 0}100%{background-position:200% 0}}
.card.hero::after{background:linear-gradient(120deg,transparent 30%,rgba(200,250,255,.1) 48%,transparent 62%) 0 0/200% 100% no-repeat}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* high-contrast / forced colours: keep it readable */
@media (forced-colors:active){.card,.btn,.chip,.who-tile,.tab{border:1px solid CanvasText}}
.plink>div>b,.plink>div>small{display:block}.plink>div>small{margin-top:2px}
