:root{--bg: #f6f3ee;--card: #fffdfa;--ink: #2e2f33;--muted: #74706a;--faint: #a29d95;--line: #e8e3da;--soft: #efebe4;--accent: #4e7a6d;--accent-ink: #ffffff;--accent-soft: #e5f1eb;--pastel-rose: #f6e3e0;--pastel-butter: #f8efd6;--pastel-sky: #e3ebf6;--pastel-mint: #e2f1ea;--pastel-lilac: #ece6f6;--up: #4f8a6a;--down: #b45c50;--c-health: #e6a49c;--c-happiness: #e9c97e;--c-skills: #9fb6d8;--c-relationships: #a5d3bf;--c-reputation: #c4b5e2;--radius: 10px;--serif: "Noto Serif TC", "Noto Serif SC", "Iowan Old Style", "Palatino Linotype", Georgia, serif;--sans: "Segoe UI", system-ui, -apple-system, "PingFang TC", "Microsoft JhengHei", "Noto Sans TC", sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #1b1c1e;--card: #222427;--ink: #e7e4de;--muted: #a19c94;--faint: #7c7871;--line: #34373b;--soft: #2b2e32;--accent: #9cc9b9;--accent-ink: #14211d;--accent-soft: #263430;--pastel-rose: #3a2c2b;--pastel-butter: #383223;--pastel-sky: #283240;--pastel-mint: #24342e;--pastel-lilac: #302b3c;--up: #9cc9b0;--down: #e09a8f;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15.5px;line-height:1.65;-webkit-text-size-adjust:100%}main{max-width:620px;margin:0 auto;padding:20px 16px 56px;display:flex;flex-direction:column;gap:16px}h1,h2,h3{margin:0;line-height:1.25;font-family:var(--serif);font-weight:700}h1{font-size:2rem}h2{font-size:1.3rem}h3{font-size:1.05rem;margin-top:6px}button{font:inherit;color:inherit;cursor:pointer;border:none;background:none}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:12px}.muted{color:var(--muted)}.small{font-size:.86rem}.center{text-align:center}.lead{font-size:1.05rem;margin:0}.label{font-size:.8rem;color:var(--muted)}.up{color:var(--up)}.down{color:var(--down)}.row{display:flex;gap:10px;flex-wrap:wrap}.primary{background:var(--accent);color:var(--accent-ink);border-radius:8px;padding:11px 22px;font-weight:600;transition:opacity .15s}.primary:hover{opacity:.92}.big{font-size:1.05rem;padding:13px 28px}.ghost{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:8px 16px}.ghost:hover:not(:disabled){border-color:var(--faint)}.ghost.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.ghost.small{padding:5px 12px;font-size:.86rem}.icon{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--card);font-size:.8rem}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--card)}.seg button{padding:6px 14px;color:var(--muted)}.seg button+button{border-left:1px solid var(--line)}.seg button.on{background:var(--soft);color:var(--ink);font-weight:600}.seg.small button{padding:4px 9px;font-size:.82rem}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);border-radius:6px;padding:3px 10px;font-size:.88rem;background:var(--card)}button.chip:hover{border-color:var(--faint)}button.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.chip.up{color:var(--up)}.chip.down{color:var(--down)}.cbadge{display:inline-block;padding:0 6px;border-radius:4px;border:1px solid var(--line);border-left:3px solid var(--cb);font-size:.75rem;font-weight:600;letter-spacing:.05em;color:var(--muted);background:var(--card);vertical-align:middle;line-height:1.7}.cbadge.lg{font-size:.85rem;padding:2px 8px}.topbar{display:flex;justify-content:space-between;align-items:center}.brand{font-family:var(--serif);font-weight:700;font-size:1.15rem}.hero{text-align:center;align-items:center;padding:32px 20px;gap:16px;background:linear-gradient(160deg,var(--pastel-mint),var(--card) 45%,var(--pastel-lilac))}.hero h1{font-size:2.6rem}.flags{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.records{list-style:none;padding:0;margin:0}.records li{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}.records li:first-child{border-top:none}.records b{font-family:var(--serif)}.records .age{font-family:var(--serif);font-weight:700;font-size:1.3rem}footer{text-align:center}.ribbon{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:var(--muted);letter-spacing:.08em;padding-bottom:10px;border-bottom:1px solid var(--line)}.ribbon.dark{color:var(--ink)}.name{font-size:2.3rem;letter-spacing:.01em}.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px;margin:0;padding-top:4px}.facts div{min-width:0}.facts dt{font-size:.8rem;color:var(--muted)}.facts dd{margin:0;overflow-wrap:anywhere}.facts dd:first-letter,.kv dd:first-letter{text-transform:uppercase}.odds{border-left:3px solid var(--line);padding:2px 0 2px 12px;margin:0;font-size:.9rem;color:var(--muted)}.summary{margin:0;padding-left:1.2em}.reveal{animation:reveal .6s ease-out}@keyframes reveal{0%{opacity:0;transform:translateY(8px)}}.lifebar{position:sticky;top:0;z-index:5;background:var(--bg);padding:12px 0 10px;display:flex;flex-direction:column;gap:10px;border-bottom:1px solid var(--line)}.who{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}.who b{font-family:var(--serif);font-size:1.1rem}.agebig{font-family:var(--serif);font-size:2.3rem;font-weight:700;line-height:1;text-align:right}.agebig small{display:block;font-family:var(--sans);font-size:.7rem;font-weight:400;color:var(--muted)}.progress{position:relative;height:6px;background:var(--soft);border-radius:3px}.progress>span{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--c-happiness),var(--c-health),var(--c-reputation))}.progress .mk{position:absolute;top:50%;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:var(--card);border:2px solid var(--accent)}.progress .mk.season{width:10px;height:10px;margin:-5px 0 0 -5px;border-color:var(--c-health)}.controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.kicker{font-size:.8rem;color:var(--muted);letter-spacing:.06em}.decide{border-color:var(--c-relationships);background:linear-gradient(180deg,var(--pastel-mint),var(--card) 120px)}.decide h2{font-size:1.35rem}.decide p{margin:0}.pop{animation:reveal .3s ease-out}.choices{display:flex;flex-direction:column;gap:8px}.choice{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:11px 14px;display:flex;flex-direction:column;gap:1px;transition:border-color .12s,background .12s}.choice:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.choice .ct{font-weight:600}.choice .hint{font-size:.84rem;color:var(--muted)}.why{align-self:flex-start;font-size:.8rem;color:var(--faint);padding:0;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}.why:hover{color:var(--muted)}.whytext{margin:0;font-size:.86rem;color:var(--muted);border-left:3px solid var(--line);padding:2px 0 2px 10px}.log{list-style:none;padding:0;margin:0}.log .ev{display:grid;grid-template-columns:3.6em 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--line)}.log .ev:first-child{border-top:none}.lage{font-size:.78rem;color:var(--faint);padding-top:2px;font-variant-numeric:tabular-nums}.lbody{display:flex;flex-direction:column;gap:2px;min-width:0}.src{font-size:.78rem;color:var(--muted)}.src b{font-weight:600;margin-right:6px;padding:0 6px;border-radius:4px;background:var(--pastel-sky);color:var(--ink)}.ev.milestone .ltext,.ev.death .ltext{font-weight:700}.ev.survival .ltext{color:#4f8f86}.ev.bad .ltext{color:#c0665c}.ev.decision .ltext{font-size:.9rem;color:#8a7cae}@media(prefers-color-scheme:dark){.ev.survival .ltext{color:#93cbbf}.ev.bad .ltext{color:#e8a39a}.ev.decision .ltext{color:#bcaee0}}.stat{display:grid;grid-template-columns:1fr auto;column-gap:10px;align-items:center;min-width:0}.stat .sl{grid-column:1;grid-row:1;font-size:.82rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat .bar{grid-column:1;grid-row:2}.stat .sv{grid-column:2;grid-row:1 / span 2;font-family:var(--serif);font-weight:700;font-size:1.05rem;min-width:2ch;text-align:right}.bar{display:block;height:6px;background:var(--soft);border-radius:2px;overflow:hidden}.bar>span{display:block;height:100%;background:var(--accent);transition:width .4s}.stat.health .bar>span{background:var(--c-health)}.stat.happiness .bar>span{background:var(--c-happiness)}.stat.skills .bar>span{background:var(--c-skills)}.stat.relationships .bar>span{background:var(--c-relationships)}.stat.reputation .bar>span{background:var(--c-reputation)}.bar.trait>span{background:var(--c-relationships)}.stat.health{--tint: var(--pastel-rose)}.stat.happiness{--tint: var(--pastel-butter)}.stat.skills{--tint: var(--pastel-sky)}.stat.relationships{--tint: var(--pastel-mint)}.stat.reputation{--tint: var(--pastel-lilac)}.stat .bar{background:var(--tint, var(--soft))}.focus{display:flex;flex-direction:column;gap:6px}.traitgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px}.trait{display:grid;grid-template-columns:1fr auto;gap:3px 10px;font-size:.9rem}.trait .bar{grid-column:1}.trait .tv{grid-row:span 2;font-family:var(--serif);font-weight:700;align-self:center;text-align:right}.trait .tv small{display:block;font-family:var(--sans);font-weight:400;font-size:.72rem}.moneyhead{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.moneyhead div{display:flex;flex-direction:column;min-width:0}.moneyhead b{font-weight:600}.moneyhead b.big{font-family:var(--serif);font-size:1.4rem}.products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.product{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}.product:hover:not(:disabled){border-color:var(--faint)}.product.on{border-color:var(--accent);background:var(--accent-soft)}.product b{font-weight:600}.product .amt{font-family:var(--serif);font-weight:700}@media(max-width:420px){.facts,.traitgrid,.products{grid-template-columns:1fr}.hero h1{font-size:2.1rem}.name{font-size:1.9rem}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:16px;background:#2e2f3352;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{width:100%;max-width:560px;max-height:calc(100vh - 32px);overflow:auto;box-shadow:0 16px 48px #0000002e}.modal-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.pending-pill{position:fixed;bottom:18px;left:50%;transform:translate(-50%);z-index:15;background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:10px 20px;font-weight:600;box-shadow:0 8px 24px #0000002e}main.play{max-width:1280px}.dash{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}.col{display:contents}.o1{order:1}.o2{order:2}.o3{order:3}.o4{order:4}.o5{order:5}.o6{order:6}.o7{order:7}.o8{order:8}.o9{order:9}.o10{order:10}@media(min-width:760px){.dash{grid-template-columns:300px minmax(0,1fr)}.col{display:flex;flex-direction:column;gap:16px;min-width:0}.col:nth-child(3){grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start}.o5 .log{max-height:620px;overflow-y:auto;padding-right:4px}}@media(min-width:1140px){.dash{grid-template-columns:300px minmax(0,1fr) 300px}.col:nth-child(3){grid-column:auto;display:flex;flex-direction:column;align-items:stretch}}.cardhead{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.cardhead h3{margin:0}.kv{margin:0;display:flex;flex-direction:column;gap:6px}.kv div{display:grid;grid-template-columns:6.5em minmax(0,1fr);gap:10px;font-size:.92rem}.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.idcard{background:linear-gradient(180deg,var(--pastel-sky),var(--card) 70px)}.idtop{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--muted);letter-spacing:.06em;padding-bottom:8px;border-bottom:1px solid var(--line)}.idbody{display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;align-items:start}.portrait{width:64px;height:auto;border-radius:8px;display:block}.idname{font-size:1.3rem;margin-bottom:8px}.idcard .kv div{grid-template-columns:5.5em minmax(0,1fr);font-size:.86rem}.idno{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.74rem;color:var(--faint);letter-spacing:.1em;border-top:1px dashed var(--line);padding-top:8px}.dots{color:var(--accent);letter-spacing:2px}.help summary{cursor:pointer;font-size:.85rem;color:var(--muted)}.help ul{margin:8px 0 0;padding-left:1.1em;font-size:.84rem;color:var(--muted)}.help b{color:var(--ink);font-weight:600}.scenecard{padding:0;overflow:hidden;gap:0}.scene{display:block;width:100%;height:auto;aspect-ratio:600 / 210}.caption{margin:0;padding:10px 16px;font-size:.9rem;border-top:1px solid var(--line)}.o4 p.muted{margin:0}.focusopts{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.focusopts .chip{display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:8px 10px;border-radius:8px}.focusopts .chip .small{color:var(--muted);font-weight:400}.lifemap{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:4px}.cell{aspect-ratio:1;border-radius:3px;background:var(--soft)}.cell.le{outline:1.5px dashed var(--faint);outline-offset:1px}.cell.now{outline:2px solid var(--ink);outline-offset:1px}.o2b{order:2}.o5b{order:5}.o6b{order:6}.ovr{display:flex;align-items:center;gap:14px}.ovrnum{font-family:var(--serif);font-size:2.6rem;font-weight:700;line-height:1;color:var(--accent);min-width:2ch}.skills{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px}.skill{display:grid;grid-template-columns:1fr auto;column-gap:8px;font-size:.82rem;align-items:center}.skill .sl{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.skill .bar{grid-column:1}.skill .sv{grid-row:1 / span 2;grid-column:2;font-family:var(--serif);font-weight:700}.bar.skillbar>span{background:var(--c-skills)}.tablewrap{overflow-x:auto}.season{width:100%;border-collapse:collapse;font-size:.84rem}.season th,.season td{padding:6px 4px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.season th{font-weight:400;color:var(--muted);font-size:.76rem}.season td:first-child,.moneyhead b,.product .amt{white-space:nowrap}.moneyhead b.wrap{white-space:normal}.o5a{order:5}.teamhead,.teamline{margin:0}.standwrap{max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:8px}.stand{width:100%;border-collapse:collapse;font-size:.84rem}.stand td{padding:5px 8px;border-bottom:1px solid var(--line)}.stand td:first-child,.stand td:nth-child(3),.stand td:nth-child(4){width:2.5em;color:var(--muted);font-variant-numeric:tabular-nums}.stand tr.mine td{background:var(--pastel-mint);color:var(--ink);font-weight:600}.series,.roster,.games{list-style:none;margin:0;padding:0;font-size:.86rem}.series li{padding:3px 0}.series li.won{color:var(--up)}.series li.lost{color:var(--down)}.roster li{display:grid;grid-template-columns:1fr auto 2.2em;gap:8px;padding:4px 0;border-top:1px solid var(--line)}.roster li:first-child{border-top:none}.roster li.me{background:var(--pastel-mint);border-radius:6px;padding-left:6px}.ovrsmall{font-family:var(--serif);font-weight:700;text-align:right}.games li{padding:2px 0}.buddies{list-style:none;margin:0;padding:0}.buddies li{padding:8px 0;border-top:1px solid var(--line)}.buddies li:first-child{border-top:none;padding-top:0}.bclose{color:var(--accent)}.tag{font-size:.72rem;border-radius:4px;padding:0 5px;background:var(--pastel-sky);color:var(--ink)}.tag.star{background:var(--pastel-butter)}.buddies li.gone{opacity:.55}.o5 .log{max-height:520px;overflow-y:auto;padding-right:4px}.meters{display:flex;flex-direction:column;gap:8px}.meters.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px}.meter{display:grid;grid-template-columns:1fr auto;column-gap:10px;align-items:center;min-width:0}.meter .ml{grid-column:1;grid-row:1;font-size:.82rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meter .bar{grid-column:1;grid-row:2}.meter .mv{grid-column:2;grid-row:1 / span 2;font-family:var(--serif);font-weight:700;font-size:1.05rem;min-width:2ch;text-align:right}.meter.form .bar>span{background:var(--c-happiness)}.meter.trust .bar>span{background:var(--c-skills)}.meter.chem .bar>span{background:var(--c-relationships)}.meter.fans .bar>span{background:var(--c-reputation)}.o6a{order:6}.achgrid{display:flex;flex-wrap:wrap;gap:5px}.ach{border:1px dashed var(--line);border-radius:6px;padding:1px 8px;font-size:.78rem;color:var(--faint);display:inline-flex;flex-direction:column;min-width:0}.ach.long{padding:5px 9px;flex:1 1 180px}.ach b{font-weight:600}.ach small{color:var(--muted);font-size:.72rem;line-height:1.35}.ach.on{border-style:solid;color:var(--ink);background:var(--pastel-mint)}.ach.on.r2{background:var(--pastel-sky)}.ach.on.r3{background:var(--pastel-butter)}.cbadge.off{opacity:.4;border-left-color:var(--line)}.toast{position:fixed;bottom:72px;left:50%;transform:translate(-50%);z-index:30;background:var(--ink);color:var(--bg);border-radius:999px;padding:9px 18px;font-weight:600;font-size:.9rem;box-shadow:0 8px 24px #0000002e;animation:reveal .3s ease-out;white-space:nowrap}.games li.big{font-weight:600}.games li .small{margin-left:2px}.season tr.champ td{background:var(--pastel-butter)}.decide.pool-game,.decide.pool-playoffs{border-color:var(--c-health);background:linear-gradient(180deg,var(--pastel-rose),var(--card) 120px)}.decide.pool-camp,.decide.pool-team,.decide.pool-media,.decide.pool-business,.decide.pool-offseason{border-color:var(--c-skills);background:linear-gradient(180deg,var(--pastel-sky),var(--card) 120px)}.decide.pool-job,.decide.pool-son,.decide.pool-elder{border-color:var(--c-reputation);background:linear-gradient(180deg,var(--pastel-lilac),var(--card) 120px)}.decide.pool-early,.decide.pool-child,.decide.pool-teen,.decide.pool-hoops,.decide.pool-campus{border-color:var(--c-happiness);background:linear-gradient(180deg,var(--pastel-butter),var(--card) 120px)}
