/* Wehrer HQ — dark luxe. No external resources: system sans + bundled Playfair Display (OFL). */
@font-face { font-family: "Playfair"; src: url("fonts/playfair.woff") format("woff"); font-weight: 400 900; font-display: swap; }

:root {
  --bg: #09090a; --bg-2: #111113; --bg-3: #18181b;
  --glass: rgba(255, 255, 255, 0.045); --glass-2: rgba(255, 255, 255, 0.07);
  --line: rgba(255, 255, 255, 0.08); --line-gold: rgba(214, 178, 106, 0.28);
  --text: #f4efe6; --text-2: #c9c3b8; --muted: #8e897f; --faint: #5f5b54;
  --gold: #d6b26a; --gold-2: #f0d9a4; --gold-3: #a8833f; --gold-glow: rgba(214, 178, 106, 0.18);
  --red: #e5806f; --green: #8fc39d; --blue: #8fb2d9; --violet: #b49ad8;
  --serif: "Playfair", "Iowan Old Style", "Palatino", Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", "Segoe UI", system-ui, sans-serif;
  --r: 22px; --r-sm: 14px;
  --sat: env(safe-area-inset-top, 0px); --sab: env(safe-area-inset-bottom, 0px);
  --sal: env(safe-area-inset-left, 0px); --sar: env(safe-area-inset-right, 0px);
  --tab-h: 64px;
  --ease: cubic-bezier(.22, .9, .27, 1);
  color-scheme: dark;
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; height: 100%; background: var(--bg); color: var(--text); }
body {
  font: 400 15px/1.45 var(--sans); -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%;
  overscroll-behavior-y: none;
  background:
    radial-gradient(1200px 600px at 85% -10%, rgba(214, 178, 106, 0.09), transparent 60%),
    radial-gradient(900px 500px at -10% 30%, rgba(120, 90, 160, 0.06), transparent 60%),
    var(--bg);
  background-attachment: fixed;
}
button, input { font: inherit; color: inherit; }
button { cursor: pointer; border: 0; background: none; padding: 0; }
a { color: var(--gold-2); text-decoration: none; }
.hidden { display: none !important; }
.serif { font-family: var(--serif); }
.gold { color: var(--gold); }
.muted { color: var(--muted); }
.small { font-size: 12.5px; }

/* ---------- lock screen ---------- */
#lock {
  position: fixed; inset: 0; z-index: 100; display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: calc(var(--sat) + 24px) 28px calc(var(--sab) + 24px);
  background:
    radial-gradient(600px 420px at 50% 18%, rgba(214, 178, 106, 0.16), transparent 70%),
    radial-gradient(500px 500px at 50% 120%, rgba(214, 178, 106, 0.08), transparent 70%),
    #070708;
  transition: opacity .6s var(--ease), transform .6s var(--ease);
}
#lock.leaving { opacity: 0; transform: scale(1.04); pointer-events: none; }
.monogram {
  width: 92px; height: 92px; border-radius: 50%; display: grid; place-items: center; position: relative;
  font: 600 50px/1 var(--serif); color: var(--gold-2);
  background: radial-gradient(circle at 50% 35%, #1d1a14, #0b0b0b 70%);
  border: 1px solid var(--line-gold); box-shadow: 0 0 0 6px rgba(214,178,106,.05), 0 20px 60px rgba(214,178,106,.15), inset 0 1px 0 rgba(255,255,255,.06);
}
.monogram span { background: linear-gradient(180deg, #f6e3b4, #c99d4f 70%, #9c7636); -webkit-background-clip: text; background-clip: text; color: transparent; transform: translateY(-2px); }
.lock-title { font: 500 30px/1.1 var(--serif); margin: 26px 0 6px; letter-spacing: .3px; }
.lock-sub { color: var(--muted); margin: 0 0 34px; font-size: 14px; letter-spacing: .4px; }
.lock-form { width: 100%; max-width: 340px; }
.pass-wrap { position: relative; }
.pass {
  width: 100%; height: 56px; border-radius: 16px; padding: 0 52px 0 20px; font-size: 17px; letter-spacing: 2px;
  background: rgba(255,255,255,.05); border: 1px solid var(--line); outline: none; transition: border-color .2s, box-shadow .2s;
}
.pass::placeholder { letter-spacing: .3px; color: var(--faint); }
.pass:focus { border-color: var(--line-gold); box-shadow: 0 0 0 4px var(--gold-glow); }
.pass-eye { position: absolute; right: 8px; top: 8px; width: 40px; height: 40px; display: grid; place-items: center; color: var(--muted); border-radius: 12px; }
.toggle-row { display: flex; align-items: center; justify-content: space-between; margin: 18px 4px 22px; color: var(--text-2); font-size: 14.5px; }
.toggle-row small { display: block; color: var(--faint); font-size: 12px; margin-top: 2px; }
.switch { position: relative; width: 51px; height: 31px; flex: none; }
.switch input { opacity: 0; width: 0; height: 0; position: absolute; }
.switch i { position: absolute; inset: 0; border-radius: 99px; background: #2a2a2e; transition: background .25s; }
.switch i::after { content: ""; position: absolute; top: 2px; left: 2px; width: 27px; height: 27px; border-radius: 50%; background: #f4f1ea; box-shadow: 0 2px 6px rgba(0,0,0,.4); transition: transform .25s var(--ease); }
.switch input:checked + i { background: linear-gradient(90deg, var(--gold-3), var(--gold)); }
.switch input:checked + i::after { transform: translateX(20px); }
.btn-gold {
  width: 100%; height: 54px; border-radius: 16px; font-weight: 600; font-size: 16px; letter-spacing: .4px; color: #1a1408;
  background: linear-gradient(180deg, #f1d9a0, #cfa65c 60%, #b8904a); box-shadow: 0 10px 30px rgba(214,178,106,.25), inset 0 1px 0 rgba(255,255,255,.5);
  transition: transform .15s, filter .2s;
}
.btn-gold:active { transform: scale(.98); filter: brightness(.95); }
.btn-gold[disabled] { filter: saturate(.4) brightness(.7); }
.lock-msg { min-height: 22px; margin-top: 16px; text-align: center; color: var(--muted); font-size: 13.5px; }
.lock-msg.err { color: var(--red); }
.lock-warn { margin-top: 18px; padding: 10px 14px; border-radius: 12px; font-size: 12.5px; color: #f2c9a0; background: rgba(229,128,111,.08); border: 1px solid rgba(229,128,111,.25); text-align: center; }
.lock-foot { position: absolute; bottom: calc(var(--sab) + 18px); color: var(--faint); font-size: 11.5px; letter-spacing: 1.6px; text-transform: uppercase; }
.shake { animation: shake .5s cubic-bezier(.36,.07,.19,.97) both; }
@keyframes shake { 10%,90%{transform:translateX(-2px)} 20%,80%{transform:translateX(4px)} 30%,50%,70%{transform:translateX(-8px)} 40%,60%{transform:translateX(8px)} }
.spinner { width: 18px; height: 18px; border-radius: 50%; border: 2px solid rgba(26,20,8,.25); border-top-color: #1a1408; display: inline-block; vertical-align: -3px; margin-right: 8px; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- shell ---------- */
#app { min-height: 100%; }
#view {
  padding: calc(var(--sat) + 14px) calc(var(--sar) + 18px) calc(var(--sab) + var(--tab-h) + 28px) calc(var(--sal) + 18px);
  max-width: 760px; margin: 0 auto;
}
.view-enter { animation: viewIn .45s var(--ease) both; }
@keyframes viewIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.topbar { display: flex; align-items: center; justify-content: space-between; min-height: 44px; margin-bottom: 8px; }
.icon-btn { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: var(--glass); border: 1px solid var(--line); color: var(--text-2); transition: transform .15s, background .2s; }
.icon-btn:active { transform: scale(.94); background: var(--glass-2); }
.back-btn { display: inline-flex; align-items: center; gap: 4px; height: 40px; padding: 0 14px 0 8px; border-radius: 99px; background: var(--glass); border: 1px solid var(--line); color: var(--gold-2); font-size: 15px; }
.eyebrow { font-size: 11.5px; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); font-weight: 600; }
h1.title { font: 500 34px/1.12 var(--serif); margin: 6px 0 4px; letter-spacing: .2px; }
h2.sec { font: 500 21px/1.2 var(--serif); margin: 30px 2px 12px; display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
h2.sec .more { font: 500 13.5px var(--sans); color: var(--gold); }
.lede { color: var(--text-2); margin: 0 0 6px; }

.card {
  position: relative; border-radius: var(--r); padding: 18px; background: linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.025));
  border: 1px solid var(--line); box-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 18px 40px rgba(0,0,0,.35);
  -webkit-backdrop-filter: blur(18px) saturate(140%); backdrop-filter: blur(18px) saturate(140%);
}
.card + .card { margin-top: 12px; }
.card.tap { transition: transform .18s var(--ease), border-color .2s; }
.card.tap:active { transform: scale(.985); border-color: var(--line-gold); }
.card-title { font: 500 18px/1.25 var(--serif); margin: 0 0 4px; }
.chip { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: 99px; font-size: 11.5px; font-weight: 600; letter-spacing: .4px; background: var(--glass-2); color: var(--text-2); border: 1px solid var(--line); white-space: nowrap; }
.chip.gold { color: var(--gold-2); border-color: var(--line-gold); background: rgba(214,178,106,.1); }
.chip.red { color: #f4b2a5; border-color: rgba(229,128,111,.35); background: rgba(229,128,111,.1); }
.chip.green { color: #bfe3c7; border-color: rgba(143,195,157,.3); background: rgba(143,195,157,.08); }
.dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gold); display: inline-block; flex: none; }
.pulse { box-shadow: 0 0 0 0 rgba(214,178,106,.6); animation: pulse 2s infinite; }
@keyframes pulse { 70% { box-shadow: 0 0 0 10px rgba(214,178,106,0); } 100% { box-shadow: 0 0 0 0 rgba(214,178,106,0); } }
.row { display: flex; align-items: center; gap: 12px; }
.row.top { align-items: flex-start; }
.grow { flex: 1; min-width: 0; }
.list { list-style: none; margin: 0; padding: 0; }
.list > li { padding: 12px 0; border-top: 1px solid var(--line); }
.list > li:first-child { border-top: 0; padding-top: 2px; }
.list > li:last-child { padding-bottom: 2px; }
.chev { color: var(--faint); flex: none; }
.empty { color: var(--muted); font-style: italic; }
.recheck { color: var(--red); font-size: 12px; margin-top: 4px; }

/* ---------- tab bar ---------- */
#tabs {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; display: flex; justify-content: space-around;
  padding: 6px calc(var(--sar) + 6px) calc(var(--sab) + 4px) calc(var(--sal) + 6px);
  background: rgba(12, 12, 13, .72); -webkit-backdrop-filter: blur(24px) saturate(160%); backdrop-filter: blur(24px) saturate(160%);
  border-top: 1px solid var(--line);
}
#tabs a { flex: 1; min-width: 0; max-width: 96px; white-space: nowrap; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 6px 0 4px; color: var(--faint); font-size: 10.5px; font-weight: 600; letter-spacing: .3px; transition: color .2s; }
#tabs a svg { width: 24px; height: 24px; transition: transform .25s var(--ease); }
#tabs a.on { color: var(--gold-2); }
#tabs a.on svg { transform: translateY(-1px) scale(1.06); filter: drop-shadow(0 0 8px rgba(214,178,106,.35)); }

/* ---------- home ---------- */
.hello { margin: 4px 2px 18px; }
.hello h1 { font: 500 31px/1.12 var(--serif); margin: 4px 0 2px; }
.hello .date { color: var(--text-2); font-size: 15px; }
.weather { display: flex; align-items: center; gap: 16px; }
.weather .big { font: 300 50px/1 var(--sans); letter-spacing: -2px; }
.weather .big sup { font-size: 20px; letter-spacing: 0; vertical-align: 22px; color: var(--muted); }
.wx-ico { width: 56px; height: 56px; flex: none; }
.wx-days { display: flex; gap: 4px; margin-top: 16px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.wx-days::-webkit-scrollbar { display: none; }
.wx-day { flex: 1 1 0; min-width: 38px; text-align: center; padding: 8px 0; border-radius: 12px; background: rgba(255,255,255,.03); font-size: 12px; color: var(--text-2); }
.wx-day svg { width: 24px; height: 24px; margin: 4px auto; display: block; }
.wx-day b { color: var(--text); font-weight: 600; }
.wx-day.today { background: rgba(214,178,106,.08); outline: 1px solid var(--line-gold); }

.countdowns { display: grid; gap: 12px; margin-top: 14px; }
.cd { overflow: hidden; min-height: 150px; padding: 20px; display: flex; flex-direction: column; justify-content: space-between; border-radius: 24px; }
.cd .art { position: absolute; inset: 0; z-index: 0; opacity: .95; }
.cd .art svg { width: 100%; height: 100%; display: block; }
.cd > *:not(.art) { position: relative; z-index: 1; }
.cd .num { font: 500 58px/0.95 var(--serif); letter-spacing: -1px; background: linear-gradient(180deg, #fff6df, #e5c27c); -webkit-background-clip: text; background-clip: text; color: transparent; }
.cd .unit { font: 500 13px var(--sans); color: var(--gold-2); letter-spacing: 1.6px; text-transform: uppercase; margin-left: 6px; }
.cd .hms { font-variant-numeric: tabular-nums; color: var(--text-2); font-size: 13.5px; margin-top: 4px; }
.cd .t { font: 500 21px/1.2 var(--serif); }
.cd .s { color: var(--text-2); font-size: 13px; margin-top: 2px; }
.cd-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cd-row .cd { min-height: 150px; padding: 16px; }
.cd-row .cd .num { font-size: 44px; }
.cd-row .cd .t { font-size: 17px; }

.tl-day { display: flex; gap: 14px; padding: 12px 0; border-top: 1px solid var(--line); }
.tl-day:first-child { border-top: 0; padding-top: 0; }
.tl-date { width: 54px; flex: none; text-align: center; }
.tl-date .d { font: 500 26px/1 var(--serif); }
.tl-date .w { font-size: 11px; letter-spacing: 1.4px; text-transform: uppercase; color: var(--gold); font-weight: 600; margin-bottom: 3px; }
.tl-items { flex: 1; min-width: 0; display: grid; gap: 8px; }
.tl-item { display: flex; gap: 10px; align-items: baseline; }
.tl-item .time { color: var(--gold-2); font-size: 12.5px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.tl-item .dot { transform: translateY(-1px); }
.tl-item.k-birthday .dot { background: var(--violet); } .tl-item.k-anniversary .dot { background: var(--red); } .tl-item.k-calendar .dot { background: var(--blue); }

.q-item { display: flex; gap: 12px; align-items: flex-start; }
.q-num { flex: none; min-width: 40px; height: 26px; border-radius: 8px; display: grid; place-items: center; font-size: 12px; font-weight: 700; color: var(--gold-2); background: rgba(214,178,106,.1); border: 1px solid var(--line-gold); font-variant-numeric: tabular-nums; }
.q-text { flex: 1; font-size: 14.5px; color: var(--text); }

.pkg + .pkg { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.pkg-name { font-weight: 600; }
.pkg-status { color: var(--text-2); font-size: 13px; margin: 2px 0 12px; }
.stages { display: grid; grid-template-columns: repeat(5, 1fr); gap: 4px; }
.stage { height: 4px; border-radius: 4px; background: rgba(255,255,255,.09); }
.stage.on { background: linear-gradient(90deg, var(--gold-3), var(--gold-2)); box-shadow: 0 0 10px rgba(214,178,106,.35); }
.stage-labels { display: grid; grid-template-columns: repeat(5, 1fr); gap: 4px; margin-top: 6px; font-size: 10px; color: var(--faint); letter-spacing: .2px; }
.stage-labels span.on { color: var(--gold-2); font-weight: 600; }
.stale { margin-top: 10px; font-size: 12px; color: #f2c9a0; }
.foot { text-align: center; color: var(--faint); font-size: 11.5px; margin-top: 28px; letter-spacing: .4px; }

/* ---------- trips ---------- */
.trip-card { padding: 0; overflow: hidden; }
.hero { position: relative; aspect-ratio: 16 / 9; overflow: hidden; }
.hero svg { width: 100%; height: 100%; display: block; }
.hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, rgba(9,9,10,.85)); }
.hero .over { position: absolute; left: 18px; right: 18px; bottom: 14px; z-index: 2; }
.hero .over h3 { font: 500 26px/1.15 var(--serif); margin: 6px 0 0; text-shadow: 0 2px 20px rgba(0,0,0,.5); }
.trip-meta { padding: 14px 18px 16px; display: flex; justify-content: space-between; align-items: center; gap: 10px; color: var(--text-2); font-size: 13.5px; }
.trip-card.past .hero svg { filter: saturate(.55) brightness(.8); }
.detail-hero { margin: 0 calc(-18px - var(--sar)) 0 calc(-18px - var(--sal)); margin-top: calc(-14px - var(--sat)); aspect-ratio: auto; height: calc(300px + var(--sat)); }
.detail-hero .over { bottom: 22px; }
.detail-hero .over h3 { font-size: 36px; }
.detail-back { position: absolute; top: calc(var(--sat) + 12px); left: calc(var(--sal) + 14px); z-index: 3; }
.detail-back .back-btn { background: rgba(10,10,10,.45); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); border-color: rgba(255,255,255,.12); }
.glance { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.glance .g { padding: 14px; border-radius: var(--r-sm); background: var(--glass); border: 1px solid var(--line); }
.glance .g.wide { grid-column: 1 / -1; }
.g .k { font-size: 11px; text-transform: uppercase; letter-spacing: 1.5px; color: var(--gold); font-weight: 600; margin-bottom: 4px; }
.g .v { font-size: 14px; color: var(--text); }
.flight { padding: 0; overflow: hidden; }
.flight .fhead { display: flex; justify-content: space-between; align-items: center; padding: 14px 18px; border-bottom: 1px dashed rgba(255,255,255,.12); font-size: 13px; color: var(--text-2); }
.flight .route { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 16px 18px 6px; gap: 10px; }
.flight .iata { font: 500 34px/1 var(--serif); letter-spacing: 1px; }
.flight .route .r { text-align: right; }
.flight .plane { color: var(--gold); display: flex; align-items: center; gap: 6px; }
.flight .plane i { width: 34px; height: 1px; background: linear-gradient(90deg, transparent, var(--gold)); }
.flight .plane i:last-child { background: linear-gradient(90deg, var(--gold), transparent); }
.flight .times { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 4px 18px 16px; font-size: 12.5px; color: var(--text-2); }
.flight .times div:last-child { text-align: right; }
.flight .fnote { padding: 10px 18px 14px; font-size: 12.5px; color: var(--muted); border-top: 1px solid var(--line); }
.notes li { position: relative; padding-left: 18px; margin: 8px 0; color: var(--text-2); font-size: 14px; }
.notes li::before { content: ""; position: absolute; left: 2px; top: 9px; width: 5px; height: 5px; border-radius: 50%; background: var(--gold-3); }
.notes ul { padding-left: 4px; list-style: none; margin: 4px 0; }
.notes { list-style: none; margin: 0; padding: 0; }
.notes b, .md b { color: var(--text); font-weight: 600; }
.lbl { color: var(--gold-2); font-weight: 600; }
.days { position: relative; }
.day { display: flex; gap: 14px; position: relative; padding-bottom: 18px; }
.day::before { content: ""; position: absolute; left: 20px; top: 44px; bottom: 0; width: 1px; background: linear-gradient(180deg, var(--line-gold), transparent); }
.day:last-child::before { display: none; }
.day .badge { width: 42px; height: 42px; flex: none; border-radius: 50%; display: grid; place-items: center; text-align: center; font-size: 10px; line-height: 1.05; font-weight: 700; letter-spacing: .5px; color: var(--gold-2); border: 1px solid var(--line-gold); background: radial-gradient(circle at 50% 30%, rgba(214,178,106,.18), rgba(214,178,106,.03)); }
.day .badge b { display: block; font: 500 16px/1 var(--serif); color: var(--text); }
.day .body h4 { margin: 2px 0 4px; font: 500 16px/1.25 var(--serif); }
.day .body p { margin: 0; color: var(--text-2); font-size: 14px; }
.check { display: flex; gap: 12px; align-items: flex-start; padding: 12px 0; border-top: 1px solid var(--line); cursor: pointer; }
.check:first-child { border-top: 0; padding-top: 2px; }
.check input { position: absolute; opacity: 0; pointer-events: none; }
.check .box { width: 24px; height: 24px; flex: none; border-radius: 8px; border: 1.5px solid rgba(214,178,106,.5); display: grid; place-items: center; transition: all .2s var(--ease); margin-top: 1px; }
.check .box svg { width: 14px; height: 14px; opacity: 0; transform: scale(.4); transition: all .25s var(--ease); color: #1a1408; }
.check input:checked + .box { background: linear-gradient(180deg, #f1d9a0, #c99d4f); border-color: transparent; }
.check input:checked + .box svg { opacity: 1; transform: none; }
.check .ct { font-size: 14.5px; color: var(--text); transition: color .2s; }
.check input:checked ~ .ct { color: var(--faint); text-decoration: line-through; text-decoration-color: rgba(255,255,255,.2); }
.progress { height: 6px; border-radius: 6px; background: rgba(255,255,255,.07); overflow: hidden; margin: 2px 0 14px; }
.progress i { display: block; height: 100%; background: linear-gradient(90deg, var(--gold-3), var(--gold-2)); border-radius: 6px; transition: width .5s var(--ease); }
details.more-facts summary { cursor: pointer; color: var(--gold-2); font-size: 14px; list-style: none; display: flex; justify-content: space-between; align-items: center; }
details.more-facts summary::-webkit-details-marker { display: none; }
details.more-facts[open] summary svg { transform: rotate(90deg); }
details.more-facts summary svg { transition: transform .2s; }

/* ---------- people ---------- */
.bday-strip { display: flex; gap: 12px; overflow-x: auto; scrollbar-width: none; margin: 0 -18px; padding: 2px 18px 6px; scroll-snap-type: x mandatory; }
.bday-strip::-webkit-scrollbar { display: none; }
.bday-strip .card + .card { margin-top: 0; }
.bday { flex: 0 0 150px; scroll-snap-align: start; text-align: center; padding: 18px 12px 16px; }
.ring { width: 78px; height: 78px; margin: 0 auto 10px; position: relative; }
.ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.ring .in { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; line-height: 1; }
.ring .in b { font: 500 24px/1 var(--serif); display: block; }
.ring .in small { font-size: 9.5px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--gold); font-weight: 700; }
.bday .n { font: 500 16px/1.2 var(--serif); }
.bday .d { color: var(--muted); font-size: 12.5px; margin-top: 3px; }
.tree { position: relative; }
.tree ul { list-style: none; margin: 0; padding: 0 0 0 18px; position: relative; }
.tree > ul { padding-left: 0; }
.tree li { position: relative; padding: 6px 0 6px 16px; }
.tree > ul > li { padding-left: 0; }
.tree ul ul::before { content: ""; position: absolute; left: 6px; top: 0; bottom: 18px; width: 1px; background: linear-gradient(180deg, var(--line-gold), rgba(214,178,106,.12)); }
.tree ul ul > li::before { content: ""; position: absolute; left: -12px; top: 22px; width: 18px; height: 1px; background: var(--line-gold); }
.node { display: inline-block; padding: 9px 13px; border-radius: 14px; background: var(--glass); border: 1px solid var(--line); max-width: 100%; }
.node.me { border-color: var(--line-gold); background: rgba(214,178,106,.08); box-shadow: 0 0 30px rgba(214,178,106,.08); }
.node .nm { font: 500 15px/1.25 var(--serif); }
.node .nm a { color: var(--text); border-bottom: 1px solid var(--line-gold); }
.node .amp { color: var(--gold); font-family: var(--serif); font-style: italic; margin: 0 4px; }
.node .dt { color: var(--muted); font-size: 12px; margin-top: 2px; }
.node .nt { color: var(--text-2); font-size: 12px; margin-top: 3px; }
.ann { display: flex; align-items: center; gap: 14px; }
.ann .yrs { width: 56px; height: 56px; flex: none; border-radius: 50%; display: grid; place-items: center; font: 500 22px var(--serif); color: var(--gold-2); border: 1px solid var(--line-gold); background: radial-gradient(circle, rgba(214,178,106,.15), transparent 70%); }
.people-core { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.people-core .card { margin: 0 !important; padding: 14px; }
.people-core .card .card-title { font-size: 15.5px; }
.people-core .card p { margin: 4px 0 0; font-size: 12.5px; color: var(--muted); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* ---------- house ---------- */
.car { overflow: hidden; }
.car .sil { height: 92px; margin: -6px -6px 6px; }
.car .sil svg { width: 100%; height: 100%; }
.plate { display: inline-flex; flex-direction: column; align-items: center; padding: 4px 12px 5px; border-radius: 7px; background: linear-gradient(180deg, #f6f3ea, #dcd6c8); color: #1c2338; border: 2px solid #2b3550; box-shadow: 0 4px 14px rgba(0,0,0,.4); }
.plate small { font: 700 8px/1 var(--sans); letter-spacing: 2px; color: #8b2e2a; }
.plate b { font: 700 19px/1.1 "SF Mono", ui-monospace, Menlo, monospace; letter-spacing: 2px; }
.smart { overflow: hidden; border-color: var(--line-gold); background: radial-gradient(500px 220px at 100% 0, rgba(214,178,106,.14), transparent 70%), linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.02)); }
.dev-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 16px 0 6px; }
.dev { padding: 12px 8px; border-radius: 14px; background: rgba(255,255,255,.035); border: 1px solid var(--line); text-align: center; opacity: .78; }
.dev svg { width: 26px; height: 26px; color: var(--gold-2); margin-bottom: 6px; }
.dev .dn { font-size: 12px; font-weight: 600; }
.dev .dd { font-size: 10.5px; color: var(--muted); margin-top: 2px; line-height: 1.25; }
.dev .off { font-size: 9.5px; letter-spacing: 1px; text-transform: uppercase; color: var(--faint); margin-top: 6px; }
.pets { display: flex; gap: 10px; margin: 10px 0 8px; }
.pet { flex: 1; padding: 14px; border-radius: 16px; text-align: center; background: radial-gradient(circle at 50% 0, rgba(214,178,106,.12), rgba(255,255,255,.03) 70%); border: 1px solid var(--line); }
.pet svg { width: 34px; height: 34px; color: var(--gold-2); }
.pet .pn { font: 500 18px/1.2 var(--serif); margin-top: 6px; }
.svc .role { font-size: 11px; letter-spacing: 1.4px; text-transform: uppercase; color: var(--gold); font-weight: 600; }
.svc .nm { font-weight: 600; margin: 1px 0; }
.svc .dt { color: var(--muted); font-size: 13px; }
.svc .last { color: var(--text-2); font-size: 12px; text-align: right; white-space: nowrap; }

/* ---------- money ---------- */
.banner { display: flex; gap: 10px; align-items: center; padding: 12px 14px; border-radius: 14px; font-size: 12.5px; color: var(--text-2); background: rgba(255,255,255,.03); border: 1px dashed rgba(255,255,255,.12); margin-bottom: 4px; }
.alert { border-color: rgba(229,128,111,.3); background: radial-gradient(400px 200px at 100% 0, rgba(229,128,111,.12), transparent 70%), linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.02)); }
.steps { list-style: none; padding: 0; margin: 14px 0 0; position: relative; }
.steps li { position: relative; padding: 0 0 14px 24px; font-size: 13.5px; color: var(--text-2); }
.steps li::before { content: ""; position: absolute; left: 4px; top: 6px; width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid var(--red); background: var(--bg); }
.steps li::after { content: ""; position: absolute; left: 8.5px; top: 17px; bottom: 0; width: 1px; background: rgba(229,128,111,.3); }
.steps li:last-child::after { display: none; }
.steps li:last-child::before { background: var(--red); box-shadow: 0 0 10px rgba(229,128,111,.6); }
.renew { display: flex; gap: 14px; align-items: center; }
.renew .when { width: 62px; flex: none; text-align: center; padding: 8px 0; border-radius: 12px; background: rgba(255,255,255,.04); border: 1px solid var(--line); }
.renew .when b { display: block; font: 500 20px/1 var(--serif); }
.renew .when small { font-size: 10px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--gold); font-weight: 700; }
.renew .when.soon { border-color: rgba(229,128,111,.4); background: rgba(229,128,111,.08); }
.gap { display: flex; gap: 10px; align-items: flex-start; padding: 10px 0; border-top: 1px dashed rgba(255,255,255,.08); font-size: 14px; color: var(--text-2); }
.gap:first-child { border-top: 0; padding-top: 0; }
.gap svg { flex: none; color: var(--gold); margin-top: 2px; }

/* ---------- search & page ---------- */
.search-box { position: sticky; top: calc(var(--sat) + 6px); z-index: 5; margin-bottom: 14px; }
.search-box input { width: 100%; height: 52px; border-radius: 16px; padding: 0 44px 0 48px; font-size: 16.5px; background: rgba(24,24,27,.85); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); border: 1px solid var(--line); outline: none; }
.search-box input:focus { border-color: var(--line-gold); box-shadow: 0 0 0 4px var(--gold-glow); }
.search-box svg.lens { position: absolute; left: 16px; top: 15px; color: var(--muted); }
.search-box .clear { position: absolute; right: 8px; top: 8px; width: 36px; height: 36px; display: grid; place-items: center; color: var(--muted); }
.res { display: block; padding: 14px 16px; color: var(--text); }
.res + .res { margin-top: 10px; }
.res .rt { font: 500 16.5px/1.25 var(--serif); }
.res .rf { font-size: 11px; letter-spacing: 1.3px; text-transform: uppercase; color: var(--gold); font-weight: 600; margin-bottom: 3px; }
.res .rs { font-size: 13px; color: var(--muted); margin-top: 4px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
mark { background: rgba(214,178,106,.28); color: var(--gold-2); border-radius: 3px; padding: 0 1px; }
.folder-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.folder-grid .card { margin: 0 !important; padding: 14px; }
.md { color: var(--text-2); font-size: 15px; overflow-wrap: anywhere; }
.md h1 { display: none; }
.md h2 { font: 500 20px/1.25 var(--serif); color: var(--text); margin: 26px 0 10px; }
.md h3 { font: 500 17px/1.25 var(--serif); color: var(--text); margin: 18px 0 8px; }
.md p { margin: 10px 0; }
.md ul, .md ol { padding-left: 20px; margin: 8px 0; }
.md li { margin: 5px 0; }
.md li::marker { color: var(--gold-3); }
.md hr { border: 0; border-top: 1px solid var(--line); margin: 20px 0; }
.md code { font: 13px ui-monospace, Menlo, monospace; background: rgba(255,255,255,.06); padding: 1px 5px; border-radius: 5px; }
.md blockquote { margin: 10px 0; padding: 6px 14px; border-left: 2px solid var(--gold-3); color: var(--muted); }
.table-wrap { overflow-x: auto; margin: 10px -4px; border-radius: 14px; border: 1px solid var(--line); background: rgba(255,255,255,.02); }
.md table { border-collapse: collapse; width: 100%; font-size: 13.5px; }
.md th { text-align: left; font-size: 10.5px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--gold); font-weight: 700; padding: 10px 12px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.md td { padding: 10px 12px; border-top: 1px solid var(--line); vertical-align: top; }
.md td:not(:first-child) { color: var(--muted); font-size: 12px; white-space: nowrap; }
.md tr:first-child td { border-top: 0; }
.wl { color: var(--gold-2); border-bottom: 1px solid var(--line-gold); }
.page-meta { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 4px; }

/* ---------- sheet ---------- */
#sheet-wrap { position: fixed; inset: 0; z-index: 60; pointer-events: none; }
#sheet-wrap .scrim { position: absolute; inset: 0; background: rgba(0,0,0,.55); opacity: 0; transition: opacity .3s; -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
#sheet { position: absolute; left: 0; right: 0; bottom: 0; max-height: 88vh; overflow-y: auto; -webkit-overflow-scrolling: touch; margin: 0 auto; max-width: 760px;
  padding: 10px calc(var(--sar) + 20px) calc(var(--sab) + 26px) calc(var(--sal) + 20px); border-radius: 26px 26px 0 0;
  background: linear-gradient(180deg, #1a1a1d, #121214); border: 1px solid var(--line); border-bottom: 0; box-shadow: 0 -20px 60px rgba(0,0,0,.6);
  transform: translateY(105%); transition: transform .42s var(--ease); }
#sheet-wrap.open { pointer-events: auto; }
#sheet-wrap.open .scrim { opacity: 1; }
#sheet-wrap.open #sheet { transform: none; }
.grab { width: 40px; height: 5px; border-radius: 5px; background: rgba(255,255,255,.18); margin: 0 auto 16px; }
.sheet-h { font: 500 23px/1.2 var(--serif); margin: 8px 0 10px; }
.vs { display: grid; gap: 10px; margin: 14px 0; }
.vs .v { padding: 12px 14px; border-radius: 14px; background: var(--glass); border: 1px solid var(--line); font-size: 14px; color: var(--text-2); }
.vs .v b { display: block; font-size: 11px; letter-spacing: 1.4px; text-transform: uppercase; color: var(--gold); margin-bottom: 4px; }
.vs .or { text-align: center; color: var(--faint); font-family: var(--serif); font-style: italic; }
.btn-ghost { display: flex; width: 100%; align-items: center; justify-content: center; gap: 8px; height: 50px; border-radius: 15px; background: var(--glass); border: 1px solid var(--line); font-weight: 600; color: var(--text); margin-top: 10px; }
.btn-ghost.danger { color: #f4b2a5; border-color: rgba(229,128,111,.3); }
.link-pill { display: inline-flex; align-items: center; gap: 6px; margin: 4px 6px 0 0; padding: 7px 12px; border-radius: 99px; background: rgba(214,178,106,.08); border: 1px solid var(--line-gold); color: var(--gold-2); font-size: 13px; }

@media (min-width: 640px) {
  .countdowns { grid-template-columns: 1fr 1fr; }
  .countdowns > .cd { grid-column: 1 / -1; min-height: 190px; }
  .cd-row { grid-column: 1 / -1; }
  .trips-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
  .trips-grid .card + .card { margin-top: 0; }
  .dev-grid { grid-template-columns: repeat(6, 1fr); }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }

.redact { display: inline-block; padding: 0 6px; border-radius: 6px; font-size: .82em; letter-spacing: .3px; color: var(--muted); background: rgba(255,255,255,.06); border: 1px dashed rgba(255,255,255,.14); vertical-align: 1px; }
@media (max-width: 380px) { #tabs a { font-size: 9.5px; letter-spacing: 0; } }
.cd .art::after { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, rgba(9,9,10,.72), rgba(9,9,10,.25) 55%, rgba(9,9,10,0) 80%); }
.search-box input::-webkit-search-cancel-button, .search-box input::-webkit-search-decoration { -webkit-appearance: none; appearance: none; }
