/* Släktboken · utseende. Varmt papper, serif för namn, lugna rörelser. */
:root{
  /* samma formspråk som framsidan (site/): ljus grå mark, nästan svart text, en rosa accent */
  --paper:#f7f7f5; --paper2:#ebebe8; --card:#ffffff; --ink:#16181a; --muted:#666662; --line:#e2e2de; --line2:#cfcfca;
  --gold:#a70956; --gold-soft:#fbe4ee; --gold-line:#d0106f; --accent:#a70956;
  --ok:#3f7a56; --ok-bg:#e2efe6; --info:#a3640f; --info-bg:#f6ead8; --maybe:#4f7184; --maybe-bg:#e1eaef; --unk:#8a877f; --unk-bg:#ecebe7;
  --m:#ebebe8; --k:#ebebe8; --n:#ebebe8; --danger:#b42318;
  --serif:"Funnel Display",ui-sans-serif,system-ui,sans-serif;
  --sans:"Funnel Sans",ui-sans-serif,-apple-system,system-ui,sans-serif;
  --shadow:0 1px 2px rgba(0,0,0,.05);
  --shadow-lg:0 2px 4px rgba(0,0,0,.04),0 16px 40px -16px rgba(0,0,0,.22);
  --glass:#f7f7f5;
  --drawer-w:400px; --gap:12px; --bar:64px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--accent)}
[hidden]{display:none!important}
kbd{font:600 11px var(--sans);border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:0 5px;background:var(--card);color:var(--muted)}
:focus-visible{outline:2px solid var(--gold-line);outline-offset:2px}

/* ---------- ytan ---------- */
.stage{position:fixed;inset:0;overflow:hidden;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;
  background-color:var(--paper);
  background-image:radial-gradient(circle,rgba(0,0,0,.13) 1px,transparent 1.4px);background-size:32px 32px}
.stage.grabbing{cursor:grabbing}
.stage.grabbing .card{cursor:grabbing}
.world{position:absolute;left:0;top:0;width:0;height:0;transform-origin:0 0}
.edges{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible;pointer-events:none}
.edges path{fill:none;stroke:var(--line2);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;transition:stroke .35s,opacity .35s,stroke-width .35s}
.edges .fe.on,.edges .pl.on{stroke:var(--gold-line);stroke-width:2.8}
.edges .far{opacity:.38}
.edges .far-pl{stroke-dasharray:5 5}
.edges .knot{fill:var(--paper);stroke:var(--line2);stroke-width:1.7;transition:opacity .35s}

/* ---------- personkort ---------- */
.card{position:absolute;display:flex;gap:11px;align-items:center;padding:10px 14px 10px 16px;text-align:left;
  background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);cursor:pointer;
  transition:opacity .35s ease,transform .25s ease,box-shadow .25s ease,border-color .25s ease,filter .35s ease}
.card::before{content:"";position:absolute;left:5px;top:13px;bottom:13px;width:4px;border-radius:4px;background:var(--unk)}
.card.s-bekräftad::before{background:var(--ok)}.card.s-uppgift::before{background:var(--info)}.card.s-trolig::before{background:var(--maybe)}
.card.s-okänd{border-style:dashed;background:rgba(255,255,255,.55);box-shadow:none}
.card .pip{position:absolute;right:10px;top:10px;width:8px;height:8px;border-radius:50%;background:var(--unk)}
.card.s-bekräftad .pip{background:var(--ok)}.card.s-uppgift .pip{background:var(--info)}.card.s-trolig .pip{background:var(--maybe)}
.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--line2);z-index:3}
.card.far{opacity:.46;filter:saturate(.55)}
.card.far:hover,.card.far:focus-visible{opacity:1;filter:none}
.card.line{border-color:var(--gold-line);box-shadow:0 0 0 1px rgba(208,16,111,.28),var(--shadow)}
.card.pov{border-color:var(--gold);background:#ffffff;transform:scale(1.07);z-index:2;
  box-shadow:0 0 0 2px var(--gold),0 0 0 8px rgba(208,16,111,.16),var(--shadow-lg)}
.card.pov:hover{transform:scale(1.07)}
.mono{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-weight:600;font-size:15px;color:#fff;background:var(--n);letter-spacing:.02em}
.mono.m{background:var(--m)}.mono.k{background:var(--k)}
/* avlidna: ihålig monogramring och ett litet kors vid årtalen */
.card.dec .mono,.mono.dec{background:transparent;color:var(--n);box-shadow:inset 0 0 0 1.6px var(--n)}
.card.dec .mono.m,.mono.m.dec{color:var(--m);box-shadow:inset 0 0 0 1.6px var(--m)}
.card.dec .mono.k,.mono.k.dec{color:var(--k);box-shadow:inset 0 0 0 1.6px var(--k)}
.card .t{min-width:0;display:flex;flex-direction:column;gap:1px;flex:1}
.card .rel{font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:12px}
.card .rel.free{text-transform:none;letter-spacing:0;font-style:italic;font-weight:400;font-size:11.5px}
.card.line .rel,.card.pov .rel{color:var(--gold)}
.card .nm{font-family:var(--serif);font-weight:600;font-size:15.5px;line-height:1.18;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .yr{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:14px}
.card .dag{font-style:normal;margin-right:4px;opacity:.75}
/* detaljnivå: långt utzoomat visas bara namnen, större */
.lod-far .card .rel,.lod-far .card .yr,.lod-far .card .mono,.lod-far .ghost{display:none}
.lod-far .card{justify-content:center;text-align:center;padding:6px 12px 6px 16px}
.lod-far .card .nm{font-size:25px;line-height:1.08}
.lod-tiny .card .nm{font-size:31px;-webkit-line-clamp:2}
.lod-far .card::before{width:7px}
.lod-far .card .pip{display:none}

.ghost{position:absolute;transform:translate(-50%,calc(-100% - 16px));border:1.5px dashed var(--line2);background:rgba(255,255,255,.75);color:var(--muted);border-radius:999px;padding:5px 12px;font-size:12px;white-space:nowrap;transition:.2s}
.ghost::after{content:"";position:absolute;left:50%;top:100%;height:16px;border-left:1.5px dashed var(--line2)}
.ghost:hover{border-color:var(--gold-line);color:var(--ink);background:var(--card)}
.island{position:absolute;border:1.5px dashed var(--line2);border-radius:26px;padding:14px 20px;background:rgba(255,255,255,.4);pointer-events:none;display:flex;flex-direction:column;gap:2px}
.island b{font-family:var(--serif);font-style:italic;font-weight:400;font-size:15px;color:var(--muted)}
.island span{font-size:11.5px;color:var(--muted);opacity:.85}

.rowlabels{position:absolute;left:14px;top:0;pointer-events:none}
.rowlabels span{position:absolute;left:0;top:0;white-space:nowrap;font-family:var(--serif);font-style:italic;font-size:13px;color:var(--muted);background:rgba(247,247,245,.88);padding:2px 9px;border-radius:999px;transition:color .3s}
.rowlabels span.cur{color:var(--gold);font-weight:600}
.empty{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);text-align:center;max-width:380px;cursor:default}
.empty h2{font-family:var(--serif);font-size:26px;margin:0 0 8px}
.empty p{color:var(--muted);line-height:1.55;margin:0 0 18px}

/* ---------- knappar ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:7px 14px;font-size:13.5px;white-space:nowrap;transition:border-color .15s,background .15s}
.btn:hover{border-color:var(--line2)}
.btn.primary{background:var(--ink);color:var(--card);border-color:var(--ink)}
.btn.primary:hover{background:#2a2c2f}
.btn.ghost{background:none;border-color:transparent}
.btn.ghost:hover{background:var(--paper2)}
.btn.danger{color:var(--danger)}
.btn.dangerfill{background:var(--danger);border-color:var(--danger);color:#fff}
.btn:disabled{opacity:.55;cursor:default}
.iconbtn{display:inline-grid;place-items:center;width:34px;height:34px;border:none;background:none;border-radius:50%;color:var(--ink);fill:currentColor;flex:none}
.iconbtn:hover{background:var(--paper2)}
.iconbtn:disabled{opacity:.3;cursor:default;background:none}
.linkbtn{border:none;background:none;color:var(--accent);padding:4px 0;font-size:13px;text-decoration:underline}

/* ---------- toppraden ---------- */
.topbar{position:fixed;top:var(--gap);left:var(--gap);right:var(--gap);z-index:20;display:flex;align-items:center;gap:8px;padding:8px 10px 8px 18px;
  background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}
.brand h1{font-family:var(--serif);font-weight:600;font-size:20px;margin:0;letter-spacing:.01em}
.hist{display:flex;align-items:center;gap:2px;margin-left:10px;min-width:0}
.trail{display:flex;align-items:center;gap:2px;min-width:0;overflow:hidden;margin-left:4px}
.trail button{border:none;background:none;padding:4px 8px;border-radius:999px;color:var(--muted);font-size:13.5px;white-space:nowrap}
.trail button:hover{background:var(--paper2);color:var(--ink)}
.trail button.cur{color:var(--ink);font-weight:600;background:var(--gold-soft)}
.trail i{font-style:normal;color:var(--line2);font-size:13px;white-space:nowrap}
.spacer{flex:1}
.savestate{font-size:12px;color:var(--muted);white-space:nowrap}
.savestate.error{color:var(--danger);font-weight:600}
.pill{font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--paper2);color:var(--muted);white-space:nowrap;cursor:help}
.pill.neon{background:var(--ok-bg);color:var(--ok)}
.pill.browser{background:var(--info-bg);color:var(--info)}
.searchwrap{position:relative;display:flex;align-items:center}
.searchwrap>svg{position:absolute;left:12px;color:var(--muted);pointer-events:none}
.searchwrap input{width:220px;padding:8px 34px 8px 34px;border:1px solid var(--line);border-radius:999px;background:var(--card);font-size:13.5px}
.searchwrap input:focus{outline:none;border-color:var(--gold-line);box-shadow:0 0 0 3px var(--gold-soft)}
.searchwrap input::-webkit-search-cancel-button{display:none}
.searchwrap>kbd{position:absolute;right:10px;pointer-events:none}
.searchwrap input:focus~kbd{display:none}
#results{position:absolute;top:44px;right:0;width:340px;max-width:86vw;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);max-height:60vh;overflow:auto;padding:5px}
#results button{display:flex;gap:10px;align-items:center;width:100%;padding:7px 9px;border:none;background:none;border-radius:10px;text-align:left}
#results button:hover,#results button.hi{background:var(--gold-soft)}
#results .mono{width:30px;height:30px;font-size:12px}
#results b{font-family:var(--serif);font-size:14.5px;display:block}
#results small{color:var(--muted);font-size:12px}
.nohit{padding:10px 12px}
.menu{position:relative}
.menu .pop{display:none;position:absolute;right:0;top:44px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);padding:6px;min-width:230px;z-index:30}
.menu.open .pop{display:block}
.pop button,.pop label{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;background:none;border:none;padding:8px 10px;border-radius:9px;font-size:13.5px;cursor:pointer}
.pop button:hover,.pop label:hover{background:var(--paper2)}
.pop .keys{border-top:1px solid var(--paper2);margin-top:5px;padding:9px 10px 5px;display:grid;gap:5px;font-size:12px;color:var(--muted)}
.pop .keys b{font-size:11px;letter-spacing:.07em;text-transform:uppercase}
.pop .who{padding:8px 10px;border-bottom:1px solid var(--paper2);margin-bottom:5px;display:grid}
.pop .who small,.pop .note{color:var(--muted);font-size:12px}
.pop .note{padding:6px 10px}
#accountBtn.signed::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ok)}
.notice{position:fixed;top:76px;left:50%;transform:translateX(-50%);z-index:19;display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;max-width:min(760px,calc(100vw - 24px));
  background:var(--card);border:1px solid var(--gold-line);border-radius:16px;padding:10px 14px;box-shadow:var(--shadow-lg);font-size:13.5px}
.spin{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- hörnpaneler ---------- */
.hud{position:fixed;z-index:15;background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}
.hud-bl{left:var(--gap);bottom:var(--gap);padding:10px;width:262px}
.legend{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px;font-size:11.5px;color:var(--muted);margin-bottom:8px}
.legend span{display:flex;align-items:center;gap:6px;white-space:nowrap}
.pip{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none;background:var(--unk)}
.pip.bekräftad{background:var(--ok)}.pip.uppgift{background:var(--info)}.pip.trolig{background:var(--maybe)}.pip.okänd{background:var(--unk)}
.mini{display:block;width:100%;height:118px;border-radius:10px;background:var(--paper);border:1px solid var(--paper2);cursor:crosshair;touch-action:none}
.mini .mn{fill:var(--line2)}
.mini .mn.far{fill:#dcdcd7}
.mini .mn.line{fill:var(--gold-line)}
.mini .mn.pov{fill:var(--ink)}
.mini .mv{fill:rgba(208,16,111,.08);stroke:var(--gold);stroke-width:3;vector-effect:non-scaling-stroke;stroke-width:1.5}
.hud-br{right:calc(var(--gap) + var(--drawer-w) + var(--gap));bottom:var(--gap);display:flex;align-items:center;padding:4px;transition:right .3s ease}
.drawer-closed .hud-br{right:var(--gap)}
.drawer-closed .hint-card{left:50%}
.zoompct{font-size:12px;color:var(--muted);min-width:46px;text-align:center;font-variant-numeric:tabular-nums}
.hud .sep{width:1px;height:20px;background:var(--line);margin:0 4px}
.hint-card{position:fixed;left:calc((100vw - var(--drawer-w) - var(--gap)) / 2 + 60px);bottom:22px;transform:translateX(-50%);z-index:16;display:flex;align-items:center;gap:12px;background:var(--ink);color:#f7f7f5;border-radius:999px;padding:8px 8px 8px 18px;font-size:13px;box-shadow:var(--shadow-lg);max-width:calc(100vw - 24px)}
.hint-card .btn{color:#f7f7f5;border-color:rgba(255,255,255,.25)}
.hint-card .btn:hover{background:rgba(255,255,255,.12)}

/* ---------- sidolådan ---------- */
.drawer{position:fixed;top:76px;right:var(--gap);bottom:var(--gap);width:var(--drawer-w);z-index:18;overflow:auto;overscroll-behavior:contain;
  background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-lg);transition:transform .32s cubic-bezier(.3,.7,.2,1)}
.drawer-closed .drawer{transform:translateX(calc(100% + 30px))}
.drawer-tab{position:fixed;top:82px;right:var(--gap);z-index:17;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .2s}
.drawer-closed .drawer-tab{opacity:1;pointer-events:auto}
.dz-head{position:sticky;top:0;z-index:2;display:flex;gap:14px;align-items:center;padding:20px 14px 14px 22px;background:linear-gradient(var(--card) 82%,rgba(255,255,255,0))}
.dz-head .mono{width:56px;height:56px;font-size:21px}
.dz-head .who{flex:1;min-width:0}
.dz-head h2{font-family:var(--serif);font-size:23px;line-height:1.15;margin:0;text-wrap:balance}
.dz-head .sub{color:var(--muted);font-size:13.5px;margin-top:3px}
.dz-body{padding:0 22px 30px}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;padding:3px 10px;border-radius:999px;font-weight:600;margin-right:4px}
.badge .pip{width:7px;height:7px;background:currentColor}
.b-bekräftad{background:var(--ok-bg);color:var(--ok)}.b-uppgift{background:var(--info-bg);color:var(--info)}.b-trolig{background:var(--maybe-bg);color:var(--maybe)}.b-okänd,.b-dec{background:var(--unk-bg);color:#5f5d57}
.facts{margin:16px 0 0;border-top:1px solid var(--line)}
.facts div{display:grid;grid-template-columns:112px 1fr;gap:10px;padding:8px 0;border-bottom:1px solid var(--paper2)}
.facts dt{color:var(--muted)}
.facts dd{margin:0}
.sec{margin-top:22px}
.sec h3{font-family:var(--serif);font-weight:600;font-size:16px;margin:0 0 8px}
.notes{white-space:pre-wrap;line-height:1.62;background:var(--paper);border-radius:12px;padding:11px 13px;user-select:text;-webkit-user-select:text}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:4px 11px 4px 4px;font-size:13px}
.chip:hover{border-color:var(--gold-line);background:#ffffff}
.chip .mono{width:24px;height:24px;font-size:10px}
.chip small{color:var(--muted)}
.relgrp{margin:9px 0}
.relgrp>span{display:block;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.src{display:flex;gap:11px;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:12px;margin:8px 0;font-size:13.5px;background:#ffffff}
.src img{width:66px;min-height:40px;border:1px solid var(--line);border-radius:5px;cursor:zoom-in;flex:none;background:var(--paper)}
.src img:hover{border-color:var(--gold-line)}
.src .meta,.noimg{color:var(--muted);font-size:12px;margin-top:2px}
.acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}
.hint{font-size:12.5px;color:var(--muted);line-height:1.5}
.foot-note{margin-top:14px}

/* ---------- dialoger ---------- */
dialog{border:none;border-radius:20px;padding:0;width:min(620px,94vw);max-height:92vh;box-shadow:0 30px 80px rgba(0,0,0,.28);background:var(--card);color:var(--ink)}
dialog:has(.small){width:min(440px,94vw)}
dialog::backdrop{background:rgba(20,20,20,.45);backdrop-filter:blur(2px)}
dialog#dlg{overflow:hidden}
form.f{padding:22px 24px 0;max-height:92vh;overflow:auto;overscroll-behavior:contain}
form.f h2{font-family:var(--serif);margin:0 0 4px;font-size:22px}
form.f .lead{line-height:1.55;margin:8px 0 0}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.grid.one{grid-template-columns:1fr}
.full{grid-column:1/-1}
label.fl,.fl-title{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
label.fl input,label.fl select,label.fl textarea,.srcrow input{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff;color:var(--ink);font-size:14px;min-width:0}
label.fl textarea{min-height:96px;resize:vertical;line-height:1.5}
label.fl input:focus,label.fl select:focus,label.fl textarea:focus,.srcrow input:focus{outline:none;border-color:var(--gold-line);box-shadow:0 0 0 3px var(--gold-soft)}
.srcrow{display:grid;grid-template-columns:1.4fr 1fr;gap:6px;margin:8px 0;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}
.srcrow input{padding:6px 8px;font-size:13px}
.hasimg{font-size:11px;background:var(--paper2);border-radius:999px;padding:2px 8px;color:var(--muted)}
.foot{display:flex;justify-content:flex-end;gap:8px;margin:18px -24px 0;padding:12px 24px 18px;position:sticky;bottom:0;background:linear-gradient(rgba(255,255,255,0),var(--card) 14px)}
.foot.split{justify-content:space-between;align-items:center;flex-wrap:wrap}
.formerr{color:var(--danger);font-size:13px;margin:12px 0 0;background:#fdecea;border-radius:10px;padding:8px 10px}
#imgview{width:auto;max-width:96vw;max-height:96vh;background:transparent;box-shadow:none;overflow:auto;text-align:center}
#imgview img{display:block;max-height:86vh;max-width:92vw;border-radius:8px;background:#fff;cursor:zoom-in;margin:0 auto;box-shadow:0 20px 60px rgba(0,0,0,.4)}
#imgview.zoomed img{max-height:none;max-width:none;cursor:zoom-out}
#imgview p{color:#f7f7f5;font-size:12.5px;margin:10px 0 0}
#imgview::backdrop{background:rgba(15,15,15,.85)}

.toasts{position:fixed;left:50%;bottom:76px;transform:translateX(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:max-content;max-width:calc(100vw - 24px)}
.toast{background:var(--ink);color:#f7f7f5;border-radius:14px;padding:9px 16px;font-size:13.5px;box-shadow:var(--shadow-lg);animation:rise .25s ease;max-width:560px;line-height:1.45}
.toast.err{background:var(--danger)}.toast.warn{background:#7a4a0a}
.toast.out{opacity:0;transform:translateY(6px);transition:.3s}
@keyframes rise{from{opacity:0;transform:translateY(8px)}}
.fatal{position:fixed;inset:auto 12px 12px 12px;background:var(--danger);color:#fff;padding:12px 16px;border-radius:12px;z-index:99}

/* ---------- smalare fönster ---------- */
@media (max-width:1180px){
  .trail,.savestate{display:none}
  .searchwrap input{width:170px}
}
@media (max-width:980px){
  #btnNew span,#btnHome span{display:none}
  .pill{display:none}
}
@media (max-width:760px){
  :root{--gap:8px}
  .topbar{flex-wrap:wrap;padding:8px 8px 8px 14px;gap:4px;border-radius:18px}
  .brand h1{font-size:18px}
  .hist{margin-left:4px}
  .searchwrap{order:7;flex:1 1 150px;margin-top:4px}
  #account,#menu{order:8;margin-top:4px}
  .searchwrap input{width:100%}
  .searchwrap>kbd{display:none}
  #results{left:0;right:0;width:auto}
  .rowlabels,.hud-bl{display:none}
  .notice{top:112px}
  .hud-br,.drawer-closed .hud-br{right:var(--gap);bottom:92px}
  body:not(.drawer-closed) .hud-br{display:none}
  .hint-card{left:50%;bottom:92px;border-radius:18px;font-size:12.5px}
  .toasts{bottom:96px}
  .drawer{top:auto;left:0;right:0;bottom:0;width:auto;height:58vh;border-radius:22px 22px 0 0;border-bottom:none}
  .drawer-closed .drawer{transform:translateY(calc(100% - 84px));overflow:hidden}
  .drawer-tab{display:none}
  .dz-head{padding:16px 12px 12px 18px;cursor:pointer}
  .dz-head::before{content:"";position:absolute;top:7px;left:50%;width:38px;height:4px;border-radius:4px;background:var(--line);transform:translateX(-50%)}
  .dz-head .mono{width:46px;height:46px;font-size:17px}
  .dz-head h2{font-size:19px}
  .dz-head [data-drawer] svg{transform:rotate(90deg)}
  .drawer-closed .dz-head [data-drawer] svg{transform:rotate(-90deg)}
  .dz-body{padding:0 18px 30px}
  .grid{grid-template-columns:1fr}
  .srcrow{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
@media print{
  .topbar,.hud,.drawer,.drawer-tab,.hint-card,.toasts,.notice,.ghost,.rowlabels{display:none!important}
  .stage{position:static;height:100vh;background:#fff}
  .card{box-shadow:none}.card.far{opacity:1;filter:none}
}

/* ---------- konton, anspråk och inbjudningar ---------- */
.card.claimed .mono{box-shadow:0 0 0 2px var(--card),0 0 0 3.5px var(--line2)}
.card.claimed.selfok .mono{box-shadow:0 0 0 2px var(--card),0 0 0 3.5px var(--ok)}
.card.claimed .mono::after{content:"";position:absolute;margin:28px 0 0 28px;width:13px;height:13px;border-radius:50%;background:var(--line2);border:2px solid var(--card)}
.card.claimed.selfok .mono::after{background:var(--ok)}
.claimbox{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:14px;padding:11px 13px;border-radius:12px;background:var(--paper);border:1px solid var(--paper2);font-size:13px;line-height:1.45}
.claimbox span{color:var(--muted)}
.claimbox.ok{background:var(--ok-bg);border-color:#c9dfcf}
.claimbox.ok b{color:var(--ok)}
.claimbox.ask{flex-direction:row;flex-wrap:wrap;background:none;border:none;padding:0}
.pop .sect{font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:8px 10px 2px}
.pop button small{color:var(--muted);font-size:11.5px;margin-left:10px}
.pop button.cur{background:var(--gold-soft)}
fieldset.choice{border:none;padding:0;margin:0;display:grid;gap:8px}
fieldset.choice>label:not(.fl){display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border:1px solid var(--line);border-radius:12px;cursor:pointer;background:#fff}
fieldset.choice>label:has(input:checked){border-color:var(--gold-line);box-shadow:0 0 0 3px var(--gold-soft)}
fieldset.choice>label:has(input:disabled){opacity:.6;cursor:default}
fieldset.choice input[type=radio]{margin-top:3px;accent-color:var(--gold)}
fieldset.choice span{display:grid;gap:2px}
fieldset.choice small{color:var(--muted);font-size:12.5px;line-height:1.4}
fieldset.choice .sub{margin:-2px 0 4px 34px}
.invbox{display:grid;gap:8px;margin-top:14px;padding:13px;border-radius:12px;background:var(--ok-bg);border:1px solid #c9dfcf;font-size:13.5px}
.invbox input{border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:#fff;font-size:12.5px;width:100%}
.invbox span{display:flex;gap:8px;flex-wrap:wrap}
.invbox a.btn{text-decoration:none;color:inherit}
.invbox small{color:var(--muted)}
.sent{padding:14px 0 20px;border-top:1px solid var(--paper2);margin-top:6px}
.invrow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--paper2);font-size:13.5px}
.invrow span{display:grid}
.invrow small{color:var(--muted);font-size:12px}
.notice br{flex-basis:100%;content:""}
#accountBtn.alert::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 3px var(--gold-soft)}
.matchrow{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--paper2);font-size:14px}
.matchrow>span:first-child{display:grid;gap:2px}
.matchrow small{color:var(--muted);font-size:12.5px}
.teaser{list-style:none;margin:14px 0 4px;padding:12px 14px;border-radius:12px;background:var(--gold-soft);display:grid;gap:5px;font-size:14px}
.teaser b{font-family:var(--serif);font-size:17px}
/* ---------- källor som bevis ---------- */
.srcrow select,.srcrow textarea{border:1px solid var(--line);border-radius:10px;padding:6px 8px;font-size:13px;background:#fff;color:var(--ink);min-width:0}
.srcrow textarea,.srcrow .styrker,.srcrow .fil{grid-column:1/-1}
.srcrow textarea{min-height:52px;resize:vertical;line-height:1.45;font-family:inherit}
.styrker{display:flex;flex-wrap:wrap;gap:5px;align-items:center;font-size:12px;color:var(--muted)}
.styrker label{cursor:pointer}
.styrker input{position:absolute;opacity:0;pointer-events:none}
.styrker i{font-style:normal;display:inline-block;border:1px solid var(--line);border-radius:999px;padding:2px 9px;background:#fff;color:var(--ink)}
.styrker input:checked+i{background:var(--ok-bg);border-color:var(--ok);color:var(--ok);font-weight:600}
.styrker input:focus-visible+i{outline:2px solid var(--gold-line);outline-offset:1px}
.fil{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.fil .btn{padding:5px 12px;font-size:12.5px}
.proof{display:inline-block;margin-left:6px;font-size:11px;font-weight:600;color:var(--ok);background:var(--ok-bg);border-radius:999px;padding:1px 8px;white-space:nowrap;cursor:help;text-transform:none;letter-spacing:0}
.src .typ{font-size:11px;background:var(--paper2);color:var(--muted);border-radius:999px;padding:1px 8px;margin-left:4px}
.src blockquote{margin:6px 0 2px;padding:2px 0 2px 10px;border-left:3px solid var(--line2);font-family:var(--serif);font-style:italic;line-height:1.5;white-space:pre-wrap;user-select:text;-webkit-user-select:text}
@media (max-width:760px){.srcrow{grid-template-columns:1fr}}
/* ---------- möjliga släktingar ---------- */
.card.possible{border-style:dashed;border-color:var(--maybe);background:#f6f9fb}
.card.possible .rel{color:var(--maybe)}
.claimbox.place{background:var(--maybe-bg);border-color:#c9d8e0}
.claimbox.place b{color:var(--maybe)}
.possiblebox{display:grid;gap:4px;margin-top:14px;padding:12px 14px;border-radius:12px;background:var(--maybe-bg);border:1px solid #c9d8e0;font-size:13.5px}
.possiblebox>span{color:var(--muted);font-size:12.5px;line-height:1.45}
.possiblebox .grid{margin-top:8px}
.loosenote{margin:6px 0 0}
/* ---------- bjud in släkten via e-post ---------- */
dialog:has(.wide){width:min(720px,96vw)}
.famlist{margin-top:14px;border-top:1px solid var(--paper2);max-height:46vh;overflow:auto}
.famrow{display:grid;grid-template-columns:1fr 1.1fr auto;gap:6px 10px;align-items:center;padding:9px 2px;border-bottom:1px solid var(--paper2)}
.famrow .who{display:grid;min-width:0}
.famrow .who b{font-family:var(--serif);font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.famrow .who small{color:var(--muted);font-size:12px}
.famrow input{border:1px solid var(--line);border-radius:9px;padding:7px 9px;background:#fff;font-size:13.5px;min-width:0}
.famrow .st{grid-column:1/-1;font-size:12.5px}
.famrow .st:empty{display:none}
.famrow .st.ok{color:var(--ok);font-weight:600}
.famrow .st.bad{color:var(--danger)}
.famrow.sent{opacity:.7}
.mailprev{position:fixed;inset:3vh 3vw;z-index:5;background:var(--card);border-radius:18px;box-shadow:0 30px 80px rgba(40,25,5,.35);display:flex;flex-direction:column;overflow:hidden}
.mailbar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}
.mailbar span{display:grid;min-width:0}
.mailbar small{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.mailbar b{font-size:14px}
.mailprev iframe{flex:1;border:0;width:100%;background:#f7f7f5}
.warnline{margin:0;padding:10px 16px;background:var(--info-bg)}
@media (max-width:760px){.famrow{grid-template-columns:1fr}.famrow .linkbtn{justify-self:start}}
/* tom släktbok: visa ingen tom låda */
.drawer:empty,.drawer:empty~.drawer-tab{display:none}

/* ================= formspråket från framsidan (site/) =================
   Opak toppbar med hårlinje, rosa huvudknapp, vita kort med hårlinjer, prickig yta,
   Funnel Display i rubriker och namn, inga skuggor utöver det som lyfter ett kort. */
body{font-size:14.5px;letter-spacing:-.003em}
h1,h2,h3,.empty h2,form.f h2,.dz-head h2,.sec h3{font-weight:500!important;letter-spacing:-.02em}
:focus-visible{outline:2px solid var(--gold-line);outline-offset:2px}
a{color:var(--ink);text-decoration-color:var(--line2);text-underline-offset:3px}

/* ytan: samma prickiga mark som fönstret på framsidan */
.stage{background-color:#f2f2ef;background-image:radial-gradient(circle,rgba(0,0,0,.13) 1px,transparent 1.3px);background-size:24px 24px}
.edges path{stroke:rgba(0,0,0,.28);stroke-width:1.5}
.edges .fe.on,.edges .pl.on{stroke:var(--gold-line);stroke-width:2.6}
.edges .knot{fill:#f2f2ef;stroke:rgba(0,0,0,.3)}

/* personkort som på framsidan */
.card{background:#fff;border:1px solid var(--line2);border-radius:12px;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.card:hover{box-shadow:0 8px 20px -10px rgba(0,0,0,.3);border-color:#bdbdb7}
.card.s-okänd{background:rgba(255,255,255,.6)}
.card.line{border-color:color-mix(in oklab,var(--gold-line) 45%,var(--line2));box-shadow:0 1px 2px rgba(0,0,0,.05)}
.card.pov{background:#fff;border-color:var(--gold-line);box-shadow:0 0 0 3px color-mix(in oklab,var(--gold-line) 22%,transparent),0 10px 24px -12px rgba(0,0,0,.35)}
.card .rel{font-weight:600;letter-spacing:.05em}
.card .nm{font-weight:500;font-size:15px;letter-spacing:-.01em}
.mono,.mono.m,.mono.k{background:var(--paper2);color:var(--ink);font-weight:600;font-size:14px}
.card.dec .mono,.mono.dec,.card.dec .mono.m,.card.dec .mono.k,.mono.m.dec,.mono.k.dec{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px #b9b9b3}
.chip .mono,#results .mono{font-size:10.5px}
.card .pip{display:none}
.island{border-color:var(--line2);border-radius:16px;background:rgba(255,255,255,.35)}
.island b{font-style:normal;font-weight:500;font-size:14px}
.rowlabels span{font-style:normal;font-size:12.5px;font-weight:500;border:1px solid var(--line)}
.rowlabels span.cur{color:var(--gold);border-color:color-mix(in oklab,var(--gold-line) 35%,var(--line))}
.ghost{border-color:var(--line2);background:#fff}
.ghost:hover{border-color:var(--gold-line);color:var(--gold)}

/* knappar: en fylld rosa huvudknapp, övriga med hårlinje */
.btn{border-radius:8px;border-color:var(--line2);background:#fff;font-weight:500;padding:8px 14px}
.btn:hover{border-color:#a9a9a3;background:#fff}
.btn.primary{background:var(--gold-line);border-color:var(--gold-line);color:#fff}
.btn.primary:hover{background:#b80d61;border-color:#b80d61}
.btn.ghost:hover{background:var(--paper2)}
.iconbtn{border-radius:8px}
.iconbtn:hover{background:var(--paper2)}

/* toppbaren: hel bredd, opak, en hårlinje under – som framsidans meny */
.topbar{top:0;left:0;right:0;height:var(--bar);border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;background:#f7f7f5;
  backdrop-filter:none;-webkit-backdrop-filter:none;padding:0 16px 0 24px}
.brand h1{font-size:20px;display:flex;align-items:center;gap:10px}
.brand h1::before{content:"";width:22px;height:22px;flex:none;background:var(--gold-line);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='6.5' cy='6.5' r='4.5'/%3E%3Ccircle cx='17.5' cy='6.5' r='4.5'/%3E%3Ccircle cx='6.5' cy='17.5' r='4.5'/%3E%3Crect x='13' y='13' width='9' height='9' rx='1.5'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='6.5' cy='6.5' r='4.5'/%3E%3Ccircle cx='17.5' cy='6.5' r='4.5'/%3E%3Ccircle cx='6.5' cy='17.5' r='4.5'/%3E%3Crect x='13' y='13' width='9' height='9' rx='1.5'/%3E%3C/svg%3E") center/contain no-repeat}
.trail button.cur{background:var(--paper2);color:var(--ink)}
.searchwrap input{border-radius:8px;background:#fff;border-color:var(--line2)}
.searchwrap input:focus{border-color:var(--gold-line);box-shadow:0 0 0 3px var(--gold-soft)}
.pill{border-radius:999px;font-weight:500}
#results,.menu .pop,.notice{border-radius:12px;border-color:var(--line)}
#results button:hover,#results button.hi,.pop button.cur{background:var(--paper2)}
#results b{font-weight:500}
.notice{top:calc(var(--bar) + 12px);border-color:var(--line2)}

/* hörnpaneler och sidolåda: vita ytor med hårlinje, ingen glaseffekt */
.hud{background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none;border-color:var(--line);border-radius:12px;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.mini{background:#f2f2ef;border-color:var(--line);border-radius:8px}
.mini .mn{fill:#c9c9c4}.mini .mn.line{fill:var(--gold-line)}.mini .mn.pov{fill:var(--ink)}
.drawer{top:calc(var(--bar) + 12px);background:#fff;border-color:var(--line);border-radius:16px;box-shadow:0 1px 2px rgba(0,0,0,.04),0 20px 50px -24px rgba(0,0,0,.25)}
.drawer-tab{top:calc(var(--bar) + 18px)}
.dz-head{background:linear-gradient(#fff 82%,rgba(255,255,255,0))}
.dz-head h2{font-size:24px}
.badge{font-weight:500}
.facts div{border-bottom-color:var(--line)}
.notes{background:#f7f7f5;border:1px solid var(--line)}
.chip{border-color:var(--line2);background:#fff}
.chip:hover{border-color:var(--gold-line);background:#fff}
.relgrp>span{font-weight:600;letter-spacing:.05em}
.src{border-color:var(--line);border-radius:10px}
.src blockquote{border-left-color:var(--gold-line);font-style:normal;font-family:var(--sans)}
.hint-card{background:var(--ink);color:#f7f7f5;border-radius:12px}

/* dialoger */
dialog{border-radius:16px;box-shadow:0 30px 80px -20px rgba(0,0,0,.35)}
label.fl input,label.fl select,label.fl textarea,.srcrow input,.srcrow select,.srcrow textarea,.famrow input{border-color:var(--line2);border-radius:8px}
.srcrow{background:#f7f7f5;border-color:var(--line);border-radius:10px}
.foot{background:linear-gradient(rgba(255,255,255,0),#fff 14px)}
.toast{background:var(--ink);color:#f7f7f5;border-radius:10px}
.styrker input:checked+i{background:var(--ok-bg)}
.teaser{background:var(--gold-soft)}
.teaser b{color:var(--gold)}

/* telefon: toppbaren växer till två rader, resten följer */
@media (max-width:760px){
  :root{--bar:108px}
  .topbar{height:auto;min-height:var(--bar);padding:8px 12px 10px 16px;border-radius:0}
  .notice{top:calc(var(--bar) + 8px)}
}
