:root{--linen: #f3ebe1;--paper: #fbf6ee;--card: #fffdf8;--ink: #2a2118;--ink-soft: #5c5348;--ink-faint: #8a8176;--line: rgba(42, 33, 24, .1);--terracotta: #b85c38;--terracotta-deep: #8f3f24;--sage: #5f735c;--gold: #b8924a;--blush: #c98980;--shadow: 0 18px 50px rgba(42, 33, 24, .08);--radius: 22px;--serif: "Fraunces", "Iowan Old Style", Georgia, serif;--sans: "Outfit", "Avenir Next", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:radial-gradient(1200px 600px at 10% -10%,rgba(184,92,56,.08),transparent 50%),radial-gradient(900px 500px at 100% 0%,rgba(95,115,92,.08),transparent 46%),var(--linen);color:var(--ink);font-family:var(--sans);font-weight:420;line-height:1.5}a{color:inherit}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}.wordmark{font-family:var(--serif);font-weight:560;letter-spacing:-.03em;line-height:1.05}.url-line{color:var(--ink-faint);font-size:.82rem;letter-spacing:.04em}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:44px;padding:.7rem 1.15rem;border-radius:999px;border:1px solid transparent;background:var(--ink);color:var(--paper);transition:transform .15s ease,background .15s ease}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}.btn.soft{background:#f0e6d8;color:var(--ink)}.btn.warn{background:transparent;color:var(--terracotta-deep);border-color:#b85c3847}.field{display:flex;flex-direction:column;gap:.35rem;text-align:left}.field span{font-size:.82rem;color:var(--ink-soft)}.field input,.field textarea,.field select{min-height:46px;padding:.7rem .9rem;border-radius:14px;border:1px solid var(--line);background:#fff}.field textarea{min-height:96px;resize:vertical}.auth-screen{min-height:100dvh;display:grid;place-items:center;padding:2rem 1.2rem}.auth-card{width:min(440px,100%);padding:2.4rem 2rem 2rem;text-align:center}.auth-card h1{margin:.35rem 0 .2rem;font-size:2.2rem}.auth-card .lede{margin:1.1rem 0 1.4rem;color:var(--ink-soft)}.auth-card form{display:grid;gap:.85rem}.auth-card .foot{margin:1.15rem 0 0;color:var(--ink-faint);font-size:.92rem}.auth-card .sassy{margin-top:1rem;color:var(--terracotta-deep);font-size:.95rem}.shell{min-height:100dvh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.4rem;position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--linen) 86%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.topbar nav{display:flex;flex-wrap:wrap;gap:.35rem}.topbar nav a,.pill{display:inline-flex;align-items:center;gap:.35rem;min-height:36px;padding:.3rem .8rem;border-radius:999px;text-decoration:none;color:var(--ink-soft)}.topbar nav a.active,.topbar nav a:hover{background:#2a21180f;color:var(--ink)}.brand{text-decoration:none}.brand small{display:block}.page{width:min(1080px,calc(100% - 2rem));margin:0 auto;padding:1.6rem 0 5rem}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem;margin:1.2rem 0 1.6rem}.stat{padding:1rem 1.05rem;background:var(--card);border:1px solid var(--line);border-radius:18px}.stat b{display:block;font-family:var(--serif);font-size:1.55rem}.stat span{color:var(--ink-faint);font-size:.82rem}.people-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.85rem}.person-card{display:flex;gap:.85rem;padding:.95rem;text-decoration:none;color:inherit;transition:transform .15s ease}.person-card:hover{transform:translateY(-2px)}.person-card h3{margin:0;font-family:var(--serif);font-size:1.2rem}.person-card p{margin:.2rem 0 0;color:var(--ink-soft);font-size:.9rem}.meta{color:var(--ink-faint);font-size:.8rem}.avatar{flex:0 0 auto;border-radius:50%;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff40}.avatar.lg{width:88px;height:88px}.avatar.md{width:56px;height:56px}.avatar.sm{width:40px;height:40px}.portrait{border-radius:28px;overflow:hidden;width:min(280px,100%);aspect-ratio:4 / 5;box-shadow:var(--shadow)}.portrait.blurred{filter:blur(14px) saturate(.7);transform:scale(1.06)}.chips{display:flex;flex-wrap:wrap;gap:.45rem}.chip{min-height:40px;padding:.35rem .85rem;border-radius:999px;border:1px solid var(--line);background:#fff}.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.section-head{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin:1.6rem 0 .8rem}.section-head h2{margin:0;font-family:var(--serif);font-size:1.7rem}.notice{position:sticky;top:68px;z-index:4;width:min(1080px,calc(100% - 2rem));margin:.7rem auto 0;padding:.75rem 1rem;border-radius:14px;background:#efe4cf;border:1px solid var(--line)}.sheet{padding:1.5rem}.sheet-top{display:flex;gap:1.1rem;align-items:flex-start}.actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.1rem}.thread{display:flex;flex-direction:column;gap:.7rem;margin:1rem 0}.bubble{max-width:80%;padding:.75rem .95rem;border-radius:18px;background:#efe6d8}.bubble.mine{margin-left:auto;background:#2a2118;color:#fbf6ee}.e2ee-cue{margin:.45rem 0 0;color:var(--sage);font-size:.88rem}.untrusted{color:var(--terracotta-deep);font-size:.86rem;font-weight:560;margin-top:.25rem}.pack-view{margin:.6rem 0;padding:.85rem 1rem;border-radius:14px;background:#f4eee6;border:1px solid var(--line)}.pack-line{margin-top:.55rem}.composer{display:flex;gap:.5rem}.composer input{flex:1;min-height:46px;border-radius:999px;border:1px solid var(--line);padding:0 1rem}.table-map{display:grid;gap:1rem}.table{padding:1.2rem;min-height:200px}.table h3{margin:0 0 .3rem;font-family:var(--serif)}.seats{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.seat{text-decoration:none;text-align:center;width:84px;color:inherit;background:transparent;border:1px solid transparent;border-radius:16px;padding:.35rem .2rem}.seat span{display:block;font-size:.8rem;margin-top:.3rem}.seat.hop{opacity:.72}.seat.chosen{border-color:var(--ink);background:#f0e6d8}.modal-back{position:fixed;inset:0;background:#2a211859;display:grid;place-items:center;padding:1rem;z-index:20}.modal{width:min(480px,100%);padding:1.5rem}.proto{position:fixed;right:1rem;bottom:1rem;z-index:8}.proto details{width:min(380px,calc(100vw - 2rem));max-height:min(70vh,640px);overflow:auto;background:var(--card);border:1px dashed var(--ink-faint);border-radius:16px;padding:.7rem .85rem;box-shadow:var(--shadow)}.proto summary{cursor:pointer;color:var(--ink);font-size:.92rem;font-weight:500}.proto a{display:block;margin:.35rem 0;font-size:.88rem}.row{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.stars{letter-spacing:.08em;color:var(--gold)}.why{font-style:italic;color:var(--ink-soft)}.host-mark{display:inline-block;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);border:1px solid rgba(184,146,74,.4);padding:.1rem .45rem;border-radius:999px}.locked{background:#f4eee6;color:var(--ink-soft)}.graph-page{width:min(1180px,calc(100% - 2rem));padding-bottom:3.5rem}.graph-page h1{margin-bottom:.15rem}.graph-legend{display:flex;flex-wrap:wrap;gap:.55rem 1rem;margin:.85rem 0 .7rem;color:var(--ink-soft);font-size:.9rem}.graph-legend .swatch{display:inline-flex;align-items:center;gap:.45rem}.graph-legend .swatch:before{content:"";width:1.6rem;height:0;border-top:2.4px solid var(--terracotta);border-radius:2px}.graph-legend .swatch.introed:before{border-top-style:dashed;border-top-color:var(--blush)}.graph-legend .swatch.via:before{border-top-style:dashed;border-top-color:var(--ink-faint);opacity:.7}.graph-toggles{margin:.35rem 0 .6rem}.graph-private{margin:0 0 .7rem}.graph-private .rung-key{display:inline-flex;align-items:center;gap:.3rem;margin-right:.65rem}.graph-private .rung-key:before{content:"";width:.55rem;height:.55rem;border-radius:50%;background:var(--ink-faint)}.graph-private .rung-key.inner:before{background:var(--terracotta)}.graph-private .rung-key.close:before{background:var(--gold)}.graph-private .rung-key.casual:before{background:var(--sage)}.graph-private .rung-key.unfiled:before{background:transparent;box-shadow:inset 0 0 0 1.5px var(--ink-faint)}.graph-private .rung-key.outer:before{background:var(--ink-soft)}.graph-hint{margin-top:.75rem}.graph-stage{position:relative;height:min(70dvh,calc(100dvh - 16.5rem));min-height:380px;overflow:hidden;border-radius:var(--radius);touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;background:radial-gradient(ellipse at 50% 46%,#fffdf8,#fbf6eeeb 42%,#f3ebe1 78%),radial-gradient(900px 420px at 18% 10%,rgba(184,92,56,.08),transparent 58%),radial-gradient(700px 380px at 88% 80%,rgba(95,115,92,.1),transparent 60%);border:1px solid var(--line);box-shadow:var(--shadow)}.graph-stage:active{cursor:grabbing}.graph-stage:focus-visible{outline:2px solid var(--terracotta);outline-offset:3px}.graph-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.graph-edges{display:block;pointer-events:none}.graph-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:.18rem;padding:0;border:0;background:transparent;appearance:none;-webkit-tap-highlight-color:transparent;min-width:44px;min-height:44px;color:inherit}.graph-node .blob{border-radius:50%;padding:3px;background:#fffdf8;box-shadow:0 8px 18px #2a211814}.graph-node.hop-0 .blob{box-shadow:0 0 0 3px #fffdf8,0 0 0 6px var(--terracotta),0 12px 28px #2a21181f}.graph-node.introed .blob{box-shadow:0 0 0 2px #fffdf8,0 0 0 3.5px var(--blush)}.graph-node.hop-2{opacity:.52}.graph-node .name{position:absolute;top:calc(100% + .12rem);left:50%;transform:translate(-50%);font-family:var(--serif);font-size:.78rem;line-height:1.1;color:var(--ink);text-shadow:0 1px 0 #fffdf8;max-width:5.6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graph-node.hop-0 .name{font-size:.92rem;font-weight:560;color:var(--terracotta-deep)}.graph-node.hop-2 .name{font-size:.72rem;color:var(--ink-soft)}.graph-tools{position:absolute;left:.7rem;top:.7rem;display:flex;gap:.35rem;z-index:2;pointer-events:auto}.graph-tools .btn{min-height:40px;min-width:40px;padding:0 .75rem;background:color-mix(in srgb,var(--card) 88%,transparent)}@media(max-width:800px){.stats{grid-template-columns:1fr 1fr}.topbar{flex-direction:column;align-items:flex-start}.auth-card{padding:1.7rem 1.2rem}.graph-stage{min-height:52vh;height:min(62vh,calc(100dvh - 18rem))}}
