:root{--bg-page:#e2d5b8;--bg-page-grain:#5037190d;--bg-card:#ece0c4;--bg-card-hover:#f0e6cd;--bg-input:#f5edd5;--bg-elevated:#f8f1de;--ink-primary:#1f1a14;--ink-secondary:#4a3f30;--ink-tertiary:#7a6e5a;--ink-faint:#a89d85;--label-bg:#1f1a14;--label-ink:#f5edd5;--accent:#7a1f1f;--accent-soft:#a83a3a;--accent-bg:#7a1f1f0f;--accent-bg-hover:#7a1f1f1a;--derived-bg:#c8c8a0;--derived-ink:#3a3a20;--derived-bg-soft:#9696642e;--rule:#b8a986;--rule-strong:#8a7d5a;--warn-ink:#8b5a00;--warn-bg:#b4821e14;--info-ink:#2c5e7a;--info-bg:#2c5e7a0f;--error-ink:#8b1f1f;--error-bg:#8b1f1f14;--font-display:"Cinzel", "Trajan Pro", "Times New Roman", serif;--font-body:"EB Garamond", "Garamond", "Georgia", serif;--font-mono:"JetBrains Mono", "Menlo", "Consolas", monospace;--fs-xs:.7rem;--fs-sm:.82rem;--fs-base:.94rem;--fs-md:1.06rem;--fs-lg:1.34rem;--fs-xl:1.79rem;--fs-display:2.32rem;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--radius-sm:2px;--radius-md:3px;--stat-box-height:40px;--shadow-card:0 1px 0 #32230f0f, 0 0 0 1px var(--rule);--shadow-card-hover:0 1px 2px #32230f1a, 0 0 0 1px var(--rule-strong);--shadow-elevated:0 8px 24px #32230f33;--transition:.12s ease-out}@media (prefers-color-scheme:dark){:root{--bg-page:#1a1714;--bg-page-grain:#ffe6b404;--bg-card:#2c2821;--bg-card-hover:#36302a;--bg-input:#221e18;--bg-elevated:#36302a;--ink-primary:#f0e4cc;--ink-secondary:#c4b89e;--ink-tertiary:#948870;--ink-faint:#6a6248;--label-bg:#e8dcc4;--label-ink:#1a1714;--accent:#d56359;--accent-soft:#e0857a;--accent-bg:#d5635924;--accent-bg-hover:#d5635938;--derived-bg:#6a6a40;--derived-ink:#e0e0b0;--derived-bg-soft:#8c8c5047;--rule:#5a5246;--rule-strong:#7a7060;--warn-ink:#e6b54a;--warn-bg:#e6b54a1f;--info-ink:#7ec0d6;--info-bg:#7ec0d61a;--error-ink:#e06d62;--error-bg:#e06d6224}body{background-color:#0000!important;background-image:linear-gradient(#14110ee0,#14110ee0),url(/parchment.jpg)!important;background-position:0 0,0 0!important;background-repeat:repeat!important;background-size:1024px 1024px!important;background-attachment:fixed!important;background-origin:padding-box,padding-box!important;background-clip:border-box,border-box!important}}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;padding:0}body{background:var(--bg-page);color:var(--ink-primary);font-family:var(--font-body);font-size:var(--fs-base);-webkit-font-smoothing:antialiased;background-image:url(/parchment.jpg);background-repeat:repeat;background-size:1024px 1024px;background-attachment:fixed;line-height:1.55}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}.app-shell{max-width:1280px;padding:var(--sp-5) var(--sp-5) var(--sp-7);min-height:100vh;margin:0 auto}.app-header{padding-bottom:var(--sp-4);margin-bottom:var(--sp-6);border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:var(--sp-4);display:flex}.app-title{font-family:var(--font-display);letter-spacing:.02em;color:var(--ink-primary);cursor:pointer;-webkit-user-select:none;user-select:none;margin:0;font-size:1.16rem;font-weight:600}.app-title:hover{color:var(--accent)}.app-title small{font-family:var(--font-body);font-size:var(--fs-sm);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-tertiary);margin-top:var(--sp-1);font-weight:400;display:block}.app-nav{gap:var(--sp-4);align-items:center;display:flex}.btn{appearance:none;border:1px solid var(--rule-strong);padding:var(--sp-2) var(--sp-4);font-family:var(--font-body);font-size:var(--fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-primary);border-radius:var(--radius-sm);transition:all var(--transition);background:0 0}.btn:hover,.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:#5d1717;border-color:#5d1717}.btn-ghost{color:var(--ink-secondary);border-color:#0000}.btn-ghost:hover{background:var(--accent-bg);color:var(--accent);border-color:#0000}.btn-sm{padding:var(--sp-1) var(--sp-3);font-size:var(--fs-xs)}.card{background:var(--bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--sp-5);margin-bottom:var(--sp-4)}.card-clickable{cursor:pointer;transition:all var(--transition)}.card-clickable:hover{background:var(--bg-card-hover);box-shadow:var(--shadow-card-hover);transform:translateY(-1px)}.section-header{font-family:var(--font-display);font-weight:600;font-size:var(--fs-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--label-bg);margin:0 0 var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--rule-strong);justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.section-header-count{color:var(--ink-tertiary);font-size:var(--fs-xs);letter-spacing:.1em;font-weight:400}.collapsible-section{scroll-margin-top:var(--sp-5)}.collapsible-header{cursor:pointer;-webkit-user-select:none;user-select:none}.collapsible-header:hover{color:var(--accent-soft)}.collapsible-toggle{appearance:none;color:var(--ink-tertiary);cursor:pointer;width:24px;height:24px;transition:all var(--transition);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:inline-flex}.collapsible-toggle:hover{color:var(--accent);background:var(--accent-bg)}.collapsible-toggle .chev{transition:transform var(--transition);display:inline-block}.collapsible-section[data-collapsed=true] .collapsible-toggle .chev{transform:rotate(-90deg)}.collapsible-section[data-collapsed=true] .section-header{border-bottom:none;margin-bottom:0;padding-bottom:0}.collapsible-body{overflow:hidden}.collapsible-section[data-collapsed=true] .collapsible-body{display:none}.collapsible-section[data-collapsed=true].card{padding-top:var(--sp-3);padding-bottom:var(--sp-3)}.bottom-tray{-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--rule-strong);z-index:100;padding:var(--sp-2) 0;background:#f4ecdceb;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 12px #46321e0f}@media (prefers-color-scheme:dark){.bottom-tray{background:#1a1714eb}}.bottom-tray-scroll{padding:0 var(--sp-2);flex-wrap:wrap;justify-content:center;gap:4px;max-width:100%;display:flex;overflow:hidden}.bottom-tray-scroll::-webkit-scrollbar{display:none}.tray-pill{appearance:none;border:1px solid var(--rule);border-radius:var(--radius-md);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-secondary);cursor:pointer;white-space:nowrap;transition:all var(--transition);background:0 0;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:2px;min-width:56px;padding:4px 8px;font-size:.62rem;display:flex}.tray-pill:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}.tray-pill-icon{align-items:center;font-size:14px;line-height:1;display:inline-flex}.tray-pill-active{background:var(--accent-bg);border-color:var(--accent-soft);color:var(--accent)}.app-shell{padding-bottom:96px}.library-toolbar{gap:var(--sp-3);margin-bottom:var(--sp-5);flex-wrap:wrap;align-items:center;display:flex}.search-input{padding:var(--sp-2) var(--sp-3);background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:var(--fs-base);color:var(--ink-primary);flex:280px}.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.character-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(320px,1fr));display:grid}.character-card-name{font-family:var(--font-display);font-size:var(--fs-md);letter-spacing:.02em;margin:0 0 var(--sp-2);color:var(--ink-primary);font-weight:600}.character-card-meta{gap:var(--sp-3);font-size:var(--fs-sm);color:var(--ink-secondary);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.character-card-meta-item{align-items:baseline;gap:var(--sp-1);display:inline-flex}.character-card-meta-item label{font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-tertiary)}.character-card-tier{background:var(--accent-bg);color:var(--accent);font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;border-radius:var(--radius-sm);padding:2px 8px;display:inline-block}.character-card-classes{font-size:var(--fs-sm);color:var(--ink-tertiary);margin-bottom:var(--sp-3);font-style:italic}.character-card-actions{gap:var(--sp-2);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--rule);display:flex}.empty-state{text-align:center;padding:var(--sp-7);color:var(--ink-secondary)}.empty-state h2{font-family:var(--font-display);color:var(--ink-primary);margin:0 0 var(--sp-3);font-weight:500}.empty-state p{margin:0 0 var(--sp-5);max-width:480px;margin-inline:auto}.dropzone{border:2px dashed var(--rule-strong);border-radius:var(--radius-md);padding:var(--sp-7);text-align:center;color:var(--ink-secondary);transition:all var(--transition);margin-bottom:var(--sp-5)}.dropzone-active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.dropzone p{font-size:var(--fs-sm);letter-spacing:.04em;margin:0}.dropzone-hint{color:var(--ink-tertiary);text-transform:uppercase;margin-top:var(--sp-2)!important;font-size:var(--fs-xs)!important;letter-spacing:.12em!important}.editor-content{min-width:0;padding-bottom:72px}.character-name-display{font-family:var(--font-display);margin:0 0 var(--sp-1);color:var(--ink-primary);font-size:1.16rem;font-weight:600}.character-subtitle{font-family:var(--font-body);font-style:italic;font-size:var(--fs-md);color:var(--ink-secondary);margin:0 0 var(--sp-5);padding-bottom:var(--sp-4);border-bottom:1px solid var(--rule)}.field-grid{gap:var(--sp-3) var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.field{gap:var(--sp-1);flex-direction:column;min-width:0;display:flex}.field label{font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-tertiary)}.field input,.field textarea,.field select{background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-base);color:var(--ink-primary);transition:border-color var(--transition);width:100%;min-width:0}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.field-readonly input{border-color:#0000;border-bottom:1px dotted var(--rule);color:var(--ink-secondary);background:0 0}.field-numeric input{font-variant-numeric:tabular-nums;text-align:right;font-family:var(--font-mono);font-size:var(--fs-base);letter-spacing:.02em;width:auto;min-width:4ch;max-width:100%}.field-longtext textarea{font-family:var(--font-body);resize:vertical;min-height:2.4em;line-height:1.45;overflow-y:hidden}.field-longtext textarea.field-longtext-maxed{overflow-y:auto}.field-numeric{align-items:flex-start}.field-numeric input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.field-numeric input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.field-numeric input[type=number]{-moz-appearance:textfield}.banner{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-sm);margin-bottom:var(--sp-4);font-size:var(--fs-sm);align-items:flex-start;gap:var(--sp-3);border-left:3px solid;display:flex}.banner-info{color:var(--info-ink);background:var(--info-bg)}.banner-warn{color:var(--warn-ink);background:var(--warn-bg)}.banner-error{color:var(--error-ink);background:var(--error-bg)}.banner strong{letter-spacing:.02em;font-weight:600}.save-indicator{font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-tertiary)}.save-indicator-saved{color:var(--accent)}.stub{padding:var(--sp-6);text-align:center;color:var(--ink-tertiary);border:1px dashed var(--rule);border-radius:var(--radius-md);background:0 0;font-style:italic}.stub p{margin:var(--sp-1) 0}.text-mono{font-family:var(--font-mono)}.text-tertiary{color:var(--ink-tertiary)}.text-secondary{color:var(--ink-secondary)}.how-to-use{margin:0 0 var(--sp-3) 0;padding:var(--sp-2) var(--sp-3);background:var(--accent-bg);border-left:2px solid var(--accent-soft);font-size:var(--fs-xs);color:var(--ink-secondary);font-style:italic;line-height:1.4}.how-to-use em{color:var(--ink-primary);font-style:normal;font-weight:600}.flex-row{align-items:center;gap:var(--sp-3);display:flex}.flex-col{gap:var(--sp-3);flex-direction:column;display:flex}.spacer{flex:1}.ability-grid{gap:var(--sp-3);margin-bottom:var(--sp-4);grid-template-columns:repeat(6,1fr);display:grid}.ability-cell{text-align:center;padding:var(--sp-3) var(--sp-2);background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-md)}.ability-label{font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--label-bg);margin-bottom:var(--sp-2);font-weight:600}.ability-score-input{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-xl);text-align:center;border:1px solid #0000;border-bottom:1px solid var(--rule);padding:var(--sp-1);width:100%;color:var(--ink-primary);background:0 0;font-weight:500}.ability-score-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.ability-modifier{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-md);color:var(--ink-secondary);margin-top:var(--sp-2);letter-spacing:.04em}.ability-modifier-positive{color:var(--accent)}.saves-grid{gap:var(--sp-4);margin-bottom:var(--sp-4);grid-template-columns:repeat(3,1fr);display:grid}.save-cell{gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--rule);border-radius:var(--radius-md);background:var(--bg-card);flex-direction:column;display:flex}.save-cell-header{justify-content:space-between;align-items:baseline;display:flex}.save-name{font-family:var(--font-display);font-size:var(--fs-sm);letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.save-fields{gap:var(--sp-2);grid-template-columns:1fr 1fr;display:grid}.save-fields .field{gap:2px}.save-fields .field label{font-size:10px}.weapon-card{border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--sp-4);margin-bottom:var(--sp-3);background:var(--bg-card);position:relative}.weapon-card-header{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);padding-bottom:var(--sp-3);border-bottom:1px solid var(--rule);display:flex}.weapon-card-name{font-family:var(--font-display);font-size:var(--fs-md);color:var(--ink-primary);padding:var(--sp-1);background:0 0;border:none;border-bottom:1px dotted #0000;flex:1;min-width:0;font-weight:600}.weapon-card-name:hover{border-bottom-color:var(--rule)}.weapon-card-name:focus{border-bottom-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.weapon-card-fields{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.combat-stats-grid{gap:var(--sp-3);margin-bottom:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.stat-cell{border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--sp-3);background:var(--bg-card);text-align:center}.stat-cell-label{font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--label-bg);margin-bottom:var(--sp-2)}.stat-cell-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-xl);text-align:center;border:1px solid #0000;border-bottom:1px solid var(--rule);padding:var(--sp-1);width:100%;color:var(--ink-primary);background:0 0}.stat-cell-value:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.stat-row{gap:var(--sp-2);padding:var(--sp-2) 0;margin-bottom:var(--sp-1);flex-wrap:wrap;align-items:flex-start;display:flex}.stat-row+.stat-row{border-top:1px dotted var(--rule);margin-top:var(--sp-1);padding-top:var(--sp-3)}.defense-saves{column-gap:var(--sp-2);row-gap:var(--sp-3);padding:var(--sp-2) 0;margin-bottom:var(--sp-1);grid-template-columns:max-content auto auto auto auto auto auto 1fr;align-items:start;display:grid}.defense-saves>.stat-row{display:contents}.defense-saves>.stat-row+.stat-row{border-top:none;margin-top:0;padding-top:0}.stat-row-trailing{flex:200px;min-width:200px}.stat-row-gap{width:var(--sp-4);flex:none;display:inline-block}.stat-row-weapon{flex-wrap:nowrap;min-width:0;overflow:hidden}.stat-box{flex-direction:column;flex:none;align-items:center;gap:2px;min-width:64px;display:flex}.stat-box-input,.stat-box-readonly{background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-base);color:var(--ink-primary);text-align:center;width:auto;min-width:4ch;height:var(--stat-box-height);min-height:var(--stat-box-height);box-sizing:border-box;transition:border-color var(--transition);vertical-align:top;padding:4px 8px}textarea.stat-box-input{height:var(--stat-box-height)}.stat-box-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.stat-box-readonly{color:var(--ink-secondary);border-color:#0000;border-bottom:1px dotted var(--rule);cursor:default;background:0 0;border-radius:0}.stat-box-label{font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-tertiary);text-align:center;white-space:normal;overflow-wrap:break-word;word-break:normal;-webkit-hyphens:auto;hyphens:auto;width:100%;max-width:100%;margin-top:2px;font-size:10px;line-height:1.2}.stat-box-label-wide{white-space:normal;max-width:22ch}.stat-box-anchor{background:var(--ink-primary);color:var(--bg-card);font-family:var(--font-display);font-size:var(--fs-base);letter-spacing:.08em;border-radius:var(--radius-sm);text-align:center;min-width:4ch;height:var(--stat-box-height);min-height:var(--stat-box-height);box-sizing:border-box;flex-direction:column;flex-shrink:0;justify-content:center;padding:4px 12px;font-weight:600;line-height:1.05;display:flex}.stat-box-anchor-sub{font-family:var(--font-body);letter-spacing:.04em;text-transform:uppercase;color:var(--bg-card);opacity:.7;white-space:nowrap;margin-top:1px;font-size:9px;font-weight:400;line-height:1.05}.stat-box-anchor-uniform{width:124px;min-width:124px}.stat-box-anchor-uniform .stat-box-anchor-sub{letter-spacing:0;font-size:8px}.stat-box-total{font-size:var(--fs-lg);background:var(--bg-card);padding:2px 10px;font-weight:500}.stat-row-sep{height:var(--stat-box-height);font-family:var(--font-mono);color:var(--ink-tertiary);font-size:var(--fs-md);align-self:center;align-items:center;margin-bottom:16px;padding:0 2px;display:inline-flex}.subgroup-header{font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-tertiary);margin:var(--sp-3) 0 var(--sp-1);border-bottom:1px dotted var(--rule);padding-bottom:2px}.abilities-grid{gap:var(--sp-3);margin-bottom:var(--sp-2);grid-template-columns:repeat(3,1fr);align-items:start;display:grid}.ability-cell-mk{flex-wrap:nowrap;align-items:flex-start;gap:4px;min-width:0;display:flex}.ability-cell-mk .stat-box-anchor-uniform{width:96px;min-width:96px}.ability-cell-mk .stat-box-anchor-uniform .stat-box-anchor-sub{letter-spacing:0;font-size:7px}.ability-cell-mk .stat-box{flex:1 1 0;min-width:0}.ability-cell-mk .stat-box-label{letter-spacing:.04em;white-space:pre-line;word-spacing:normal;font-size:8px}.stat-box-derived input,.stat-box-derived .stat-box-input{background:var(--derived-bg-soft);color:var(--derived-ink);border-color:#96966473;font-style:italic}.stat-box-derived .stat-box-label{color:var(--ink-tertiary)}.chip-row{align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;flex-wrap:wrap;min-height:36px;display:flex}.chip-row .stat-box-anchor{margin-right:var(--sp-2)}.chip{align-items:center;gap:var(--sp-1);background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:var(--fs-sm);font-family:var(--font-body);color:var(--ink-primary);cursor:pointer;transition:all var(--transition);max-width:100%;padding:4px 10px;display:inline-flex}.chip:hover{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.chip-text{white-space:nowrap;text-overflow:ellipsis;max-width:220px;overflow:hidden}.chip-remove{appearance:none;color:var(--ink-tertiary);cursor:pointer;font-size:var(--fs-sm);opacity:0;transition:opacity var(--transition);background:0 0;border:none;padding:0 0 0 4px}.chip:hover .chip-remove{opacity:1}.chip-remove:hover{color:var(--accent)}.chip-add{background:var(--ink-primary);width:28px;height:28px;color:var(--bg-card);border-radius:var(--radius-sm);font-family:var(--font-display);font-size:var(--fs-md);cursor:pointer;transition:all var(--transition);border:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.chip-add:hover{background:var(--accent)}.chip-edit{align-items:center;gap:var(--sp-1);background:var(--bg-input);border:1px solid var(--accent);border-radius:var(--radius-sm);box-shadow:0 0 0 2px var(--accent-bg);padding:2px 4px;display:inline-flex}.chip-edit input{font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);background:0 0;border:none;width:auto;min-width:8ch;padding:2px 4px}.chip-edit input:focus{outline:none}.skills-table-mk{border-collapse:separate;border-spacing:4px 2px;width:100%;font-size:var(--fs-sm)}.skills-table-mk thead th{font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-tertiary);text-align:center;border-bottom:1px solid var(--rule);padding:4px 2px;font-size:10px;font-weight:400}.skills-table-mk thead th:first-child{width:40px}.skills-table-mk thead th:nth-child(2){text-align:left;width:220px}.skills-table-mk thead th:nth-child(3),.skills-table-mk thead th:nth-child(4),.skills-table-mk thead th:nth-child(5),.skills-table-mk thead th:nth-child(6),.skills-table-mk thead th:nth-child(7),.skills-table-mk thead th:nth-child(8),.skills-table-mk thead th:nth-child(9){width:60px}.skills-table-mk tbody td{vertical-align:middle;padding:1px 2px}.skills-table-mk td.skill-name-cell input{background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);box-sizing:border-box;padding:3px 6px}.skills-table-mk td.skill-name-cell>input{width:100%}.skill-prefixed-name{align-items:center;gap:var(--sp-1);width:100%;display:inline-flex}.skill-prefix-text{font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);white-space:nowrap;flex:none}.skill-prefixed-name input{flex:auto;min-width:6ch}.skills-table-mk td.skill-notes-cell input{background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);width:100%;font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);box-sizing:border-box;padding:3px 6px}.skills-table-mk td.skill-notes-cell input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.skills-table-mk thead th.skill-notes-header{text-align:left;width:auto;padding-left:var(--sp-2)}.skills-table-mk td.skill-name-cell{text-align:left;font-family:var(--font-body);color:var(--ink-primary);padding-left:var(--sp-2)}.skills-table-mk td.skill-name-cell input{width:100%;font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);background:0 0;border:1px solid #0000;border-bottom-style:dotted;padding:2px 4px}.skills-table-mk td.skill-name-cell input:hover{border-bottom-color:var(--rule)}.skills-table-mk td.skill-name-cell input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.skills-table-mk td.skill-numeric input{background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-sm);color:var(--ink-primary);text-align:center;width:100%;padding:4px 6px}.skills-table-mk td.skill-numeric input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.skills-table-mk td.skill-numeric.derived input{color:var(--ink-secondary);background:#a0b4782e;border-color:#a0b47866;font-style:italic}.skills-table-mk .skill-class-toggle-cell{text-align:center}.skill-trained-only{color:var(--accent);margin-left:2px;font-weight:600}.spells-table-mk{border-collapse:separate;border-spacing:4px 2px;width:100%;font-size:var(--fs-sm)}.spells-table-mk thead th{font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);text-align:center;border-bottom:1px solid var(--rule);padding:6px 4px;font-weight:600}.spells-table-mk thead th:first-child{text-align:left;font-family:var(--font-display);background:var(--ink-primary);color:var(--bg-card);border-radius:var(--radius-sm);border-bottom:none;padding:6px 12px}.spells-table-mk tbody th{text-align:left;font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--bg-card);background:var(--ink-primary);border-radius:var(--radius-sm);white-space:nowrap;width:100px;padding:4px 12px;font-weight:600}.spells-table-mk tbody td{padding:1px 2px}.spells-table-mk tbody td input{background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-sm);color:var(--ink-primary);text-align:center;width:100%;padding:4px 6px}.spells-table-mk tbody td input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.ac-item-row{gap:var(--sp-1);padding:var(--sp-2) 0;border-bottom:1px dotted var(--rule);flex-wrap:wrap;align-items:flex-end;display:flex}.weapon-remove-btn{appearance:none;background:var(--accent);color:#fff;border-radius:var(--radius-sm);width:var(--stat-box-height);height:var(--stat-box-height);cursor:pointer;transition:background var(--transition), transform var(--transition);border:none;flex-shrink:0;align-self:flex-start;font-size:22px;font-weight:700;line-height:1;box-shadow:0 1px 3px #8b1f1f4d}.weapon-remove-btn:hover{background:var(--accent-hover,#6e1818);transform:scale(1.08)}.weapon-remove-btn:active{transform:scale(.95)}.chiplist{margin-bottom:var(--sp-3)}.chiplist+.chiplist{border-top:1px dotted var(--rule);padding-top:var(--sp-3)}.chiplist-search{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.chiplist-search .search-input{font-size:var(--fs-sm);flex:0 240px}.chip-row{gap:var(--sp-2);padding:var(--sp-1) 0;flex-wrap:wrap;align-items:flex-start;display:flex}.chip{background:var(--bg-input);border:1px solid var(--rule);font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);cursor:pointer;transition:border-color var(--transition), background var(--transition);-webkit-user-select:none;user-select:none;border-radius:6px;align-items:center;gap:4px;max-width:280px;padding:4px 8px 4px 10px;display:inline-flex}.chip:hover{border-color:var(--accent);background:var(--accent-bg)}.chip-text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.chip-remove{appearance:none;color:var(--ink-tertiary);cursor:pointer;transition:color var(--transition), background var(--transition);background:0 0;border:none;border-radius:50%;padding:0 2px;font-size:14px;font-weight:700;line-height:1}.chip:hover .chip-remove{color:var(--accent)}.chip-remove:hover{background:var(--accent);color:#fff}.chip-add{appearance:none;background:var(--bg-input);border:1px dashed var(--rule);color:var(--ink-tertiary);font-size:var(--fs-sm);cursor:pointer;transition:all var(--transition);border-radius:6px;padding:4px 12px;font-weight:600}.chip-add:hover{border-color:var(--accent);color:var(--accent);border-style:solid}.chip-edit-expanded{gap:var(--sp-2);padding:var(--sp-2);background:var(--bg-input);border:1px solid var(--accent);border-radius:var(--radius-md);flex-direction:column;flex:none;min-width:280px;max-width:480px;display:flex}.chip-edit-name{font-family:var(--font-body);font-size:var(--fs-md);border:none;border-bottom:1px solid var(--rule);color:var(--ink-primary);background:0 0;outline:none;padding:4px 2px;font-weight:500}.chip-edit-name:focus{border-bottom-color:var(--accent)}.chip-edit-row{gap:var(--sp-2);flex-wrap:wrap;display:flex}.chip-edit-row label{flex-direction:column;flex:auto;gap:2px;display:flex}.chip-edit-row label input,.chip-edit-row label select{font-family:var(--font-body);font-size:var(--fs-sm);border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-card);color:var(--ink-primary);padding:4px 6px}.chip-edit-label{font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-tertiary);font-size:10px}.chip-edit-notes{font-family:var(--font-body);font-size:var(--fs-sm);border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-card);color:var(--ink-primary);resize:vertical;min-height:48px;padding:4px 6px}.chip-edit-actions{justify-content:flex-end;gap:var(--sp-2);display:flex}.chip-edit-ac{align-items:center;padding:4px 0}.chip-edit-checkbox{cursor:pointer;font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);align-items:center;gap:6px;font-weight:500;flex-direction:row!important;flex:none!important;display:flex!important}.chip-edit-checkbox input[type=checkbox]{cursor:pointer;width:16px;height:16px}.chip-edit-help{background:var(--ink-tertiary);width:16px;height:16px;color:var(--bg-card);cursor:help;-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.chip-edit-help:hover{background:var(--accent)}.grow-textarea-capped:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.subsection-title{font-family:var(--font-display);font-size:var(--fs-md);color:var(--ink-secondary);margin:var(--sp-3) 0 var(--sp-2);border-bottom:1px solid var(--rule);letter-spacing:.04em;padding-bottom:4px;font-weight:600}.spells-count-table{border-collapse:collapse;width:100%;font-family:var(--font-body);font-size:var(--fs-sm);table-layout:fixed}.spells-count-table th{font-family:var(--font-display);font-size:var(--fs-sm);color:var(--ink-secondary);text-align:center;border-bottom:1px solid var(--rule);letter-spacing:.06em;padding:4px 6px;font-weight:600}.spells-count-table th:first-child{text-align:left;width:140px}.spells-count-table .spells-count-label{font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);border-right:1px solid var(--rule);white-space:nowrap;padding:6px 8px 6px 0;font-weight:500}.spells-count-table .spells-count-cell{text-align:center;padding:4px 3px}.spells-count-table .spells-count-cell input{font-family:var(--font-mono);font-size:var(--fs-sm)}.notes-textarea{width:100%;min-height:240px;padding:var(--sp-2) var(--sp-3);background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:var(--fs-base);color:var(--ink-primary);resize:vertical;box-sizing:border-box;line-height:1.5}.notes-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.caster-table-block{border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--sp-3);margin-bottom:var(--sp-4);background:#00000004}.caster-table-block+.caster-table-block{margin-top:var(--sp-3)}.caster-table-header{align-items:flex-end;gap:var(--sp-3);margin-bottom:var(--sp-2);padding-bottom:var(--sp-2);border-bottom:1px dotted var(--rule);flex-wrap:wrap;display:flex}.caster-table-header label{flex-direction:column;flex:0 auto;gap:2px;display:flex}.caster-table-header select,.caster-table-header input{font-family:var(--font-body);font-size:var(--fs-sm);border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-card);color:var(--ink-primary);min-width:12ch;padding:4px 6px}.caster-abilities-row{align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.caster-abilities-row>.chip-edit-label{margin-right:var(--sp-1)}.caster-ability-checkbox{font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);cursor:pointer;border-radius:var(--radius-sm);-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:2px 6px;display:inline-flex}.caster-ability-checkbox:hover{background:var(--accent-bg)}.caster-ability-checkbox input[type=checkbox]{cursor:pointer;width:14px;height:14px;margin:0}.caster-ability-mod{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-tertiary);margin-left:2px}.caster-ability-summary{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-secondary);background:var(--accent-bg);border-radius:var(--radius-sm);margin-left:auto;padding:2px 8px}.spells-count-ghost::placeholder{color:#8c643c8c;font-style:italic}.custom-mv-box .stat-box-input{font-family:var(--font-body);font-variant-numeric:normal}.custom-mv-box{flex-direction:column;flex:none;align-items:center;gap:2px;display:flex}.custom-mv-input-wrap{align-items:center;display:flex;position:relative}.custom-mv-remove{background:var(--accent);color:#fff;border:1px solid var(--bg-card);cursor:pointer;width:16px;height:16px;transition:transform var(--transition);border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:11px;font-weight:700;line-height:1;display:flex;position:absolute;top:-6px;right:-6px}.custom-mv-remove:hover{transform:scale(1.15)}.custom-mv-add{appearance:none;border:1px dashed var(--rule);border-radius:var(--radius-sm);color:var(--ink-tertiary);height:var(--stat-box-height);font-family:var(--font-body);font-size:var(--fs-sm);cursor:pointer;transition:all var(--transition);white-space:nowrap;background:0 0;flex-shrink:0;align-self:flex-start;padding:0 12px;font-weight:600}.custom-mv-add:hover{border-color:var(--accent);color:var(--accent);border-style:solid}.add-custom-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.add-custom-card{background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--sp-4);min-width:320px;max-width:480px;box-shadow:0 8px 24px #00000040}.add-custom-title{font-family:var(--font-display);font-size:var(--fs-md);color:var(--ink-primary);margin:0 0 var(--sp-3);letter-spacing:.04em;font-weight:600}.add-custom-fields{gap:var(--sp-3);margin-bottom:var(--sp-4);flex-direction:column;display:flex}.add-custom-fields label{flex-direction:column;gap:2px;display:flex}.add-custom-fields input{font-family:var(--font-body);font-size:var(--fs-base);border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--ink-primary);padding:6px 8px}.add-custom-fields input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.add-custom-fields select{font-family:var(--font-body);font-size:var(--fs-base);border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--ink-primary);cursor:pointer;width:100%;padding:4px 8px}.add-custom-fields select:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.add-custom-fields select option{background:var(--bg-input);color:var(--ink-primary);padding:4px 8px}.add-custom-fields select option:checked{background:var(--accent);color:#fff}.add-custom-fields select optgroup{background:var(--bg-card);color:var(--label-bg);padding:4px 0;font-style:italic;font-weight:600}.add-custom-actions{justify-content:flex-end;gap:var(--sp-2);display:flex}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover,#6e1818)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.spellbook-tab-bar{gap:var(--sp-1);padding:var(--sp-1) 0 var(--sp-3);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-3);flex-wrap:wrap;align-items:center;display:flex}.spellbook-tab{appearance:none;background:var(--bg-input);border:1px solid var(--rule);color:var(--ink-secondary);font-family:var(--font-body);font-size:var(--fs-sm);cursor:pointer;transition:all var(--transition);border-radius:6px 6px 0 0;align-items:center;gap:4px;padding:4px 12px;font-weight:500;display:inline-flex;position:relative}.spellbook-tab:hover{border-color:var(--accent);color:var(--ink-primary)}.spellbook-tab.active{background:var(--bg-card);border-color:var(--accent);border-bottom-color:var(--bg-card);color:var(--accent);margin-bottom:-1px;padding-bottom:5px;font-weight:600}.spellbook-tab-count{font-size:var(--fs-xs);color:var(--ink-tertiary);font-weight:400}.spellbook-tab-remove{width:14px;height:14px;color:var(--ink-tertiary);cursor:pointer;transition:all var(--transition);border-radius:50%;justify-content:center;align-items:center;margin-left:2px;font-size:13px;font-weight:700;display:inline-flex}.spellbook-tab-remove:hover{background:var(--accent);color:#fff}.spellbook-tab-add{margin-left:var(--sp-2);border-style:dashed;border-radius:6px}.spell-level-group{margin-bottom:var(--sp-3)}.spell-level-header{align-items:center;gap:var(--sp-3);border-bottom:1px dotted var(--rule);margin-bottom:var(--sp-2);padding-bottom:4px;display:flex}.spell-level-title{font-family:var(--font-display);font-size:var(--fs-md);color:var(--ink-secondary);letter-spacing:.04em;margin:0;font-weight:600}.spell-level-count{font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-tertiary);font-weight:400}.spell-edit-card{background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--sp-4);flex-direction:column;width:min(900px,95vw);max-height:90vh;display:flex;overflow-y:auto;box-shadow:0 8px 24px #00000040}.spell-edit-body{gap:var(--sp-4);flex:1;grid-template-columns:1fr 1.3fr;min-height:0;display:grid}.spell-edit-left{gap:var(--sp-2);flex-direction:column;display:flex}.spell-edit-left label{flex-direction:column;gap:2px;display:flex}.spell-edit-left input,.spell-edit-left select{font-family:var(--font-body);font-size:var(--fs-base);border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--ink-primary);padding:4px 8px}.spell-edit-left input:focus,.spell-edit-left select:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.spell-edit-right{flex-direction:column;gap:2px;min-height:0;display:flex}.spell-edit-tabs{margin-top:var(--sp-2);padding-top:var(--sp-2);border-top:1px dotted var(--rule)}.spell-edit-tabs-row{gap:var(--sp-2);flex-wrap:wrap;margin-top:4px;display:flex}.spell-edit-tab-checkbox{background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-sm);-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:3px 8px;flex-direction:row!important;display:inline-flex!important}.spell-edit-tab-checkbox:hover{border-color:var(--accent)}.spell-edit-tab-checkbox input[type=checkbox]{cursor:pointer;width:14px;height:14px;margin:0}.btn-danger{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-danger:hover{background:var(--accent-hover,#6e1818)}.number-stepper{border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-input);align-items:stretch;width:100px;height:32px;display:inline-flex}.number-stepper.disabled{opacity:.5}.number-stepper-btn{appearance:none;background:var(--bg-card);border:none;border-right:1px solid var(--rule);width:24px;color:var(--ink-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:0;font-size:16px;font-weight:700;display:flex}.number-stepper-btn:last-child{border-right:none;border-left:1px solid var(--rule)}.number-stepper-btn:hover:not(:disabled){background:var(--accent-bg);color:var(--accent)}.number-stepper-btn:disabled{cursor:not-allowed;opacity:.4}.number-stepper-input{text-align:center;font-family:var(--font-mono);font-size:var(--fs-base);outline:none;flex:1;min-width:0;background:0 0!important;border:none!important;padding:0!important}.chip-spell{flex-direction:column;align-items:stretch;gap:1px;max-width:320px;padding:4px 24px 4px 10px;display:flex;position:relative}.chip-spell-main{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chip-spell-name{font-weight:500}.chip-spell-school{font-family:var(--font-body);font-size:var(--fs-xs);color:var(--ink-tertiary);letter-spacing:.02em;font-style:italic}.chip-spell .chip-remove{position:absolute;top:50%;right:6px;transform:translateY(-50%)}.chip-tier-prefix{font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-right:2px;font-style:italic;font-weight:600}.chip-epic-sourced{background:linear-gradient(to right, color-mix(in srgb, var(--accent) 7%, var(--bg-input)), var(--bg-input) 60%);border-color:color-mix(in srgb, var(--accent) 30%, var(--rule))}.chip-epic-sourced:hover{background:linear-gradient(to right, color-mix(in srgb, var(--accent) 14%, var(--accent-bg)), var(--accent-bg) 60%)}.chip-epic-overridden{background:var(--bg-input);border-style:dashed}.cast-tracker{flex-wrap:wrap;align-items:center;gap:2px;display:inline-flex}.cast-box{border:1px solid var(--accent);border-radius:2px;flex-shrink:0;width:9px;height:9px;display:inline-block}.cast-box-filled{background:var(--accent)}.cast-box-empty{background:0 0}.cast-tracker-overflow{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-tertiary);margin-left:2px}.cast-tracker-infinity{font-family:var(--font-display);color:var(--accent);padding:0 2px;font-size:18px;font-weight:600;line-height:.8}.spell-edit-counters{flex-direction:column;gap:4px;display:flex}.spell-edit-atwill{font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);cursor:pointer;border-radius:var(--radius-sm);-webkit-user-select:none;user-select:none;align-self:flex-start;align-items:center;gap:6px;padding:2px 6px;font-weight:500;flex-direction:row!important;display:inline-flex!important}.spell-edit-atwill:hover{background:var(--accent-bg)}.spell-edit-atwill input[type=checkbox]{cursor:pointer;width:16px;height:16px;margin:0}.epic-ledger{align-items:flex-end;gap:var(--sp-4);padding:var(--sp-3);border:1px solid var(--rule);border-radius:var(--radius-md);margin-bottom:var(--sp-2);background:#00000005;flex-wrap:wrap;display:flex}.epic-ledger-cell{flex-direction:column;align-items:center;gap:2px;display:flex}.epic-ledger-help{font-size:var(--fs-xs);flex:1;align-self:center;min-width:200px;padding-bottom:2px;font-style:italic}.epic-ledger-cell input::placeholder{color:#8c643c8c;font-style:italic}.epic-kind-picker{gap:var(--sp-3);margin-bottom:var(--sp-3);display:flex}.epic-kind-option{background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--sp-3);cursor:pointer;transition:all var(--transition);font-family:var(--font-body);text-align:left;color:var(--ink-primary);flex-direction:column;flex:1;align-items:flex-start;gap:4px;display:flex}.epic-kind-option:hover{border-color:var(--accent);background:var(--accent-bg)}.epic-kind-option strong{font-family:var(--font-display);font-size:var(--fs-md);letter-spacing:.04em}.epic-entries-area{margin-top:var(--sp-2)}.linkified-display{box-sizing:border-box;background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-sm);width:100%;color:var(--ink-primary);font-family:var(--font-body);font-size:var(--fs-sm);cursor:text;white-space:pre-wrap;word-wrap:break-word;transition:border-color var(--transition);padding:6px 8px;line-height:1.5}.linkified-display:hover{border-color:var(--rule-strong)}.linkified-display:focus{border-color:var(--accent);outline:none}.linkified-display-empty{color:var(--ink-tertiary);font-style:italic}.linkified-display-empty .linkified-placeholder{color:var(--ink-tertiary)}.grow-textarea-editing{border-color:var(--accent)!important}.linkified{color:var(--accent);text-underline-offset:2px;transition:text-decoration-color var(--transition);cursor:pointer;-webkit-text-decoration:underline #7a1f1f59;text-decoration:underline #7a1f1f59;text-decoration-thickness:1px}.linkified:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);background:var(--accent-bg)}.linkified:focus{outline:2px solid var(--accent);outline-offset:2px}.linkified-spell{color:#4a4099;text-decoration-color:#4a409959}.linkified-spell:hover{background:#4a409914;text-decoration-color:#4a4099}.linkified-magic-item{color:#1f5e7a;text-decoration-color:#1f5e7a59}.linkified-magic-item:hover{background:#1f5e7a14;text-decoration-color:#1f5e7a}.linkified-condition{color:#7a4f1f;text-decoration-color:#7a4f1f59}.linkified-condition:hover{background:#7a4f1f14;text-decoration-color:#7a4f1f}.linkified-feat{color:#1f7a5e;text-decoration-color:#1f7a5e59}.linkified-feat:hover{background:#1f7a5e14;text-decoration-color:#1f7a5e}.linkified-damage-type{color:#993e3e;text-decoration-color:#993e3e59}.linkified-damage-type:hover{background:#993e3e14;text-decoration-color:#993e3e}.linkified-trait{color:#6b4a99;text-decoration-color:#6b4a9959}.linkified-trait:hover{background:#6b4a9914;text-decoration-color:#6b4a99}.linkified-special-ability{color:#3a4a99;text-decoration-color:#3a4a9959}.linkified-special-ability:hover{background:#3a4a9914;text-decoration-color:#3a4a99}.name-autocomplete-wrapper{width:100%;position:relative}.name-autocomplete-dropdown{z-index:100;background:var(--bg-card);border:1px solid var(--rule-strong);border-radius:var(--radius-sm);max-height:280px;font-family:var(--font-body);font-size:var(--fs-sm);margin-top:2px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #00000026}.name-autocomplete-result{cursor:pointer;border-bottom:1px solid var(--rule);transition:background var(--transition);justify-content:space-between;align-items:center;padding:6px 10px;display:flex}.name-autocomplete-result:last-child{border-bottom:none}.name-autocomplete-result:hover,.name-autocomplete-result.active{background:var(--accent-bg)}.name-autocomplete-name{color:var(--ink-primary);flex:1}.name-autocomplete-badge{margin-left:var(--sp-2);font-size:var(--fs-xs);font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;border-radius:var(--radius-sm);background:var(--bg-input);color:var(--ink-tertiary);flex:none;padding:1px 6px}.name-autocomplete-empty{color:var(--ink-tertiary);font-style:italic;font-size:var(--fs-sm);padding:8px 10px}.autopop-overlay{z-index:200;border-radius:var(--radius-md);pointer-events:all;background:#fffbf0bf;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.autopop-spinner{border:3px solid var(--rule);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite autopop-spin}@keyframes autopop-spin{to{transform:rotate(360deg)}}.refresh-dict-button{appearance:none;border:1px solid var(--rule);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-secondary);cursor:pointer;transition:all var(--transition);background:0 0;align-items:center;gap:4px;padding:4px 10px;display:inline-flex}.refresh-dict-button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.refresh-dict-button:disabled{opacity:.5;cursor:not-allowed}.sla-uses-section{margin-top:var(--sp-1);flex-direction:column;gap:4px;display:flex}.sla-uses-options{gap:var(--sp-2);flex-wrap:wrap;margin-top:2px;display:flex}.sla-uses-radio{background:var(--bg-input);border:1px solid var(--rule);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-sm);-webkit-user-select:none;user-select:none;font-family:var(--font-body);color:var(--ink-primary);align-items:center;gap:4px;padding:3px 8px;display:inline-flex}.sla-uses-radio:hover{border-color:var(--accent)}.sla-uses-radio input[type=radio]{cursor:pointer;width:14px;height:14px;margin:0}.sla-uses-radio:has(input:checked){background:var(--accent-bg);border-color:var(--accent)}.chip-dc-suffix{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--accent);margin-left:2px;font-weight:500}.parsed-race-preview{gap:var(--sp-3);flex-direction:column;display:flex}.parse-warnings{border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--ink-secondary);background:#f5c8501f;border:1px solid #b48c2859;padding:6px 10px}.parsed-field-row{gap:var(--sp-3);flex-wrap:wrap;align-items:flex-end;display:flex}.parsed-field-row>label{flex-direction:column;gap:2px;display:flex}.parsed-ability-grid{gap:var(--sp-2);flex-wrap:wrap;display:flex}.parsed-ability-cell{align-items:center;gap:2px;flex-direction:column!important;display:flex!important}.parsed-ability-cell>span:first-child{font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.06em;color:var(--ink-tertiary);font-weight:600}.parsed-trait-list{flex-direction:column;gap:4px;width:100%;margin-top:4px;display:flex}.parsed-trait-row-block{border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-card);transition:opacity var(--transition);padding:6px 8px}.parsed-trait-row-block.parsed-trait-row-disabled{opacity:.55;background:var(--bg-input)}.parsed-trait-row{align-items:center;gap:var(--sp-2);display:flex}.parsed-trait-row input[type=checkbox]{cursor:pointer;flex-shrink:0;width:14px;height:14px;margin:0}.parsed-trait-name{font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);background:0 0;border:1px dashed #0000;flex:1;padding:2px 4px;font-weight:500}.parsed-trait-name:hover:not(:disabled){border-color:var(--rule)}.parsed-trait-name:focus{border-color:var(--accent);background:var(--bg-input);border-style:solid;outline:none}.parsed-trait-desc{border-left:2px solid var(--rule);font-size:var(--fs-sm);color:var(--ink-secondary);background:#00000006;margin-top:6px;padding:6px 10px;line-height:1.5}.btn-xs{font-size:var(--fs-xs);min-width:auto;height:auto;padding:2px 6px}.wizard-card{background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--sp-4);gap:var(--sp-3);flex-direction:column;width:min(640px,95vw);max-height:90vh;display:flex;overflow-y:auto;box-shadow:0 8px 24px #00000040}.wizard-section{border-top:1px dotted var(--rule);padding-top:var(--sp-3)}.wizard-section:first-of-type{border-top:none;padding-top:0}.wizard-section-header{font-family:var(--font-display);font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-secondary);margin-bottom:var(--sp-2);font-weight:600}.wizard-confirm-placeholder{border:1px dashed var(--rule);border-radius:var(--radius-sm);padding:var(--sp-3);background:#00000005}.npc-badge{margin-left:var(--sp-2);background:var(--accent);color:#fff;font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;vertical-align:middle;border-radius:10px;padding:2px 8px;font-weight:600;line-height:1.4;display:inline-block}.library-filter{border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-input);gap:2px;padding:2px;display:inline-flex}.library-filter-pill{appearance:none;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-secondary);cursor:pointer;transition:all var(--transition);background:0 0;border:none;align-items:center;gap:4px;padding:4px 12px;font-weight:500;display:inline-flex}.library-filter-pill:hover:not(.active){color:var(--ink-primary);background:var(--bg-card)}.library-filter-pill.active{background:var(--accent);color:#fff;font-weight:600}.library-filter-count{font-size:var(--fs-xs);opacity:.75;font-weight:400}.list-actions{gap:var(--sp-2);margin-top:var(--sp-3);display:flex}.icon-btn{appearance:none;color:var(--ink-tertiary);padding:var(--sp-1) var(--sp-2);font-size:var(--fs-sm);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition);background:0 0;border:1px solid #0000}.icon-btn:hover{background:var(--accent-bg);color:var(--accent)}.icon-btn-danger:hover{background:var(--error-bg);color:var(--error-ink)}.subtle-divider{border:none;border-top:1px dashed var(--rule);margin:var(--sp-4) 0}.skills-toolbar{gap:var(--sp-3);margin-bottom:var(--sp-3);flex-wrap:wrap;align-items:center;display:flex}.skills-toolbar .search-input{flex:240px}.filter-chips{gap:var(--sp-1);flex-wrap:wrap;display:flex}.filter-chip{appearance:none;border:1px solid var(--rule);color:var(--ink-secondary);padding:2px var(--sp-2);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);background:0 0}.filter-chip:hover{border-color:var(--accent);color:var(--accent)}.filter-chip-active{background:var(--accent);border-color:var(--accent);color:#fff}.skills-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.skills-table thead th{text-align:left;font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-tertiary);padding:var(--sp-2) var(--sp-2);border-bottom:1px solid var(--rule);font-weight:500}.skills-table tbody tr{transition:background var(--transition)}.skills-table tbody tr:hover{background:var(--accent-bg)}.skills-table tbody td{padding:var(--sp-1) var(--sp-2);border-bottom:1px dotted var(--rule);vertical-align:middle}.skills-table .col-class{text-align:center;width:50px}.skills-table .col-name{font-family:var(--font-body);color:var(--ink-primary);min-width:160px}.skills-table .col-rename input{padding:2px var(--sp-1);font-size:var(--fs-sm);color:var(--ink-primary);background:0 0;border:1px solid #0000;border-bottom-style:dotted;width:100%}.skills-table .col-rename input:hover{border-bottom-color:var(--rule)}.skills-table .col-rename input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.skills-table .col-ranks input,.skills-table .col-total input{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;border:1px solid #0000;border-bottom:1px dotted var(--rule);padding:2px var(--sp-1);width:6ch;color:var(--ink-primary);background:0 0}.skills-table .col-ranks input:focus,.skills-table .col-total input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.skills-table .col-mod{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-xs);color:var(--ink-tertiary);text-align:right;white-space:nowrap}.skills-table .col-notes input{padding:2px var(--sp-1);font-size:var(--fs-xs);color:var(--ink-secondary);background:0 0;border:1px solid #0000;border-bottom-style:dotted;width:100%;font-style:italic}.skills-table .col-notes input:hover{border-bottom-color:var(--rule)}.skills-table .col-notes input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none;font-style:normal}.skill-class-toggle{appearance:none;border:1px solid var(--rule);cursor:pointer;color:#0000;width:18px;height:18px;transition:all var(--transition);background:0 0;border-radius:50%;justify-content:center;align-items:center;display:flex}.skill-class-toggle.active{background:var(--accent);border-color:var(--accent);color:#fff}.skill-class-toggle.active:after{content:"✓";font-size:11px;line-height:1}.skills-row-custom{background:#7a1f1f06}.feat-row{gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px dotted var(--rule);grid-template-columns:1fr 160px 80px auto;align-items:start;display:grid}.feat-row:hover{background:var(--accent-bg)}.feat-row .feat-name{padding:var(--sp-1) var(--sp-2);font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);background:0 0;border:1px solid #0000;border-bottom-style:dotted}.feat-row .feat-name:hover{border-bottom-color:var(--rule)}.feat-row .feat-name:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.feat-row select.feat-source{border:1px solid var(--rule);border-radius:var(--radius-sm);padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs);color:var(--ink-secondary);background:0 0}.feat-row .feat-level{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;border:1px solid var(--rule);border-radius:var(--radius-sm);padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs);color:var(--ink-secondary);background:0 0}.feat-row textarea.feat-notes{padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs);color:var(--ink-secondary);resize:vertical;min-height:1.4em;font-style:italic;font-family:var(--font-body);background:0 0;border:1px solid #0000;border-bottom-style:dotted;grid-column:1/-1;line-height:1.4}.feat-row textarea.feat-notes:hover{border-bottom-color:var(--rule)}.feat-row textarea.feat-notes:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none;font-style:normal}.spells-by-level{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));display:grid}.spell-level-card{background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--sp-3)}.spell-level-card-header{margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;display:flex}.spell-level-badge{font-family:var(--font-display);font-size:var(--fs-md);color:var(--accent);letter-spacing:.04em;font-weight:600}.spell-level-badge small{font-family:var(--font-body);font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-tertiary);margin-left:var(--sp-1);font-weight:400}.spell-level-stats{gap:var(--sp-2);margin-bottom:var(--sp-3);grid-template-columns:repeat(2,1fr);display:grid}.spell-level-stats .field{gap:2px}.spell-level-stats .field label{font-size:10px}.spell-level-card-collapsed{padding:var(--sp-2) var(--sp-3)}.spell-level-card-collapsed .spell-level-card-header{border-bottom:none;margin-bottom:0;padding-bottom:0}.spells-summary-row{align-items:center;gap:var(--sp-3);padding:var(--sp-2);border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--bg-page);margin-bottom:var(--sp-4);font-size:var(--fs-sm);display:flex}.spells-summary-row strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--accent)}.spell-like-row{gap:var(--sp-2);padding:var(--sp-2) var(--sp-1);border-bottom:1px dotted var(--rule);grid-template-columns:80px 1fr 200px 60px 60px auto;align-items:start;display:grid}.spell-like-row:hover{background:var(--accent-bg)}.spell-like-row .sl-school{padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs);color:var(--ink-secondary);font-style:italic;font-family:var(--font-body);background:0 0;border:1px solid #0000;border-bottom-style:dotted}.spell-like-row .sl-school:hover{border-bottom-color:var(--rule)}.spell-like-row .sl-school:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none;font-style:normal}.spell-like-row .sl-name{padding:var(--sp-1) var(--sp-2);font-family:var(--font-body);font-size:var(--fs-sm);color:var(--ink-primary);background:0 0;border:1px solid #0000;border-bottom-style:dotted}.spell-like-row .sl-name:hover{border-bottom-color:var(--rule)}.spell-like-row .sl-name:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.spell-like-row .sl-counter{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;border:1px solid var(--rule);border-radius:var(--radius-sm);padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs);background:0 0}.spell-like-row textarea.sl-subschool{padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs);color:var(--ink-secondary);resize:vertical;min-height:1.4em;font-style:italic;font-family:var(--font-body);background:0 0;border:1px solid #0000;border-bottom-style:dotted;grid-column:1/-1;line-height:1.4}.spell-like-row textarea.sl-subschool:hover{border-bottom-color:var(--rule)}.spell-like-row textarea.sl-subschool:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none;font-style:normal}.spell-like-divider{background:var(--accent-bg);border-bottom:1px solid var(--rule-strong);border-top:1px solid var(--rule-strong);margin:var(--sp-3) 0;padding:var(--sp-3);gap:var(--sp-2);flex-direction:column;display:flex}.spell-like-divider .sl-divider-name{font-family:var(--font-display);font-size:var(--fs-md);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);text-align:center;padding:var(--sp-1) var(--sp-3);background:0 0;border:1px solid #0000;font-weight:600}.spell-like-divider .sl-divider-name:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none}.spell-like-divider .sl-divider-meta{gap:var(--sp-2);grid-template-columns:1fr 1fr;display:grid}.spell-like-divider .sl-divider-meta input{padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs);color:var(--ink-secondary);text-align:center;font-style:italic;font-family:var(--font-body);background:0 0;border:1px solid #0000;border-bottom-style:dotted}.spell-like-divider .sl-divider-meta input:hover{border-bottom-color:var(--rule-strong)}.spell-like-divider .sl-divider-meta input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg);outline:none;font-style:normal}.spell-like-divider .sl-divider-actions{gap:var(--sp-1);justify-content:center;display:flex}.login-screen-overlay{min-height:100vh;padding:var(--sp-4);box-sizing:border-box;justify-content:center;align-items:center;display:flex}.login-screen-card{width:100%;max-width:420px;padding:var(--sp-5) var(--sp-5);text-align:center}.login-google-button{justify-content:center;align-items:center;gap:var(--sp-2);width:100%;font-size:var(--fs-base);padding:10px 14px;display:flex}.login-google-button:disabled{opacity:.6;cursor:wait}.app-header-user{font-size:var(--fs-sm);color:var(--ink-secondary);align-items:center;margin-left:auto;display:inline-flex}
