:root{--font-ui:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,monospace;--t-xs:10.5px;--t-sm:12px;--t-md:13px;--t-base:14px;--t-lg:16px;--t-xl:20px;--lh:1.55;--s1:4px;--s2:6px;--s3:9px;--s4:12px;--s5:16px;--s6:22px;--s7:32px;--r1:5px;--r2:8px;--r3:12px;--r4:18px;--r-pill:999px;--ease:cubic-bezier(.22,.61,.36,1);--dur:.18s;--glass-blur:22px;--glass-sat:170%}:root[data-theme=noir]{--bg:#08090c;--bg-grad:radial-gradient(1200px 700px at 15% -10%, #161823 0%, transparent 60%), radial-gradient(900px 600px at 100% 0%, #10141d 0%, transparent 55%);--surface:rgba(255,255,255,.035);--surface-2:rgba(255,255,255,.06);--surface-3:rgba(255,255,255,.1);--glass:rgba(14,16,22,.62);--glass-brd:rgba(255,255,255,.09);--sheen:rgba(255,255,255,.055);--ink:#f0f1f5;--ink-2:#9ea5b6;--ink-3:#646b7d;--line:rgba(255,255,255,.1);--accent:#7c83ff;--accent-ink:#0a0b10;--accent-soft:rgba(124,131,255,.16);--pos:#4ec294;--pos-soft:rgba(78,194,148,.15);--neg:#e08a6e;--neg-soft:rgba(224,138,110,.15);--neutral:#8a90a2;--neutral-soft:rgba(138,144,162,.15);--shadow:0 1px 2px rgba(0,0,0,.5), 0 12px 34px -14px rgba(0,0,0,.75);color-scheme:dark}:root[data-theme=oxide]{--bg:#06100f;--bg-grad:radial-gradient(1100px 700px at 10% -10%, #0d211f 0%, transparent 60%), radial-gradient(800px 500px at 100% 10%, #0a1a20 0%, transparent 55%);--surface:rgba(255,255,255,.04);--surface-2:rgba(255,255,255,.07);--surface-3:rgba(255,255,255,.11);--glass:rgba(8,20,19,.64);--glass-brd:rgba(180,255,240,.1);--sheen:rgba(200,255,246,.05);--ink:#e6f2ef;--ink-2:#93aaa5;--ink-3:#5e716d;--line:rgba(180,255,240,.11);--accent:#3fd6b0;--accent-ink:#03110e;--accent-soft:rgba(63,214,176,.16);--pos:#4ec294;--pos-soft:rgba(78,194,148,.15);--neg:#e0906e;--neg-soft:rgba(224,144,110,.15);--neutral:#7f9490;--neutral-soft:rgba(127,148,144,.15);--shadow:0 1px 2px rgba(0,0,0,.5), 0 12px 34px -14px rgba(0,0,0,.75);color-scheme:dark}:root[data-theme=ember]{--bg:#0d0908;--bg-grad:radial-gradient(1100px 700px at 12% -10%, #241713 0%, transparent 60%), radial-gradient(800px 500px at 100% 5%, #1d1210 0%, transparent 55%);--surface:rgba(255,255,255,.04);--surface-2:rgba(255,255,255,.07);--surface-3:rgba(255,255,255,.11);--glass:rgba(20,13,11,.64);--glass-brd:rgba(255,214,190,.1);--sheen:rgba(255,226,205,.05);--ink:#f5ece7;--ink-2:#b09a90;--ink-3:#7a675f;--line:rgba(255,214,190,.11);--accent:#e8935a;--accent-ink:#150c07;--accent-soft:rgba(232,147,90,.16);--pos:#8ab86a;--pos-soft:rgba(138,184,106,.15);--neg:#d9705f;--neg-soft:rgba(217,112,95,.15);--neutral:#9b8880;--neutral-soft:rgba(155,136,128,.15);--shadow:0 1px 2px rgba(0,0,0,.5), 0 12px 34px -14px rgba(0,0,0,.75);color-scheme:dark}:root[data-theme=daylight]{--bg:#eef0f4;--bg-grad:radial-gradient(1100px 700px at 12% -10%, #ffffff 0%, transparent 60%), radial-gradient(900px 600px at 100% 0%, #e4e8f2 0%, transparent 55%);--surface:rgba(255,255,255,.72);--surface-2:rgba(255,255,255,.92);--surface-3:rgba(20,24,38,.07);--glass:rgba(255,255,255,.68);--glass-brd:rgba(20,24,38,.1);--sheen:rgba(255,255,255,.7);--ink:#141826;--ink-2:#525a70;--ink-3:#858da3;--line:rgba(20,24,38,.12);--accent:#4b4fc4;--accent-ink:#ffffff;--accent-soft:rgba(75,79,196,.12);--pos:#2b7355;--pos-soft:rgba(43,115,85,.13);--neg:#a1503a;--neg-soft:rgba(161,80,58,.13);--neutral:#5f6779;--neutral-soft:rgba(95,103,121,.13);--shadow:0 1px 2px rgba(20,24,38,.07), 0 12px 30px -16px rgba(20,24,38,.28);color-scheme:light}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;color:var(--ink);font:var(--t-base)/var(--lh) var(--font-ui);-webkit-font-smoothing:antialiased;overflow:hidden}#root{height:100%;display:flex;flex-direction:column}svg.i{width:16px;height:16px;flex:0 0 auto;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}svg.i.sm{width:13px;height:13px;stroke-width:1.8}a{color:var(--accent);text-decoration:none}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.glass{background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));border:1px solid var(--glass-brd);box-shadow:var(--shadow),inset 0 1px 0 var(--sheen)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}header{flex:0 0 auto;position:relative;z-index:20;background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));border-bottom:1px solid var(--glass-brd);box-shadow:inset 0 1px 0 var(--sheen)}.bar{display:flex;align-items:center;gap:var(--s5);padding:var(--s3) var(--s5)}.brand{display:flex;align-items:center;gap:var(--s2);font-weight:640;letter-spacing:-.012em;font-size:var(--t-lg);flex:0 0 auto}.brand .mark{color:var(--accent)}.stat{font:var(--t-xs) var(--font-mono);color:var(--ink-3);white-space:nowrap}.stat b{color:var(--ink);font-weight:600}.libstat{font:var(--t-xs) var(--font-mono);color:var(--ink-3);letter-spacing:.02em}.tabs{display:flex;gap:2px;background:var(--surface-2);padding:3px;border-radius:var(--r2);border:1px solid var(--line)}.tabs button{display:flex;align-items:center;gap:var(--s2);border:0;background:transparent;color:var(--ink-2);font:500 var(--t-md) var(--font-ui);padding:6px 12px;border-radius:var(--r1);cursor:pointer;transition:color var(--dur) var(--ease),background var(--dur) var(--ease)}.tabs button:hover{color:var(--ink)}.tabs button.on{background:var(--surface-3);color:var(--ink)}.tabs button .n{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 4px;border-radius:var(--r-pill);background:var(--accent);color:var(--accent-ink);font:600 var(--t-xs) var(--font-mono)}.tabs button kbd{font:var(--t-xs) var(--font-mono);color:var(--ink-3)}.ib{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r1);border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:color var(--dur) var(--ease),background var(--dur) var(--ease)}.ib:hover{color:var(--ink);background:var(--surface-2)}.ib.on{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.btn{display:inline-flex;align-items:center;gap:var(--s2);border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--r2);padding:7px 13px;font:var(--t-md) var(--font-ui);cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease)}.btn:hover{background:var(--surface-2);border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:550}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{background:transparent}.btn.danger:hover{border-color:var(--neg);color:var(--neg)}.btn:disabled{opacity:.45;cursor:default}.btn.sm{padding:5px 9px;font-size:var(--t-sm)}.btn.xs{padding:2px 7px;font-size:var(--t-xs)}.field{display:flex;align-items:center;gap:var(--s2);background:var(--surface);border:1px solid var(--line);border-radius:var(--r2);padding:0 var(--s3);color:var(--ink-3);transition:border-color var(--dur) var(--ease)}.field:focus-within{border-color:var(--accent);color:var(--accent)}.field input,.field select{background:transparent;border:0;outline:none;color:var(--ink);font:var(--t-md) var(--font-ui);padding:7px 0}.field input::placeholder{color:var(--ink-3)}.field input[type=search]{width:180px}.field input[type=date]{font:var(--t-sm) var(--font-mono);color-scheme:inherit}.field select{cursor:pointer;padding-right:var(--s2)}.field .dash{color:var(--ink-3);font-size:var(--t-sm)}.field label{font:var(--t-xs) var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3)}option{background:var(--bg);color:var(--ink)}.chips{display:flex;gap:var(--s1);flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:var(--r-pill);padding:5px 11px;font:var(--t-sm) var(--font-ui);cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.chip:hover{color:var(--ink);background:var(--surface-2)}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.chip .n{font:var(--t-xs) var(--font-mono);opacity:.7}.filters{display:flex;align-items:center;gap:var(--s3);padding:var(--s4) var(--s5) var(--s3);flex-wrap:wrap;flex:0 0 auto}.filters .sep{width:1px;height:22px;background:var(--line);margin:0 var(--s1)}.peoplebar{display:flex;align-items:center;gap:var(--s2);padding:0 var(--s5) var(--s3);flex:0 0 auto;overflow-x:auto;scrollbar-width:thin}.peoplebar .lbl{font:var(--t-xs) var(--font-mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);flex:0 0 auto}.narrowed{display:flex;align-items:center;gap:var(--s2);font:var(--t-xs) var(--font-mono);color:var(--ink-3);padding:0 var(--s5) var(--s3)}.narrowed b{color:var(--accent);font-weight:600}main{flex:1;display:flex;min-height:0}.pane{flex:1;overflow:auto;padding:var(--s6) var(--s5) 72px;scrollbar-width:thin;position:relative}.pane.flush{padding:0}h2{font-size:var(--t-xl);margin:0 0 var(--s1);letter-spacing:-.018em;font-weight:640}h3{font-size:var(--t-base);margin:0 0 var(--s2);font-weight:620}.sub{color:var(--ink-2);font-size:var(--t-md);margin:0 0 var(--s5);max-width:76ch}.sectlbl{font:var(--t-xs) var(--font-mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin:var(--s6) 0 var(--s3)}.dg{background:var(--surface);border:1px solid var(--line);border-radius:var(--r3);padding:var(--s4);margin-bottom:var(--s4)}.dg h4{margin:0 0 var(--s3);font:var(--t-sm) var(--font-mono);color:var(--ink-2);letter-spacing:.04em;display:flex;align-items:center;gap:var(--s2)}.row{display:flex;gap:var(--s4);flex-wrap:wrap}.kv{display:grid;grid-template-columns:112px 1fr;gap:6px var(--s4);font:var(--t-sm) var(--font-mono);margin-top:var(--s5)}.kv dt{color:var(--ink-3)}.kv dd{margin:0;color:var(--ink);font-variant-numeric:tabular-nums}.note{background:var(--surface);border:1px solid var(--line);border-radius:var(--r3);padding:var(--s4) var(--s5);margin:0 0 var(--s5);font-size:var(--t-md);color:var(--ink-2);max-width:78ch;display:flex;gap:var(--s3);align-items:flex-start}.note svg{margin-top:2px;color:var(--accent);flex:0 0 auto}.note.warn svg{color:var(--neg)}.note b{color:var(--ink);font-weight:620}.empty{max-width:52ch;margin:12vh auto;text-align:center;color:var(--ink-2)}.empty .ic{color:var(--ink-3);margin-bottom:var(--s4)}.empty .ic svg{width:34px;height:34px;stroke-width:1.2}.empty h3{color:var(--ink);font-size:var(--t-lg);margin-bottom:var(--s2)}.empty p{margin:0 0 var(--s5);font-size:var(--t-md);line-height:1.6}.empty .acts{display:flex;gap:var(--s3);justify-content:center;flex-wrap:wrap}.empty code{font:var(--t-sm) var(--font-mono);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r1);padding:1px 5px;color:var(--ink)}.loading{color:var(--ink-3);text-align:center;padding:var(--s7) 0;font:var(--t-sm) var(--font-mono);letter-spacing:.08em}.vgrid{--tile-h:184px;--tile-img-h:132px;--tile-min:152px;--grid-gap:12px;position:relative;width:100%}.vgrid .win{position:absolute;left:0;right:0;display:grid;gap:var(--grid-gap)}.tile{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r3);overflow:hidden;cursor:pointer;text-align:left;padding:0;color:inherit;font:inherit;display:block;transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.tile:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:var(--shadow)}.tile.sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft),var(--shadow)}.tile img{width:100%;height:var(--tile-img-h);object-fit:cover;display:block;background:var(--surface-2)}.tile .cap{padding:7px var(--s3) 8px;font:var(--t-xs) var(--font-mono);color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile .cap .who{color:var(--ink-2)}.tile .sc{position:absolute;top:7px;right:7px;background:#0000008c;color:#fff;border-radius:var(--r1);padding:2px 6px;font:var(--t-xs) var(--font-mono);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.flags{position:absolute;top:7px;left:7px;display:flex;gap:3px}.fl{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--r1);color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.fl.story{background:var(--accent);color:var(--accent-ink)}.fl.blank{background:#8a90a2d9}.fl.fuzzy{background:#e08a6ee6}.bucket{margin-bottom:var(--s7)}.bhead{display:flex;align-items:baseline;gap:var(--s3);padding-bottom:var(--s2);margin-bottom:var(--s4);border-bottom:1px solid var(--line);position:sticky;top:calc(var(--s6) * -1);background:var(--bg);z-index:2}.bhead .lab{font-size:var(--t-lg);font-weight:620;letter-spacing:-.014em}.bhead .prec{font:var(--t-xs) var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line);border-radius:var(--r-pill);padding:1px 8px}.bhead .prec.fuzzy{color:var(--neg);border-color:var(--neg-soft);background:var(--neg-soft)}.bhead .n{font:var(--t-sm) var(--font-mono);color:var(--ink-3)}.bhead .go{margin-left:auto}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(152px,1fr));gap:var(--s4)}.tl{display:flex;flex-direction:column;gap:0;max-width:1100px}.tl .entry{display:grid;grid-template-columns:104px 1fr;gap:var(--s5);padding:var(--s5) 0;border-top:1px solid var(--line);position:relative}.tl .entry:first-child{border-top:0}.tl .when{text-align:right;position:sticky;top:0;align-self:start;height:min-content}.tl .when .lab{font-size:var(--t-lg);font-weight:640;letter-spacing:-.016em;font-variant-numeric:tabular-nums}.tl .when .n{display:block;font:var(--t-xs) var(--font-mono);color:var(--ink-3);margin-top:2px}.tl .body{min-width:0}.tl .shots{display:flex;gap:var(--s2);flex-wrap:wrap;margin-bottom:var(--s3)}.tl .shots img{width:96px;height:72px;object-fit:cover;border-radius:var(--r2);border:1px solid var(--line);background:var(--surface-2);cursor:pointer;display:block}.tl .story{background:var(--surface);border:1px solid var(--line);border-radius:var(--r3);padding:var(--s3) var(--s4);margin-top:var(--s2);font-size:var(--t-md);color:var(--ink-2);max-width:76ch}.tl .story .meta{font:var(--t-xs) var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:5px;display:flex;gap:var(--s3);align-items:center}.tl .story .meta .kind{color:var(--accent)}.tl .entry.storyonly .when .lab{color:var(--ink-2)}.tl .entry.storyonly{background:var(--surface)}.tl .nophoto{font:var(--t-xs) var(--font-mono);color:var(--ink-3);letter-spacing:.06em;margin-bottom:var(--s2)}.phead{display:flex;gap:var(--s5);align-items:flex-start;margin-bottom:var(--s6);flex-wrap:wrap}.phead .face{width:88px;height:88px;border-radius:var(--r3);object-fit:cover;border:1px solid var(--line);background:var(--surface-2);flex:0 0 auto}.phead .who h2{margin-bottom:2px}.phead .life{font:var(--t-sm) var(--font-mono);color:var(--ink-2);font-variant-numeric:tabular-nums}.phead .counts{font:var(--t-xs) var(--font-mono);color:var(--ink-3);margin-top:var(--s2)}.spark{display:block;margin-top:var(--s4)}.spark rect{fill:var(--accent)}.spark rect.zero{fill:var(--surface-3)}.spark text{fill:var(--ink-3);font:9px var(--font-mono)}.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--s6)}.rellist{display:flex;flex-direction:column;gap:2px}.rellist button{display:flex;align-items:baseline;gap:var(--s3);width:100%;border:0;background:transparent;color:var(--ink);text-align:left;cursor:pointer;padding:5px var(--s3);border-radius:var(--r1);font:var(--t-md) var(--font-ui)}.rellist button:hover{background:var(--surface-2)}.rellist .kin{margin-left:auto;font:var(--t-xs) var(--font-mono);color:var(--ink-3);letter-spacing:.04em}.player{width:100%;max-height:52vh;background:#000;border:1px solid var(--line);border-radius:var(--r3);display:block}.strip{display:flex;gap:var(--s2);overflow-x:auto;padding:var(--s3) 2px;scrollbar-width:thin}.strip button{flex:0 0 auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r2);padding:var(--s2) var(--s3);cursor:pointer;color:var(--ink-2);font:var(--t-xs) var(--font-mono);text-align:left;min-width:104px;transition:border-color var(--dur) var(--ease),color var(--dur) var(--ease)}.strip button:hover{border-color:var(--accent);color:var(--ink)}.strip button.on{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}.strip button .t{display:block;color:var(--ink);font-size:var(--t-sm);font-weight:600}.strip button .f{display:block;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}.strip button .len{display:block;color:var(--ink-3)}.treewrap{width:100%;overflow:auto;scrollbar-width:thin}svg.tree{display:block}svg.tree .edge{stroke:var(--line);stroke-width:1.4;fill:none}svg.tree .edge.spouse{stroke:var(--ink-3);stroke-width:1.6}svg.tree .edge.disputed{stroke:var(--neg);stroke-dasharray:5 4}svg.tree .edge.probable{stroke-dasharray:2 3}svg.tree .node rect{fill:var(--surface);stroke:var(--line);stroke-width:1}svg.tree .node:hover rect{stroke:var(--accent)}svg.tree .node.root rect{stroke:var(--accent);fill:var(--accent-soft)}svg.tree .node text.nm{fill:var(--ink);font:600 12px var(--font-ui)}svg.tree .node text.kin{fill:var(--ink-3);font:10px var(--font-mono)}svg.tree .node text.yr{fill:var(--ink-2);font:10px var(--font-mono)}svg.tree .node{cursor:pointer}svg.tree .genlbl{fill:var(--ink-3);font:10px var(--font-mono);letter-spacing:.1em}.legend{display:flex;gap:var(--s5);flex-wrap:wrap;font:var(--t-xs) var(--font-mono);color:var(--ink-3);margin-top:var(--s4)}.legend span{display:inline-flex;align-items:center;gap:var(--s2)}.legend i{width:22px;height:0;border-top:1.5px solid currentColor;display:inline-block}.legend i.disputed{border-top-style:dashed;color:var(--neg)}.albums{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:var(--s5)}.album{background:var(--surface);border:1px solid var(--line);border-radius:var(--r3);overflow:hidden;cursor:pointer;text-align:left;padding:0;color:inherit;font:inherit;transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease)}.album:hover{transform:translateY(-2px);border-color:var(--accent)}.album img{width:100%;height:132px;object-fit:cover;display:block;background:var(--surface-2)}.album .m{padding:var(--s3) var(--s4) var(--s4)}.album .m .nm{font-weight:620;font-size:var(--t-md)}.album .m .d{font:var(--t-xs) var(--font-mono);color:var(--ink-3);margin-top:3px}.login{margin:auto;width:100%;max-width:392px;padding:var(--s7);border-radius:var(--r4)}.login .brand{justify-content:center;font-size:var(--t-xl);margin-bottom:var(--s2)}.login p.sub{text-align:center;margin-bottom:var(--s6)}.login form{display:flex;flex-direction:column;gap:var(--s4)}.login .field{padding:var(--s1) var(--s4)}.login .field input{width:100%;padding:9px 0;font-size:var(--t-base)}.login .err{color:var(--neg);font-size:var(--t-sm);text-align:center}.login .devcode{font:var(--t-sm) var(--font-mono);color:var(--ink-2);text-align:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r2);padding:var(--s3)}.login .devcode b{color:var(--accent);letter-spacing:.24em}.centre{flex:1;display:flex;min-height:0}.toasts{position:fixed;bottom:var(--s5);left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:var(--s2);align-items:center}.toast{border-radius:var(--r2);padding:var(--s3) var(--s5);font-size:var(--t-md);color:var(--ink)}.toast.bad{border-color:var(--neg-soft);color:var(--neg)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--pos);margin-right:5px;vertical-align:1px}.dot.off{background:var(--ink-3)}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}.tile:hover,.album:hover{transform:none}}.viewbar{display:flex;align-items:center;gap:var(--s5);flex-wrap:wrap;margin-bottom:var(--s5)}.segwrap{display:flex;align-items:center;gap:var(--s2)}.segwrap .lbl{font:var(--t-xs) var(--font-mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3)}.tabs.seg button{padding:5px 11px;font-size:var(--t-sm)}.muted{color:var(--ink-3);font-size:var(--t-md)}.grow{flex:1}.gridhead{display:flex;flex-direction:column;gap:var(--s2);margin-bottom:var(--s4)}.gridcount{font-size:var(--t-xs);color:var(--ink-3);letter-spacing:.06em}.gridfoot{min-height:var(--s6)}.albumhead{display:flex;align-items:baseline;gap:var(--s4);flex-wrap:wrap}.albumhead h2,.albumhead .sub{margin:0}.tile{height:var(--tile-h)}.tile .cap{padding:5px var(--s3) 0;line-height:1.35}.tile .cap:last-child{padding-bottom:7px}.tile .noimg,.album .nocover{height:var(--tile-img-h,132px);background:var(--surface-2);border-bottom:1px solid var(--line)}.tile.more{display:flex;align-items:center;justify-content:center;font:var(--t-sm) var(--font-mono);color:var(--ink-2);background:var(--surface-2)}.tile.more:hover{color:var(--ink)}.buckets{display:flex;flex-direction:column}.bucket .bhead{top:0;padding-top:var(--s3)}.prec{font:var(--t-xs) var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line);border-radius:var(--r-pill);padding:1px 8px;white-space:nowrap}.prec.fuzzy{color:var(--neg);border-color:var(--neg-soft);background:var(--neg-soft)}.scrubwrap{position:sticky;top:0;z-index:3;margin-bottom:var(--s5);background:var(--bg);border-bottom:1px solid var(--line)}svg.scrub{display:block;width:100%}svg.scrub .tick{stroke:var(--line);stroke-width:1}svg.scrub .ticklbl{fill:var(--ink-3);font:9.5px var(--font-mono)}svg.scrub .bar rect{fill:var(--accent);opacity:.62;cursor:pointer}svg.scrub .bar:hover rect{opacity:1}svg.scrub .bar.none rect{fill:var(--neutral)}svg.scrub .dot{fill:var(--ink)}svg.scrub .vp{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1;pointer-events:none}.tl .entry .when{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.tl .entry .when .btn{margin-top:var(--s1)}.tl .story p{margin:0}.chips.tiny .chip{padding:3px 9px;font-size:var(--t-xs)}.morelink{align-self:center;border:1px dashed var(--line);background:transparent;color:var(--ink-3);border-radius:var(--r2);width:52px;height:72px;cursor:pointer;font:var(--t-sm) var(--font-mono)}.morelink:hover{color:var(--ink);border-color:var(--accent)}.faces{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:var(--s4);margin-bottom:var(--s5)}.personcard{display:flex;flex-direction:column;align-items:center;gap:var(--s2);background:var(--surface);border:1px solid var(--line);border-radius:var(--r3);padding:var(--s4) var(--s3);cursor:pointer;color:inherit;font:inherit;transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}.personcard:hover{border-color:var(--accent);transform:translateY(-2px)}.personcard .nm{font-size:var(--t-md);font-weight:600;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.personcard .n{font-size:var(--t-xs);color:var(--ink-3)}.face{width:64px;height:64px;border-radius:var(--r3);object-fit:cover;border:1px solid var(--line);background:var(--surface-2);flex:0 0 auto}.monogram{display:flex;align-items:center;justify-content:center;font:600 20px var(--font-ui);color:var(--ink-3);letter-spacing:.04em}.phead .face{width:88px;height:88px}.phead .monogram{font-size:28px}.pacts{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:flex-start}.btn.back{margin-bottom:var(--s4)}.seekat{font-size:var(--t-xs);color:var(--ink-3);padding:var(--s2) 0 0}.striplbl{flex:0 0 auto;align-self:center;font-size:var(--t-xs);color:var(--ink-3);padding:0 var(--s2);letter-spacing:.04em;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dg .story{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r2);padding:var(--s3);margin-bottom:var(--s3);font-size:var(--t-md);color:var(--ink-2)}.dg .story .meta{font:var(--t-xs) var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px;display:flex;gap:var(--s3)}.dg .story .meta .kind{color:var(--accent)}.dg .story p{margin:0}.dg .player{max-height:44vh}.treehead{margin-bottom:var(--s5)}.treehead .sub{margin-bottom:var(--s3)}.treefoot{display:flex;align-items:center;gap:var(--s5);flex-wrap:wrap;margin-top:var(--s4);padding-top:var(--s4);border-top:1px solid var(--line)}.treefoot .legend{margin:0;flex:1}svg.tree .node:focus-visible rect{stroke:var(--accent);stroke-width:2}svg.tree .node:focus{outline:none}.albumbar{display:flex;align-items:center;gap:var(--s4)}.albumbar h2{margin:0}.album .m .desc{font-size:var(--t-sm);color:var(--ink-2);margin-top:var(--s2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.scrim{position:fixed;inset:0;z-index:150;background:#0000009e;display:flex;align-items:center;justify-content:center;padding:var(--s6);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.lightbox{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,.9fr);gap:var(--s5);max-width:1180px;width:100%;max-height:88vh;padding:var(--s5);border-radius:var(--r4);overflow:hidden}.lbmedia{display:flex;align-items:center;justify-content:center;min-width:0;background:#00000059;border-radius:var(--r3);overflow:hidden}.lbmedia img.big{max-width:100%;max-height:78vh;object-fit:contain;display:block}.lbside{overflow:auto;scrollbar-width:thin;min-width:0}.lbside h3{font-size:var(--t-lg)}.lbside .sectlbl{margin-top:var(--s5)}.lbacts{display:flex;gap:var(--s2);margin-top:var(--s6);flex-wrap:wrap}@media(max-width:860px){.lightbox{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto}}.libpick select{max-width:230px}.narrowed .hint{color:var(--ink-3);font-weight:400;letter-spacing:0}.narrowed b{background:var(--accent-soft);border-radius:var(--r1);padding:1px 6px}.tl .story .meta .covers{color:var(--ink-2);border:1px solid var(--line);border-radius:var(--r-pill);padding:0 7px;letter-spacing:.04em}svg.tree .edge.spouse{stroke:var(--ink-2);stroke-width:2.2}.album{display:flex;flex-direction:column;align-items:stretch}.album .m{flex:1}.login form .btn{justify-content:center}.peoplebar .chip{flex:0 0 auto;white-space:nowrap}.modal{border:0;padding:0;background:transparent;max-width:min(34rem,calc(100vw - 2rem));color:var(--ink)}.modal::backdrop{background:color-mix(in srgb,#05070b 74%,transparent);backdrop-filter:blur(2px)}.modal{width:min(34rem,calc(100vw - 2rem))}.modal-body{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r2);padding:1.25rem 1.35rem 1.1rem;box-shadow:0 24px 60px -12px #0000008c}.modal-title{margin:0 0 .35rem;font-size:1.06rem;font-weight:600;letter-spacing:.005em}.modal-say{margin:0 0 .9rem;color:var(--ink-2);font-size:.9rem;line-height:1.5;max-width:46ch}dialog.modal .modal-bar+.modal-say,.modal-body>.modal-say:first-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.modal-preview{margin:0 0 .9rem}.modal-preview img{width:96px;height:96px;object-fit:cover;border-radius:var(--r2);border:1px solid var(--rule);display:block}.modal-form{display:flex;flex-direction:column;gap:.8rem;margin:0 0 1.05rem}.modal-field{display:flex;flex-direction:column;gap:.3rem}.modal-label{font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}.modal-hint{font-size:.79rem;color:var(--ink-3)}.modal-field input,.modal-field textarea{width:100%;background:var(--bg);border:1px solid var(--rule);border-radius:var(--r2);color:var(--ink);padding:.5rem .6rem;font:inherit;font-size:.94rem}.modal-field input:focus-visible,.modal-field textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.modal-field input.bad,.modal-field textarea.bad{border-color:var(--neg)}.modal-field textarea{resize:vertical;min-height:4.2rem}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem}.modal-bar{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden;margin:.2rem 0 0}.modal-bar-fill{height:100%;width:0;background:var(--accent);transition:width .18s var(--ease)}.modal-errors{margin:.85rem 0 0;padding:0 0 0 1.1rem;max-height:9rem;overflow-y:auto;color:var(--neg);font-size:.85rem;line-height:1.45}.modal-errors:empty{display:none}.dropveil[hidden]{display:none}.dropveil{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,rgba(5,7,11,.72));backdrop-filter:blur(2px);pointer-events:none}.dropveil-inner{border:2px dashed var(--accent);border-radius:var(--r2);padding:1.6rem 2.2rem;background:var(--surface);text-align:center;display:flex;flex-direction:column;gap:.3rem}.dropveil-inner strong{font-size:1.02rem}.dropveil-inner span{color:var(--ink-2);font-size:.86rem}.btn.add{white-space:nowrap}@media(prefers-reduced-motion:reduce){.modal-bar-fill{transition:none}}.frame{display:flex;min-height:100vh;align-items:stretch}.frame>.column{flex:1;min-width:0;display:flex;flex-direction:column}.rail{flex:0 0 13rem;display:flex;flex-direction:column;gap:.2rem;padding:.75rem .6rem;border-right:1px solid var(--rule);background:var(--surface);position:sticky;top:0;align-self:flex-start;height:100vh}.rail button{display:flex;align-items:center;gap:.6rem;width:100%;padding:.55rem .65rem;border:0;border-radius:var(--r2);background:transparent;color:var(--ink-2);font:inherit;font-size:.93rem;cursor:pointer;text-align:left}.rail button:hover{background:var(--surface-2);color:var(--ink)}.rail button.on{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--ink)}.rail button.on .i{color:var(--accent)}.rail button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.rail .rail-label{flex:1}.rail kbd{opacity:.45;font-size:.7rem}.modes{display:flex;gap:.15rem;background:var(--surface-2);border-radius:var(--r-pill);padding:.15rem}.modes button{border:0;background:transparent;color:var(--ink-2);font:inherit;font-size:.85rem;padding:.32rem .8rem;border-radius:var(--r-pill);cursor:pointer;white-space:nowrap}.modes button:hover{color:var(--ink)}.modes button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #00000040}.modes button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media(max-width:900px){.rail{flex-basis:3.4rem}.rail .rail-label,.rail kbd{display:none}.rail button{justify-content:center;padding:.55rem}}.film-stage{position:sticky;top:0;z-index:5;background:var(--bg);padding:.5rem 0 .75rem}.film-player{width:100%;max-height:52vh;background:#000;border-radius:var(--r2);border:1px solid var(--rule);display:block}.film-note{color:var(--ink-3);font-size:.86rem;margin:0 0 1.2rem;max-width:62ch}.film{border:1px solid var(--rule);border-radius:var(--r2);padding:.85rem;margin:0 0 .8rem;background:var(--surface)}.film-head{display:flex;gap:.9rem;align-items:flex-start}.film-cover{width:128px;height:88px;object-fit:cover;border-radius:var(--r2);border:1px solid var(--rule);flex:0 0 auto;background:var(--surface-2)}.film-cover.none{display:block}.film-meta{min-width:0;display:flex;flex-direction:column;gap:.3rem}.film-meta h3{margin:0;font-size:.98rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.film-meta .dim{margin:0;color:var(--ink-2);font-size:.85rem}.film-people{display:flex;flex-direction:column;gap:.4rem;margin-top:.85rem;padding-top:.75rem;border-top:1px solid var(--rule)}.film-person{display:flex;gap:.7rem;align-items:baseline}.film-who{flex:0 0 8rem;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.film-moments{display:flex;flex-wrap:wrap;gap:.3rem}.moment{border:1px solid var(--rule);background:var(--surface-2);color:var(--ink-2);border-radius:var(--r-pill);padding:.15rem .55rem;font:inherit;font-size:.78rem;font-variant-numeric:tabular-nums;cursor:pointer}.moment:hover{border-color:var(--accent);color:var(--ink)}.moment:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.film-hint{color:var(--ink-3);font-size:.85rem;margin:.8rem 0 0}.modes-none{display:none}.modal-pickers{display:flex;gap:.5rem;margin:0 0 .55rem}.modal-select{width:100%;background:var(--bg);border:1px solid var(--rule);border-radius:var(--r2);color:var(--ink);padding:.5rem .6rem;font:inherit;font-size:.94rem}.modal-select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.modal-newalbum{width:100%;margin-top:.4rem;background:var(--bg);border:1px solid var(--rule);border-radius:var(--r2);color:var(--ink);padding:.5rem .6rem;font:inherit;font-size:.94rem}.modal-newalbum[hidden]{display:none}.modal-newalbum.bad{border-color:var(--neg)}.facepick{display:flex;flex-wrap:wrap;gap:.4rem;margin:.5rem 0 0}.facepick button{padding:0;border:2px solid transparent;border-radius:var(--r2);background:none;cursor:pointer;line-height:0}.facepick img{width:56px;height:56px;object-fit:cover;border-radius:var(--r2);display:block;border:1px solid var(--rule)}.facepick button:hover{border-color:var(--ink-3)}.facepick button.on{border-color:var(--accent)}.facepick button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.facepick-wrap{display:flex;flex-direction:column;gap:.25rem;margin:0 0 1rem}@media(max-width:720px){.bar{flex-wrap:wrap;gap:var(--s3);padding:var(--s3) var(--s4)}.bar .libpick{order:3;flex:1 1 100%;min-width:0}.bar .libpick select{max-width:none;width:100%}.bar .modes{order:4;flex:1 1 100%;overflow-x:auto;scrollbar-width:none}.bar .modes::-webkit-scrollbar{display:none}.bar .modes button{flex:0 0 auto}.bar .grow{display:none}.filters{padding:var(--s3) var(--s4)}.filters .field{min-width:0}.filters .searchf{flex:1 1 100%}.filters .field input[type=search]{width:100%;min-width:0}.filters .sep{display:none}.filters .dates{flex:1 1 100%;flex-wrap:wrap}.peoplebar,.narrowed{padding-left:var(--s4);padding-right:var(--s4)}.vgrid{--tile-h:164px;--tile-img-h:112px;--tile-min:124px;--grid-gap:8px}.bar .stat{white-space:normal;flex:1 1 100%;order:5}.rail{flex-basis:2.9rem}main,.pane{min-width:0;max-width:100vw}}
