/* People Plaza look: one set of tokens and surfaces shared by every page.
   Loaded after each page's own styles so it wins ties. Keep the playful plaza; make the shell around it crisp. */
:root{
  --bg:#F3F6F7; --surface:#FFFFFF; --surface-2:#F7F9FA; --ink:#0F1A1F; --muted:#5D6D74; --line:#E2E8EB; --line-2:#CFD9DD;
  --accent:#0E8C9B; --accent-2:#1AA6B5; --accent-ink:#FFFFFF; --accent-soft:#E3F3F5; --soft:#E3F3F5;
  --sun:#F2A93B; --warn:#B64E1E; --heart:#D4476E;
  --sea:#C9E2E9; --sea-deep:#ADD0DA; --grass:#A9D48C; --sand:#EAD9AD;
  --wall:#FBFDFD; --wall-edge:#C3D3D8; --roof:#2C5561; --roof-ink:#FFFFFF; --window:#DCEDF2; --cross:#D2463F;
  --chip-s:55%; --chip-bg-l:91%; --chip-fg-l:26%;
  --shadow:0 1px 2px rgba(15,26,31,.05),0 10px 30px -18px rgba(15,26,31,.28);
  --shadow-lg:0 2px 6px rgba(15,26,31,.06),0 24px 60px -24px rgba(15,26,31,.35);
  --ring:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent);
  --display:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  --body:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  --r:16px; --r-lg:22px; --r-sm:11px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0B1114; --surface:#121A20; --surface-2:#172128; --ink:#E9EFF1; --muted:#8E9FA7; --line:#213039; --line-2:#2D3F49;
  --accent:#3ED3DF; --accent-2:#5BDDE7; --accent-ink:#04252B; --accent-soft:#11303A; --soft:#11303A;
  --sun:#F3B853; --warn:#F09A62; --heart:#F07C9C;
  --sea:#13333E; --sea-deep:#0E2730; --grass:#2F5A3B; --sand:#55503A;
  --wall:#1C2C34; --wall-edge:#355059; --roof:#7CC5D0; --roof-ink:#08242A; --window:#25424C; --cross:#F2746D;
  --chip-s:32%; --chip-bg-l:22%; --chip-fg-l:86%;
  --shadow:0 1px 0 rgba(255,255,255,.03),0 12px 32px -18px rgba(0,0,0,.75);
  --shadow-lg:0 1px 0 rgba(255,255,255,.04),0 28px 70px -28px rgba(0,0,0,.85);
  color-scheme:dark;
}}
:root[data-theme="dark"]{
  --bg:#0B1114; --surface:#121A20; --surface-2:#172128; --ink:#E9EFF1; --muted:#8E9FA7; --line:#213039; --line-2:#2D3F49;
  --accent:#3ED3DF; --accent-2:#5BDDE7; --accent-ink:#04252B; --accent-soft:#11303A; --soft:#11303A;
  --sun:#F3B853; --warn:#F09A62; --heart:#F07C9C;
  --sea:#13333E; --sea-deep:#0E2730; --grass:#2F5A3B; --sand:#55503A;
  --wall:#1C2C34; --wall-edge:#355059; --roof:#7CC5D0; --roof-ink:#08242A; --window:#25424C; --cross:#F2746D;
  --chip-s:32%; --chip-bg-l:22%; --chip-fg-l:86%;
  --shadow:0 1px 0 rgba(255,255,255,.03),0 12px 32px -18px rgba(0,0,0,.75);
  --shadow-lg:0 1px 0 rgba(255,255,255,.04),0 28px 70px -28px rgba(0,0,0,.85);
  color-scheme:dark;
}

body{font-family:var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,.nm,.evn,.wz-q,.island-name{font-family:var(--display);letter-spacing:-.02em}
h1{font-weight:800}
h2{font-weight:800;font-size:1.3rem}
h3{font-weight:700}
:focus-visible{outline:none;box-shadow:var(--ring)}

/* ---- app shell ---- */
.top{padding:14px 16px 12px;gap:10px;border-bottom:1px solid var(--line);background:var(--surface)}
.brand h1{font-size:1.45rem}
.meta{font-size:.78rem}
.search{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:0 12px;transition:box-shadow .15s,border-color .15s}
.search:focus-within{border-color:var(--accent);box-shadow:var(--ring)}
.search input{padding:11px 0}
main#view{padding:18px 16px 30px}
.tabs{background:var(--surface);border-top:1px solid var(--line);padding:0 4px}
.tab{margin:6px 2px 8px;padding:6px 2px;border-radius:14px;gap:3px;font-weight:600;color:var(--muted);transition:background .15s,color .15s}
.tab[aria-current="page"]{background:var(--accent-soft);color:var(--accent);font-weight:700}
.tab.add span.plus{width:42px;height:30px;border-radius:12px;background:linear-gradient(180deg,var(--accent-2),var(--accent));color:var(--accent-ink);box-shadow:0 6px 14px -8px var(--accent)}
.tab .count{top:2px}

/* ---- controls ---- */
.btn{border-radius:var(--r-sm);padding:10px 15px;font-weight:700;border:1px solid var(--line-2);background:var(--surface);transition:transform .12s,box-shadow .15s,background .15s,border-color .15s,filter .15s}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn:active{transform:translateY(1px)}
.btn.primary,.btn.primary:hover{background:linear-gradient(180deg,var(--accent-2),var(--accent));color:var(--accent-ink);border-color:transparent;box-shadow:0 8px 18px -10px var(--accent)}
.btn.primary:hover{filter:brightness(1.06)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}
.btn.ghost:hover{background:var(--surface-2);color:var(--ink);border-color:transparent}
.btn.danger{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,transparent);background:transparent}
.btn.sm{padding:7px 11px;font-size:.85rem;border-radius:10px}
.btn.big{font-size:1.05rem;padding:14px 24px;border-radius:14px}
.seg{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:3px}
.seg button{border-radius:9px;font-weight:600}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);font-weight:800;box-shadow:var(--shadow)}
.linkbtn{color:var(--accent);font-weight:700}
.chip{font-weight:600;font-size:.82rem;padding:5px 11px}
.chip.off{border-color:var(--line-2)}
.field,.f,.pp-form .k{color:var(--muted);font-weight:600;font-size:.84rem}
.field input,.field textarea,.field select,.inline select,.slot select,.slot input,.wz-input,.qcard textarea,.capture textarea,.pp-form input,.pp-form textarea,.pp-form select,.pp-link input,.f input,.f textarea,.f select,.evtools input,.find input,.wz-input{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink);transition:border-color .15s,box-shadow .15s}
.field input:focus,.field textarea:focus,.field select:focus,.wz-input:focus,.qcard textarea:focus,.capture textarea:focus,.pp-form input:focus,.pp-form textarea:focus,.pp-form select:focus,.f input:focus,.f textarea:focus,.f select:focus,.evtools input:focus,.find input:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}
.check input{accent-color:var(--accent)}
.sec > .k,.pp-sec .k,.ask .k,.take .k,.topic .k,.rv .k{font-size:.78rem;font-weight:700;letter-spacing:0;text-transform:none;color:var(--muted)}
.evk,.kind{font-size:.8rem;font-weight:700;letter-spacing:0;text-transform:none;color:var(--accent)}

/* ---- surfaces ---- */
.panel,.qcard,.intro,.mem,.evcard,.tcard,.webwrap,.bdstrip,.unseated,.card,.pc,.hit,.tlist div,.pp-card,.pp-invite,.confirm,.welcome,.steps li,.privacy-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}
.evcard{transition:transform .15s,box-shadow .15s,border-color .15s}
.evcard:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:var(--shadow-lg)}
.capture,.menu .btn,.note-local{border-radius:var(--r)}
.capture{background:var(--surface-2);border:1px solid var(--line)}
.menu .btn{padding:14px 16px;font-weight:700}
#sheet,.sh,.pp-sheet{background:var(--surface);box-shadow:var(--shadow-lg);border:1px solid var(--line)}
#scrim,#pp-modal,#sheet-scrim{background:rgba(6,12,15,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.sheet-head h2{font-size:1.35rem}
.x{background:var(--surface-2)!important;border-radius:999px!important}
.toast{border-radius:12px;box-shadow:var(--shadow-lg)}
.island-name{font-weight:700;box-shadow:var(--shadow);border:1px solid var(--line)}
.island-name .n{font-weight:600}
.plaza{border-radius:var(--r-lg);box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}
.tag{font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.bubble{box-shadow:var(--shadow-lg);border:1px solid var(--line)}
.row{border-radius:12px}
.row:hover{background:var(--surface-2)}
.empty h2{font-size:1.4rem}
.tnum{background:linear-gradient(180deg,var(--accent-2),var(--accent))}
.tcard.pickable{border-style:solid}
.pickbar{border-radius:14px;box-shadow:var(--shadow)}
.pp-acct{border-color:var(--line-2);box-shadow:var(--shadow)}
.pp-qr{border:1px solid var(--line)}

/* ---- public pages ---- */
.nav .btn{border-radius:999px}
.logo{font-family:var(--display);font-weight:800;letter-spacing:-.02em}
.hero h1{font-weight:800;letter-spacing:-.035em;line-height:1.02}
.hero p.lead{font-weight:500}
.hero img{border-radius:var(--r-lg);filter:none;box-shadow:var(--shadow-lg)}
.sec>h2{font-weight:800;letter-spacing:-.03em}
.card{padding:22px;transition:transform .15s,box-shadow .15s,border-color .15s}
.card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.ico{background:var(--accent-soft);color:var(--accent);border-radius:12px}
.steps li::before{background:linear-gradient(180deg,var(--accent-2),var(--accent));color:var(--accent-ink)}
footer{color:var(--muted)}

/* ---- Ice Breaker guest page ---- */
.ib h1{font-weight:800;letter-spacing:-.035em;line-height:1.02}
.hostbar{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:14px;padding:10px 12px}
.hostbar b{color:var(--accent)}
.hostbar select{border:1px solid var(--line-2);background:var(--surface-2);border-radius:10px;padding:7px 10px}
.topic{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:var(--r-lg);position:relative;overflow:hidden}
.topic::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:linear-gradient(180deg,var(--sun),var(--heart))}
.topic .k{color:var(--muted)}
.topic h2{font-weight:800;letter-spacing:-.025em}
.bar{height:10px;background:var(--line)}
.stat{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);font-weight:600}
.grp>h2{font-size:1.1rem;font-weight:800}
.grp>h2 .n{font-family:var(--body);font-weight:700;background:var(--accent-soft);color:var(--accent)}
.pc{padding:18px;gap:12px}
.pc.mine{border-color:var(--accent);box-shadow:var(--shadow),0 0 0 3px var(--accent-soft)}
.pc.new{box-shadow:var(--shadow),0 0 0 3px color-mix(in srgb,var(--sun) 45%,transparent)}
.pc .nm{font-size:1.25rem;font-weight:800}
.ph{box-shadow:0 0 0 3px var(--surface),0 0 0 4px var(--line-2)}
.facts.rows{display:grid;gap:5px}
.facts.rows .fact{font-size:.95rem;line-height:1.45}
.facts.rows .fact .fl{color:var(--muted);font-weight:600}
.take,.ask{border-radius:14px;border:1px solid var(--line);background:var(--surface-2)}
.ask{border-color:color-mix(in srgb,var(--sun) 50%,var(--line));background:color-mix(in srgb,var(--sun) 12%,var(--surface))}
.ask p{font-weight:700}
.pc .edit{font-weight:700;color:var(--accent)}
.mycard{background:var(--accent-soft);border-radius:12px;color:var(--ink)}
.cta .note{font-weight:500}
.closed{background:var(--surface-2);border:1px solid var(--line)}
.empty{border-color:var(--line-2)}

/* ---- guest table finder ---- */
.g h1{font-weight:800;letter-spacing:-.03em}
.hit .tbl{font-weight:800;letter-spacing:-.02em}
.find input{font-size:19px;padding:14px 16px;border-radius:14px}

/* ---- plaza: cleaner ground, same islands ---- */
.plaza{background:var(--surface);background-image:radial-gradient(900px 420px at 15% -10%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 65%),radial-gradient(700px 380px at 95% 110%,color-mix(in srgb,var(--grass) 16%,transparent),transparent 65%);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:20px 18px 28px}
.islands{gap:28px 22px}
.isle{margin:4px;border-radius:30px;background:linear-gradient(180deg,color-mix(in srgb,var(--grass) 72%,var(--surface)),color-mix(in srgb,var(--grass) 48%,var(--surface)));box-shadow:0 0 0 1px color-mix(in srgb,var(--grass) 45%,var(--line)),var(--shadow)}
.isle.nowhere{background:var(--surface-2);background-image:none;box-shadow:0 0 0 1px var(--line-2)}
.clump{background:color-mix(in srgb,var(--surface) 28%,transparent);border:1px solid color-mix(in srgb,var(--surface) 30%,transparent);border-radius:20px}
.clabel{font-weight:700;font-size:.72rem;opacity:.72}
.island-name{padding:6px 7px 6px 14px;font-size:.98rem}
.island-name .n{background:var(--surface-2);color:var(--muted)}
.tag{font-weight:700;border-radius:8px;padding:2px 7px;background:var(--surface);color:var(--ink);box-shadow:0 2px 6px rgba(0,0,0,.18)}
.bdstrip{border-radius:var(--r)}
.bldgs{gap:34px 22px}
.bldg{filter:drop-shadow(0 10px 18px rgba(0,0,0,.18))}
.subroom,.room{border-radius:14px}

/* ---- family web: thin lines, dot ends, quiet rings ---- */
.webwrap{border-radius:var(--r-lg);box-shadow:var(--shadow);background:var(--surface)}
.webwrap .tree{border-top:1px solid var(--line)}
.tree-head{padding:16px 18px 0}
.tree-head h3{font-size:1.15rem;font-weight:800;letter-spacing:-.02em}
.edge{stroke:var(--line-2);stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;opacity:1}
.edge.virtual{opacity:.5;stroke-dasharray:3 5}
.edge.spouse,.edge.partner,.edge.engaged{stroke:var(--heart);stroke-width:2.25;opacity:1}
.edge.engaged{opacity:.7;stroke-dasharray:5 5}
.edge.divorced{stroke:var(--line-2);stroke-width:1.75;opacity:.9;stroke-dasharray:2 5}
.edge.sibling{stroke:var(--accent);opacity:.8}
.arrdot{fill:var(--line-2)}
.knot{fill:var(--heart)}
.knot.ex{fill:var(--surface);stroke:var(--line-2);stroke-width:1.75}
.node .ring{fill:var(--surface-2);stroke:var(--line-2);stroke-width:1.75}
.node.me .ring{stroke:var(--sun);stroke-width:3}
.node.guest .ring{stroke-dasharray:4 4;stroke:var(--accent)}
.node:hover .ring,.node:focus .ring{stroke:var(--accent);stroke-width:3}
.node.focus .ring,.node.hlsrc .ring{stroke:var(--accent);stroke-width:3.5}
.node .nlabel{font-family:var(--display);font-weight:700;font-size:12.5px;letter-spacing:-.01em}
.elabel{font-weight:600;font-size:10.5px}
.node .rlabel{font-weight:600}
.focusbar select{border:1px solid var(--line-2);background:var(--surface-2);border-radius:var(--r-sm)}
.legend{font-weight:600}
.loose-p{background:var(--surface-2);border-color:var(--line-2);font-weight:600}

/* Ad rails: fixed to the screen edges, only when there is empty margin beside the content; never over anything */
.ad-rail{display:none;position:fixed;top:96px;width:160px;z-index:1}
.ad-rail.left{left:max(12px,calc(50% - 560px - 184px))}.ad-rail.right{right:max(12px,calc(50% - 560px - 184px))}
.ad-rail .ad{width:160px;min-height:600px;background:var(--surface-2,var(--surface));border:1px dashed var(--line-2,var(--line));border-radius:14px;display:grid;align-content:start;justify-items:center;gap:4px;padding:6px}
.ad-rail .lbl{font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
/* A rail only appears once Google has actually put an ad in it (data-ad-status is set by AdSense); otherwise nothing is drawn */
@media (min-width:1500px){.ad-rail:has(ins[data-ad-status="filled"]){display:block}}
.ad-rail .ad{background:transparent;border:0;padding:0}
