.auth-stage{background:radial-gradient(ellipse at 50% -10%, #c0394b1f, transparent 55%), var(--bg);place-items:center;min-height:100vh;padding:24px 16px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:30px 26px 24px}.auth-head{text-align:center;margin-bottom:22px}.auth-head h1{letter-spacing:-.01em;margin:0 0 4px;font-size:26px;font-weight:600}.auth-head p{margin:0;font-size:14px}.auth-tabs{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);gap:4px;margin-bottom:20px;padding:4px;display:flex}.auth-tabs button{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:1;padding:8px;font-family:inherit;font-size:14px;font-weight:500;transition:background .14s,color .14s}.auth-tabs button:hover{color:var(--text)}.auth-tabs button.active{background:var(--surface-3);color:var(--text)}.auth-msg{border-radius:var(--r-sm);margin-bottom:14px;padding:9px 11px;font-size:13.5px;line-height:1.45}.auth-msg.error{color:#f0a3ab;background:#e052601a;border:1px solid #e0526047}.auth-msg.notice{color:#a9d6bb;background:#4ea36b1a;border:1px solid #4ea36b47}.auth-alert{color:var(--text-dim);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--r-sm);margin-bottom:18px;padding:11px 12px;font-size:13px;line-height:1.5}.auth-alert code{font-family:var(--font-mono);color:var(--text);font-size:12px}.auth-submit{width:100%;min-height:42px;padding:11px;font-size:15px}.auth-note{border-top:1px solid var(--border);color:var(--text-faint);text-align:center;margin:18px 0 0;padding-top:16px;font-size:12.5px;line-height:1.5}.status-wait{text-align:center;margin-bottom:20px}.status-wait h2{margin:0 0 8px;font-size:18px;font-weight:600}.status-wait p{font-size:13.5px;line-height:1.5}.status-actions{justify-content:center;gap:10px;display:flex}.topbar{z-index:30;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0b0c0ee6;align-items:center;gap:12px;padding:13px clamp(16px,4vw,36px);display:flex;position:sticky;top:0}.brand{align-items:baseline;gap:10px;min-width:0;display:flex}.brand-mark{letter-spacing:-.01em;font-size:17px;font-weight:600}.brand-tag{color:var(--text-faint);font-size:12.5px;display:none}@media (width>=720px){.brand-tag{display:inline}}.topbar-user{color:var(--text-dim);font-size:13.5px}.dash-body{max-width:1140px;margin:0 auto;padding:clamp(20px,4vw,32px) clamp(16px,4vw,36px) 90px}.dash-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;display:flex}.dash-head h1{letter-spacing:-.01em;margin:0;font-size:clamp(21px,3vw,26px);font-weight:600}.dash-search{width:210px;max-width:45vw}.dash-error{color:#f0a3ab;border-radius:var(--r-sm);background:#e052601a;border:1px solid #e0526047;margin:16px 0;padding:10px 12px;font-size:13.5px}.dash-group{margin-top:30px}.group-head{border-bottom:1px solid var(--border);align-items:baseline;gap:10px;margin-bottom:14px;padding-bottom:8px;display:flex}.group-head h2{letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);margin:0;font-size:13px;font-weight:600}.group-count{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:12px}.card-grid{grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:14px;display:grid}.char-card{text-align:left;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;flex-direction:column;padding:16px 15px 12px;font-family:inherit;transition:transform .16s,border-color .16s,box-shadow .16s;display:flex;position:relative;overflow:hidden}.char-card:before{content:"";background:var(--sys-accent,var(--accent));width:3px;position:absolute;inset:0 auto 0 0}.char-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}.char-card:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}.char-system{letter-spacing:.08em;text-transform:uppercase;color:var(--sys-accent,var(--accent));font-size:11px;font-weight:600}.char-name{word-break:break-word;margin:5px 0 2px;font-size:17px;font-weight:600;line-height:1.2}.char-meta{color:var(--text-faint);font-size:12.5px}.char-actions{border-top:1px solid var(--border);opacity:0;align-items:center;gap:4px;margin-top:14px;padding-top:10px;transition:opacity .16s;display:flex}.char-card:hover .char-actions,.char-card:focus-within .char-actions{opacity:1}@media (hover:none){.char-actions{opacity:1}}.new-card{min-height:128px;color:var(--text-dim);background:0 0;border-style:dashed;justify-content:center;align-items:center;gap:6px;font-size:13.5px}.new-card:before{display:none}.new-card:hover:not(:disabled){color:var(--text);border-color:var(--border-strong);box-shadow:none;transform:none}.new-card:disabled{opacity:.4;cursor:not-allowed}.new-plus{color:var(--text-faint);font-size:24px;line-height:1}.empty{text-align:center;padding:70px 20px}.empty h2{margin:0 0 6px;font-size:19px;font-weight:600}.empty p{margin:0 0 18px}.modal-backdrop{z-index:60;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#060709b3;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-lg);width:100%;max-width:500px;max-height:90vh;box-shadow:var(--shadow-lg);padding:26px 24px 22px;position:relative;overflow-y:auto}.modal h2{margin:0 0 4px;font-size:19px;font-weight:600}.modal-sub{margin:0 0 20px;font-size:13.5px}.modal-close{color:var(--text-faint);cursor:pointer;background:0 0;border:none;font-size:20px;line-height:1;position:absolute;top:12px;right:14px}.modal-close:hover{color:var(--text)}.modal-actions{justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.system-choices{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:20px;display:grid}@media screen and (width<=480px){.system-choices{grid-template-columns:1fr}}.system-opt{text-align:left;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;flex-direction:column;gap:3px;padding:12px;font-family:inherit;transition:border-color .14s,background .14s;display:flex;position:relative}.system-opt:hover:not(:disabled){border-color:var(--border-strong)}.system-opt.selected{border-color:var(--sys-accent);background:color-mix(in srgb, var(--sys-accent) 10%, transparent)}.system-opt:disabled{opacity:.45;cursor:not-allowed}.system-name{font-size:14px;font-weight:500}.system-desc{color:var(--text-dim);font-size:12.5px}.soon{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);border:1px solid var(--border);border-radius:3px;padding:2px 5px;font-size:10px;position:absolute;top:8px;right:8px}.sheet-page{--sheet-max:1200px}.sheet-body{max-width:var(--sheet-max);margin:0 auto;padding:24px clamp(14px,3vw,28px) 100px}.sheet-section{margin-top:30px}.sheet-section:first-child{margin-top:0}.section-head{border-bottom:1px solid var(--border);align-items:baseline;gap:12px;margin-bottom:14px;padding-bottom:8px;display:flex}.section-head h2{letter-spacing:.06em;text-transform:uppercase;color:var(--sys-accent);margin:0;font-size:14px;font-weight:600}.section-head .section-hint{color:var(--text-faint);font-size:12.5px}.subhead{letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);align-items:center;gap:8px;margin:0 0 10px;font-size:12px;font-weight:600;display:flex}.cols-3{grid-template-columns:repeat(3,1fr);gap:26px;display:grid}.cols-2{grid-template-columns:1fr 1fr;gap:26px;display:grid}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:16px}.sheet-input{width:100%;min-width:0;color:var(--text);border:none;border-bottom:1px solid var(--border);background:0 0;border-radius:0;outline:none;padding:4px 2px 5px;font-family:inherit;font-size:14.5px;transition:border-color .14s}.sheet-input:focus{border-bottom-color:var(--sys-accent)}.sheet-input:read-only{color:var(--text-dim);cursor:default}.sheet-input.narrow{text-align:center;width:52px}.sheet-field{align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.sheet-field>.sheet-field-label{letter-spacing:.02em;min-width:92px;color:var(--text-dim);flex:none;font-size:11.5px;font-weight:500}.sheet-field>.sheet-input,.sheet-field>.combo{flex:1}.sheet-textarea{width:100%;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);resize:vertical;outline:none;min-height:90px;padding:9px 11px;font-family:inherit;font-size:14.5px;line-height:1.5}.sheet-textarea:focus{border-color:var(--sys-accent)}.trait-row{align-items:center;gap:10px;padding:3px 0;display:flex}.trait-name{color:var(--text);flex:none;font-size:13.5px}.trait-name.clickable{cursor:help;border-bottom:1px dotted #0000}.trait-name.clickable:hover{color:var(--sys-accent);border-bottom-color:var(--sys-accent)}.trait-fill{background:var(--border);flex:1;align-self:center;min-width:8px;height:1px}.dots{flex:none;gap:5px;padding:2px 0;display:inline-flex}.dots:focus-visible{outline:2px solid var(--accent-ring);outline-offset:3px;border-radius:3px}.dot{border:1.5px solid var(--border-strong);cursor:pointer;background:0 0;border-radius:50%;width:14px;height:14px;padding:0;transition:background .12s,border-color .12s}.dots:hover .dot{border-color:var(--text-faint)}.dot.filled{background:var(--sys-accent);border-color:var(--sys-accent)}.dots-lg .dot{width:16px;height:16px}.dots-sm .dot{width:12px;height:12px}.box-track{flex-wrap:wrap;justify-content:center;gap:5px;display:flex}.box{border:1.5px solid var(--border-strong);cursor:pointer;background:0 0;border-radius:3px;width:16px;height:16px;padding:0;transition:background .12s,border-color .12s}.box-track:hover .box:not(.locked){border-color:var(--text-faint)}.box-blood .box.on{background:var(--accent);border-color:var(--accent)}.box-willpower .box.on{background:var(--info);border-color:var(--info)}.box.locked{border-color:var(--border);opacity:.5;cursor:not-allowed;background:repeating-linear-gradient(45deg,#0000,#0000 3px,#ffffff0a 3px 6px)}.health-track{flex-direction:column;display:flex}.health-row{border-bottom:1px solid var(--border);grid-template-columns:1fr auto 24px;align-items:center;gap:10px;padding:3px 0;display:grid}.health-row:last-child{border-bottom:none}.health-label{font-size:13px}.health-penalty{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:12.5px}.health-box{width:22px;height:22px;color:var(--text);border:1.5px solid var(--border-strong);cursor:pointer;background:0 0;border-radius:4px;place-items:center;font-family:inherit;font-size:14px;font-weight:600;line-height:1;transition:border-color .12s,background .12s;display:grid}.health-box:hover{border-color:var(--text-faint)}.health-box[data-state="2"]{color:var(--accent-hover);border-color:var(--accent)}.health-box[data-state="3"]{color:#fff;background:var(--accent);border-color:var(--accent)}.counter{color:var(--text-faint);align-items:baseline;gap:6px;margin-top:10px;font-size:12px;display:inline-flex}.counter b{color:var(--text);font-variant-numeric:tabular-nums;font-size:14px;font-weight:600}.rows{flex-direction:column;gap:6px;display:flex}.list-row{align-items:center;gap:8px;display:flex}.list-row>.combo,.list-row>.sheet-input{flex:1;min-width:0}.list-row>.sheet-input.auto-trait{text-overflow:ellipsis;flex:0 0 46%;font-size:13px}.list-row>.sheet-input.narrow{flex:none}.row-remove{width:20px;height:20px;color:var(--text-faint);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:50%;flex:none;place-items:center;font-size:15px;line-height:1;transition:color .12s,border-color .12s;display:grid}.row-remove:hover{color:var(--danger);border-color:var(--danger)}.add-row{color:var(--text-dim);border:1px dashed var(--border-strong);border-radius:var(--r-sm);cursor:pointer;background:0 0;align-self:flex-start;margin-top:8px;padding:5px 10px;font-family:inherit;font-size:12.5px;font-weight:500;transition:color .12s,border-color .12s}.add-row:hover{color:var(--sys-accent);border-color:var(--sys-accent)}.rows-header{letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);gap:8px;margin-bottom:6px;font-size:11px;font-weight:500;display:flex}.combo{align-items:baseline;min-width:0;display:flex;position:relative}.combo .sheet-input{flex:1;min-width:0}.combo-toggle{color:var(--text-faint);cursor:pointer;background:0 0;border:none;flex:none;align-self:center;padding:0 2px 0 6px;font-size:10px;line-height:1}.combo-toggle:hover{color:var(--sys-accent)}.combo-menu{z-index:40;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--r-sm);max-height:230px;box-shadow:var(--shadow-md);margin:4px 0 0;padding:4px;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.combo-opt{text-align:left;width:100%;color:var(--text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:4px;padding:6px 9px;font-family:inherit;font-size:14px;display:block;overflow:hidden}.combo-opt:hover,.combo-opt.active{background:var(--surface-3);color:var(--sys-accent)}.info-btn{width:18px;height:18px;font-family:var(--font-mono);color:var(--text-faint);border:1px solid var(--border-strong);cursor:pointer;background:0 0;border-radius:50%;flex:none;place-items:center;font-size:11px;transition:color .12s,border-color .12s;display:grid}.info-btn:hover{color:var(--sys-accent);border-color:var(--sys-accent)}.info-pop{z-index:200;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--r-md);max-width:340px;max-height:min(70vh,520px);box-shadow:var(--shadow-lg);padding:13px 32px 14px 15px;position:fixed;overflow-y:auto}.info-pop h4{letter-spacing:.04em;text-transform:uppercase;color:var(--sys-accent);margin:0 0 6px;font-size:12px;font-weight:600}.info-pop p{color:var(--text);margin:0;font-size:14px;line-height:1.45}.info-levels{border-top:1px solid var(--border);flex-direction:column;gap:6px;margin:12px 0 0;padding:10px 0 0;list-style:none;display:flex}.info-levels li{color:var(--text-dim);gap:9px;font-size:13px;line-height:1.4;display:flex}.info-levels li.current{color:var(--text)}.info-level-dots{letter-spacing:1px;color:var(--text-faint);flex:none;font-size:9px;line-height:1.9}.info-levels li.current .info-level-dots{color:var(--sys-accent)}.info-level-text b{color:var(--text-dim);font-weight:600}.info-levels li.current .info-level-text b{color:var(--sys-accent)}.info-powers{border-top:1px solid var(--border);flex-direction:column;gap:11px;margin:12px 0 0;padding:10px 0 0;list-style:none;display:flex}.info-powers li{font-size:13px;line-height:1.4}.info-power-head{align-items:baseline;gap:8px;display:flex}.info-power-head b{color:var(--text);font-weight:600}.info-powers li.current .info-power-head b{color:var(--sys-accent)}.info-power-effect{color:var(--text-dim);margin-left:44px}.info-power-roll{color:var(--text-faint);margin-top:2px;margin-left:44px;font-size:12px}.info-pop-close{color:var(--text-faint);cursor:pointer;background:0 0;border:none;font-size:17px;line-height:1;position:absolute;top:6px;right:8px}.info-pop-close:hover{color:var(--text)}.combat-table{border-collapse:collapse;width:100%}.combat-table th{letter-spacing:.03em;text-transform:uppercase;color:var(--text-faint);text-align:left;padding:0 4px 6px;font-size:11px;font-weight:500}.combat-table td{padding:2px 4px}.combat-table .sheet-input{font-size:13.5px}@media screen and (width<=900px){.cols-3,.cols-2{grid-template-columns:1fr;gap:18px}.combat-wrap{overflow-x:auto}.combat-table{min-width:620px}}@page{size:A4;margin:11mm}@media print{html:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--bg-elevated:#fff;--surface:#fff;--surface-2:#fff;--surface-3:#fff;--border:#c4c4c4;--border-strong:#8a8a8a;--text:#000;--text-dim:#3a3a3a;--text-faint:#6a6a6a;--accent:#000;--accent-hover:#000;--accent-soft:transparent;--sys-accent:#000;--info:#4a4a4a;--danger:#000}*,:before,:after{-webkit-print-color-adjust:exact;print-color-adjust:exact;box-shadow:none!important}html body{color:#000;background:#fff}.sheet-page,.vtm-sheet{--sys-accent:#000!important}.panel{background:0 0;border-color:#bdbdbd}.dot.filled{background:#000;border:7px solid #000}.box.on{background:#000;border:8px solid #000}.box-willpower .box.on{background:#6f6f6f;border-color:#6f6f6f}.box.locked{opacity:1;background:#ededed;border:1.5px solid #c4c4c4}.no-print{display:none!important}.sheet-body{max-width:none;padding:0}.sheet-section{margin-top:18px}.cols-3,.cols-2{gap:14px}.panel{break-inside:avoid;padding:10px 11px}.section-head{margin-bottom:10px;padding-bottom:6px}.subhead{margin-bottom:7px}.trait-row{gap:7px;padding:1px 0}.trait-name{font-size:12px}.rows{gap:4px}.sheet-input{padding:2px 2px 3px;font-size:12.5px}.sheet-field{gap:7px;margin-bottom:5px}.sheet-field>.sheet-field-label{min-width:72px;font-size:10.5px}.sheet-textarea{height:auto;min-height:0;font-size:12.5px}.counter{margin-top:7px}.dots{gap:4px}.dot{width:12px;height:12px}.dots-lg .dot{width:13px;height:13px}::placeholder{color:#0000!important}.hint-text{display:none}.add-row,.row-remove,.info-btn,.combo-toggle,.combo-menu,.info-pop,.is-empty{display:none!important}.page-break{break-before:page;page-break-before:always}.section-head,.subhead{break-after:avoid}.trait-row,.health-row,.list-row,.combat-table tr,.sheet-section{break-inside:avoid}}.sheet-bar{z-index:30;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0b0c0eeb;align-items:center;gap:14px;padding:10px clamp(14px,3vw,28px);display:flex;position:sticky;top:0}.sheet-bar-title{min-width:0}.sheet-bar-name{white-space:nowrap;text-overflow:ellipsis;max-width:34vw;font-size:14.5px;font-weight:600;overflow:hidden}.sheet-bar-system{color:var(--text-faint);font-size:12px}.save-status{color:var(--text-faint);white-space:nowrap;font-size:12.5px}.save-status.save-saved{color:var(--success)}.save-status.save-error{color:var(--danger)}.save-status.save-saving,.save-status.save-pending{color:var(--text-dim)}@media screen and (width<=640px){.save-status{display:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0c0e;--bg-elevated:#111317;--surface:#15181d;--surface-2:#1c2027;--surface-3:#242932;--border:#272c34;--border-strong:#363d48;--text:#e7e9ee;--text-dim:#9aa2ae;--text-faint:#6b7280;--accent:#c0394b;--accent-hover:#d4485c;--accent-soft:#c0394b24;--accent-ring:#c0394b66;--danger:#e05260;--success:#4ea36b;--info:#4a7fc0;--sys-accent:var(--accent);--r-sm:6px;--r-md:10px;--r-lg:14px;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 24px #00000073;--shadow-lg:0 24px 60px #0000008c;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;font-size:15px;line-height:1.5}a{color:inherit}::placeholder{color:var(--text-faint)}::selection{background:var(--accent-soft)}.btn{color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:7px;padding:9px 14px;font-family:inherit;font-size:14px;font-weight:500;line-height:1;transition:background .14s,border-color .14s,color .14s;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-3);border-color:var(--border-strong)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-sm{padding:6px 10px;font-size:13px}.btn-icon{color:var(--text-dim);background:0 0;border-color:#0000;padding:7px}.btn-icon:hover:not(:disabled){background:var(--surface-3);color:var(--text)}.btn-danger:hover:not(:disabled){color:var(--danger);border-color:var(--danger);background:#e052601a}.input{width:100%;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);outline:none;padding:9px 11px;font-family:inherit;font-size:15px;transition:border-color .14s,box-shadow .14s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}textarea.input{resize:vertical;min-height:80px;line-height:1.45}.label{letter-spacing:.02em;color:var(--text-dim);margin-bottom:6px;font-size:12px;font-weight:500;display:block}.field{margin-bottom:14px}.spacer{flex:1}.stack{flex-direction:column;display:flex}.row{align-items:center;display:flex}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.spinner{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.page-loader{place-items:center;min-height:60vh;display:grid}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
