.spell-filters{background:var(--color-bg-overlay);border:1px solid var(--color-border-secondary);border-radius:var(--radius-xl);padding:var(--space-6);margin-bottom:var(--space-8)}.search-box{margin-bottom:var(--space-6)}.search-input{width:100%;padding:var(--input-padding);background:var(--color-bg-input);border:var(--input-border);border-radius:var(--radius-lg);color:var(--color-text-primary);font-size:var(--font-size-md);transition:all var(--transition-base)}.search-input:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.search-input::placeholder{color:var(--color-text-tertiary)}.filter-section{margin-bottom:var(--space-6);text-align:center}.filter-section h3{color:var(--color-text-heading);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--space-3);text-align:center}.filter-buttons{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:center}.filter-btn{padding:var(--space-2) var(--space-4);background:var(--color-bg-input);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);text-transform:capitalize;cursor:pointer;transition:all var(--transition-base)}.filter-btn:hover:not([data-class]){border-color:var(--color-accent);color:var(--color-text-link)}.filter-btn.active:not([data-class]){background:var(--color-accent-light);border-color:var(--color-accent);color:var(--color-text-link)}.filter-btn[data-class=bard]{background:light-dark(rgba(196,181,253,.2),rgba(196,181,253,.15));border-color:light-dark(#a78bfa,#7c3aed);color:light-dark(#6d28d9,#c4b5fd)}.filter-btn[data-class=bard]:hover,.filter-btn[data-class=bard].active{background:light-dark(rgba(196,181,253,.35),rgba(196,181,253,.3))}.filter-btn[data-class=cleric]{background:light-dark(rgba(253,224,71,.2),rgba(253,224,71,.15));border-color:light-dark(#fbbf24,#eab308);color:light-dark(#b45309,#fde047)}.filter-btn[data-class=cleric]:hover,.filter-btn[data-class=cleric].active{background:light-dark(rgba(253,224,71,.35),rgba(253,224,71,.3))}.filter-btn[data-class=druid]{background:light-dark(rgba(134,239,172,.2),rgba(134,239,172,.15));border-color:light-dark(#4ade80,#22c55e);color:light-dark(#16a34a,#86efac)}.filter-btn[data-class=druid]:hover,.filter-btn[data-class=druid].active{background:light-dark(rgba(134,239,172,.35),rgba(134,239,172,.3))}.filter-btn[data-class=paladin]{background:light-dark(rgba(148,163,184,.2),rgba(148,163,184,.15));border-color:light-dark(#94a3b8,#64748b);color:light-dark(#475569,#cbd5e1)}.filter-btn[data-class=paladin]:hover,.filter-btn[data-class=paladin].active{background:light-dark(rgba(148,163,184,.35),rgba(148,163,184,.3))}.filter-btn[data-class=ranger]{background:light-dark(rgba(217,119,6,.15),rgba(217,119,6,.2));border-color:light-dark(#d97706,#ea580c);color:light-dark(#92400e,#fdba74)}.filter-btn[data-class=ranger]:hover,.filter-btn[data-class=ranger].active{background:light-dark(rgba(217,119,6,.3),rgba(217,119,6,.35))}.filter-btn[data-class=sorcerer]{background:light-dark(rgba(248,113,113,.2),rgba(248,113,113,.15));border-color:light-dark(#f87171,#ef4444);color:light-dark(#dc2626,#fca5a5)}.filter-btn[data-class=sorcerer]:hover,.filter-btn[data-class=sorcerer].active{background:light-dark(rgba(248,113,113,.35),rgba(248,113,113,.3))}.filter-btn[data-class=warlock]{background:light-dark(rgba(251,146,60,.2),rgba(251,146,60,.15));border-color:light-dark(#fb923c,#f97316);color:light-dark(#ea580c,#fdba74)}.filter-btn[data-class=warlock]:hover,.filter-btn[data-class=warlock].active{background:light-dark(rgba(251,146,60,.35),rgba(251,146,60,.3))}.filter-btn[data-class=wizard]{background:light-dark(rgba(96,165,250,.2),rgba(96,165,250,.15));border-color:light-dark(#3b82f6,#2563eb);color:light-dark(#1e40af,#93c5fd)}.filter-btn[data-class=wizard]:hover,.filter-btn[data-class=wizard].active{background:light-dark(rgba(96,165,250,.35),rgba(96,165,250,.3))}.filter-checkboxes{display:flex;flex-direction:column;gap:var(--space-3)}.filter-checkboxes-inline{display:grid;grid-template-columns:1fr 1fr;gap:0}.filter-checkboxes-inline>div{display:flex;align-items:flex-start;justify-content:center;gap:var(--space-4);padding:var(--space-3);flex-wrap:wrap}.filter-checkboxes-inline>div:not(:first-child){border-left:1px solid var(--color-border-secondary)}.filter-checkboxes-inline h3{margin-bottom:0;flex-shrink:0;align-self:center}.filter-checkboxes-inline .checkbox-group{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;justify-content:center}.checkbox-label{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text-heading);font-size:var(--font-size-base);cursor:pointer}.checkbox-label input[type=checkbox]{width:1.125rem;height:1.125rem;cursor:pointer;accent-color:var(--color-accent)}.checkbox-label span{user-select:none}.checkbox-badge{padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);transition:all var(--transition-base)}.checkbox-badge-verbal{background:#c4b5fd33;border:1px solid #a78bfa;color:#6d28d9}@media(prefers-color-scheme:dark){.checkbox-badge-verbal{background:#c4b5fd26;border-color:#7c3aed;color:#c4b5fd}}.checkbox-badge-somatic{background:#fde04733;border:1px solid #fbbf24;color:#b45309}@media(prefers-color-scheme:dark){.checkbox-badge-somatic{background:#fde04726;border-color:#eab308;color:#fde047}}.checkbox-badge-material{background:#ec489933;border:1px solid #ec4899;color:#be185d}@media(prefers-color-scheme:dark){.checkbox-badge-material{background:#ec489926;border-color:#db2777;color:#f9a8d4}}.checkbox-badge-concentration{background:#67e8f933;border:1px solid #06b6d4;color:#0e7490}@media(prefers-color-scheme:dark){.checkbox-badge-concentration{background:#67e8f926;border-color:#0891b2;color:#67e8f9}}.checkbox-badge-ritual{background:#ef444433;border:1px solid #ef4444;color:#dc2626}@media(prefers-color-scheme:dark){.checkbox-badge-ritual{background:#ef444426;border-color:#dc2626;color:#fca5a5}}.btn-clear-filters{width:100%;padding:var(--space-3) var(--space-4);background:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:var(--radius-lg);color:var(--color-error-text);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base);margin-top:var(--space-4)}.btn-clear-filters:hover{background:light-dark(rgba(220,38,38,.1),rgba(239,68,68,.2));border-color:var(--color-error)}@media(max-width:768px){.spell-filters{padding:var(--space-4);margin-bottom:var(--space-4)}.search-box{margin-bottom:var(--space-4)}.search-input{font-size:var(--font-size-md)}.filter-section{margin-bottom:var(--space-4)}.filter-section h3{font-size:var(--font-size-sm)}.filter-buttons{gap:var(--space-1)}.filter-btn{padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm)}.checkbox-label{font-size:var(--font-size-sm)}.btn-clear-filters{padding:var(--space-3);font-size:var(--font-size-sm)}.filter-checkboxes-inline{grid-template-columns:1fr}.level-dropdown-container{flex-wrap:wrap;gap:var(--space-3);justify-content:center}.level-dropdown-container label{flex:0 1 auto;min-width:fit-content}.range-ticks{padding:0 5px;gap:2px}.range-tick{font-size:var(--font-size-xs);min-width:0;padding:1px 2px}.range-slider-container{padding:0 5px}.range-track{left:5px;right:5px}}@media(max-width:360px){.range-tick{font-size:10px;padding:1px}}.level-dropdown-container{display:flex;align-items:center;justify-content:center;gap:var(--space-4)}.level-dropdown-container label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.level-dropdown-container select{padding:var(--space-2) var(--space-3);background:var(--color-bg-input);border:var(--input-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-base)}.level-dropdown-container select:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.level-dropdown-container select option{background:var(--color-bg-primary);color:var(--color-text-primary);padding:var(--space-2)}.level-dropdown-container .level-select-0{background:#94a3b833!important;border-color:#94a3b8!important;color:#475569!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-0{background:#94a3b826!important;border-color:#64748b!important;color:#cbd5e1!important}}.level-dropdown-container .level-select-1{background:#c4b5fd33!important;border-color:#a78bfa!important;color:#6d28d9!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-1{background:#c4b5fd26!important;border-color:#7c3aed!important;color:#c4b5fd!important}}.level-dropdown-container .level-select-2{background:#818cf833!important;border-color:#6366f1!important;color:#3730a3!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-2{background:#818cf826!important;border-color:#4f46e5!important;color:#a5b4fc!important}}.level-dropdown-container .level-select-3{background:#3b82f640!important;border-color:#2563eb!important;color:#1e3a8a!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-3{background:#2563eb33!important;border-color:#1d4ed8!important;color:#60a5fa!important}}.level-dropdown-container .level-select-4{background:#60a5fa33!important;border-color:#3b82f6!important;color:#1e40af!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-4{background:#60a5fa26!important;border-color:#2563eb!important;color:#93c5fd!important}}.level-dropdown-container .level-select-5{background:#67e8f933!important;border-color:#06b6d4!important;color:#0e7490!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-5{background:#67e8f926!important;border-color:#0891b2!important;color:#67e8f9!important}}.level-dropdown-container .level-select-6{background:#86efac33!important;border-color:#4ade80!important;color:#16a34a!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-6{background:#86efac26!important;border-color:#22c55e!important;color:#86efac!important}}.level-dropdown-container .level-select-7{background:#fde04733!important;border-color:#fbbf24!important;color:#b45309!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-7{background:#fde04726!important;border-color:#eab308!important;color:#fde047!important}}.level-dropdown-container .level-select-8{background:#fb923c33!important;border-color:#fb923c!important;color:#ea580c!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-8{background:#fb923c26!important;border-color:#f97316!important;color:#fdba74!important}}.level-dropdown-container .level-select-9{background:#ef444433!important;border-color:#ef4444!important;color:#dc2626!important}@media(prefers-color-scheme:dark){.level-dropdown-container .level-select-9{background:#ef444426!important;border-color:#dc2626!important;color:#fca5a5!important}}.level-range-container{width:min(400px,100%);margin:0 auto}@media(min-width:769px){.level-range-container{margin:0}}.range-labels{display:flex;justify-content:space-between;margin-bottom:var(--space-3);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-heading)}.range-slider-container{position:relative;height:40px;margin-bottom:var(--space-2);padding:0 10px}.range-track{position:absolute;top:16px;left:10px;right:10px;height:8px;background:#94a3b8;border:2px solid #cbd5e1;border-radius:var(--radius-md);pointer-events:none;z-index:1}.range-active-track{position:absolute;top:16px;height:8px;background:var(--color-accent);border-radius:var(--radius-md);pointer-events:none;z-index:2;transition:left var(--transition-fast),width var(--transition-fast)}.range-slider{position:absolute;top:16px;width:100%;height:8px;-webkit-appearance:none;appearance:none;background:transparent;outline:none;pointer-events:none;z-index:2}.range-slider::-webkit-slider-track{width:100%;height:8px;background:#94a3b8;border:2px solid #cbd5e1;border-radius:var(--radius-md)}.range-slider::-moz-range-track{width:100%;height:8px;background:#94a3b8;border:2px solid #cbd5e1;border-radius:var(--radius-md)}.range-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:24px;height:24px;border-radius:50%;background:var(--color-accent);border:2px solid var(--color-bg-primary);cursor:pointer;pointer-events:auto;box-shadow:var(--shadow-sm);transition:all var(--transition-base);position:relative;z-index:3}.range-slider::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:var(--color-accent);border:2px solid var(--color-bg-primary);cursor:pointer;pointer-events:auto;box-shadow:var(--shadow-sm);transition:all var(--transition-base);position:relative;z-index:3}.range-slider::-webkit-slider-thumb:hover{background:var(--color-primary);box-shadow:var(--shadow-md)}.range-slider::-moz-range-thumb:hover{background:var(--color-primary);box-shadow:var(--shadow-md)}.range-slider-min{z-index:3}.range-slider-max{z-index:4}.range-ticks{display:flex;justify-content:space-between;padding:0 10px;gap:var(--space-1);margin-bottom:var(--space-2)}.range-tick{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);text-align:center;min-width:20px;padding:2px 4px;border-radius:var(--radius-sm);transition:all var(--transition-base);flex:1 1 0;overflow:hidden;white-space:nowrap}.range-tick-0{background:light-dark(rgba(148,163,184,.2),rgba(148,163,184,.15));border:1px solid light-dark(#94a3b8,#64748b);color:light-dark(#475569,#cbd5e1)}.range-tick-1{background:light-dark(rgba(239,68,68,.2),rgba(239,68,68,.15));border:1px solid light-dark(#ef4444,#dc2626);color:light-dark(#dc2626,#fca5a5)}.range-tick-2{background:light-dark(rgba(251,146,60,.2),rgba(251,146,60,.15));border:1px solid light-dark(#fb923c,#f97316);color:light-dark(#ea580c,#fdba74)}.range-tick-3{background:light-dark(rgba(253,224,71,.2),rgba(253,224,71,.15));border:1px solid light-dark(#fbbf24,#eab308);color:light-dark(#b45309,#fde047)}.range-tick-4{background:light-dark(rgba(134,239,172,.2),rgba(134,239,172,.15));border:1px solid light-dark(#4ade80,#22c55e);color:light-dark(#16a34a,#86efac)}.range-tick-5{background:light-dark(rgba(103,232,249,.2),rgba(103,232,249,.15));border:1px solid light-dark(#06b6d4,#0891b2);color:light-dark(#0e7490,#67e8f9)}.range-tick-6{background:light-dark(rgba(96,165,250,.2),rgba(96,165,250,.15));border:1px solid light-dark(#3b82f6,#2563eb);color:light-dark(#1e40af,#93c5fd)}.range-tick-7{background:light-dark(rgba(59,130,246,.25),rgba(37,99,235,.2));border:1px solid light-dark(#2563eb,#1d4ed8);color:light-dark(#1e3a8a,#60a5fa)}.range-tick-8{background:light-dark(rgba(129,140,248,.2),rgba(129,140,248,.15));border:1px solid light-dark(#6366f1,#4f46e5);color:light-dark(#3730a3,#a5b4fc)}.range-tick-9{background:light-dark(rgba(196,181,253,.2),rgba(196,181,253,.15));border:1px solid light-dark(#a78bfa,#7c3aed);color:light-dark(#6d28d9,#c4b5fd)}.sort-icon{margin-left:var(--space-2);opacity:.6;user-select:none}.sortable:hover .sort-icon{opacity:1}.dice-notation{font-weight:700;color:var(--color-accent);background-color:rgba(var(--color-accent-rgb),.1);padding:0 2px;border-radius:4px;display:inline-block}.spell-table-wrapper{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1rem 0;border:1px solid var(--color-border);border-radius:4px}.spell-table-rendered{width:100%;border-collapse:collapse;font-size:.9em}.spell-table-rendered th,.spell-table-rendered td{border:1px solid var(--color-border);padding:.5rem;text-align:left;color:inherit}.spell-table-rendered th{background-color:var(--color-bg-secondary);font-weight:600}@media(max-width:768px){.spell-table-rendered thead,.spell-table-rendered th{display:table-header-group!important}.spell-table-rendered th{display:table-cell!important}}.spell-text-line{min-height:auto}.spell-text-line-empty{min-height:1em}.spell-text-h1,.spell-text-h2,.spell-text-h3{color:var(--color-text-heading);font-weight:700;margin-top:1em;margin-bottom:.5em}.spell-text-h1{font-size:1.5em}.spell-text-h2{font-size:1.3em}.spell-text-h3{font-size:1.1em}.spell-table-container{width:100%;overflow-x:auto;background:var(--color-bg-overlay);border:1px solid var(--color-border-primary);border-radius:var(--radius-xl);padding:var(--space-4)}.checkbox-col{width:40px;text-align:center;padding:var(--space-3) var(--space-2)!important}.checkbox-col input[type=checkbox]{width:1.125rem;height:1.125rem;cursor:pointer;accent-color:var(--color-accent)}.spell-table-empty{text-align:center;padding:var(--space-12) var(--space-4);color:var(--color-text-tertiary);background:var(--color-bg-overlay);border:1px solid var(--color-border-primary);border-radius:var(--radius-xl)}@media(max-width:768px){.spell-table{font-size:var(--font-size-sm)}.spell-table th,.spell-table td{padding:var(--space-2) var(--space-3)}.source-col{display:none}}@media(max-width:768px){.spell-table>tbody>tr>td:not(.checkbox-col):not(.spell-name):not(.level-col):not(.school-col):not(.spell-expansion-cell){display:none}.spell-table th:not(.checkbox-col){display:none}.spell-table>tbody>tr>.checkbox-col{position:absolute!important;display:block!important;top:var(--space-3);left:var(--space-4);width:auto}.spell-table>tbody>tr>.checkbox-col input[type=checkbox]{width:24px;height:24px;cursor:pointer}.spell-table>tbody>tr>.spell-name{padding-left:3rem!important;padding-right:.5rem!important}}.loading-spinner-wrapper{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md)}.loading-spinner-center{justify-content:center;min-height:200px}.loading-spinner-inline{display:inline-flex;flex-direction:row;gap:var(--spacing-sm);min-height:auto}.loading-spinner{display:inline-block;position:relative}.loading-spinner-small{width:24px;height:24px}.loading-spinner-medium{width:40px;height:40px}.loading-spinner-large{width:64px;height:64px}.loading-spinner-circle{width:100%;height:100%;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:loading-spinner-rotate .8s linear infinite}.loading-spinner-small .loading-spinner-circle{border-width:2px}.loading-spinner-large .loading-spinner-circle{border-width:4px}@keyframes loading-spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-spinner-message{margin:0;color:var(--color-text-secondary);font-size:var(--font-size-sm);text-align:center}.create-spellbook-modal{max-width:500px;width:90%}.form-group{margin-bottom:var(--space-4)}.form-group label{display:block;margin-bottom:var(--space-2);font-weight:var(--font-weight-medium);color:var(--color-text-heading);font-size:var(--font-size-base)}.required{color:var(--color-error)}.form-input{width:100%;padding:var(--space-3) var(--space-4);background:var(--color-bg-input);border:var(--input-border);border-radius:var(--radius-lg);color:var(--color-text-primary);font-size:var(--font-size-md);transition:all var(--transition-base)}.form-input:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.ability-buttons{display:flex;gap:var(--space-3)}.ability-btn{flex:1;padding:var(--space-3) var(--space-4);background:var(--color-bg-input);border:2px solid var(--color-border-primary);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-base)}.ability-btn:hover{border-color:var(--color-accent);color:var(--color-text-primary);background:var(--color-hover)}.ability-btn.active{background:var(--color-accent-light);border-color:var(--color-accent);color:var(--color-text-link);font-weight:var(--font-weight-bold)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.error-message{padding:var(--space-3) var(--space-4);background:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:var(--radius-md);color:var(--color-error-text);font-size:var(--font-size-base);margin-bottom:var(--space-4)}.spell-slots-container{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.spell-slot-input{display:flex;align-items:center;gap:var(--space-1)}.spell-slot-input>label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin:0;min-width:20px}.slot-value{width:36px;height:32px;padding:var(--space-1);text-align:center;background:var(--color-bg-input);border:1px solid var(--color-border-primary);border-radius:var(--radius-sm);color:var(--color-text-primary);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}.slot-value:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.slot-value::-webkit-inner-spin-button,.slot-value::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.slot-value{-moz-appearance:textfield}@media(max-width:768px){.spell-slots-container{gap:var(--space-1)}.spell-slot-input{flex:0 0 auto}}.confirm-dialog-overlay{position:fixed;inset:0;background-color:#0009;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-4)}.confirm-dialog{background:var(--color-bg-secondary);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:480px;width:100%;animation:slideIn var(--transition-fast) ease-out}.confirm-dialog-header{padding:var(--space-6) var(--space-6) var(--space-4);border-bottom:1px solid var(--color-border-primary)}.confirm-dialog-title{margin:0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-heading)}.confirm-dialog-body{padding:var(--space-6)}.confirm-dialog-message{margin:0;font-size:var(--font-size-md);line-height:var(--line-height-normal);color:var(--color-text-secondary);white-space:pre-wrap}.confirm-dialog-footer{padding:var(--space-4) var(--space-6) var(--space-6);display:flex;gap:var(--space-3);justify-content:flex-end;border-top:1px solid var(--color-border-primary)}.confirm-dialog-footer button{padding:var(--btn-padding-md);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);border:none;min-width:80px}.confirm-dialog-footer .btn-secondary{background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--color-border-primary)}.confirm-dialog-footer .btn-secondary:hover{background:var(--color-hover-strong)}.confirm-dialog-footer .btn-secondary:focus{outline:2px solid var(--color-accent);outline-offset:2px}.confirm-dialog-footer .btn-primary{background:var(--color-primary);color:var(--color-text-on-primary)}.confirm-dialog-footer .btn-primary:hover{background:var(--color-primary-hover)}.confirm-dialog-footer .btn-primary:focus{outline:2px solid var(--color-primary);outline-offset:2px}.confirm-dialog-footer .btn-danger{background:var(--color-error);color:#fff}.confirm-dialog-footer .btn-danger:hover{background:var(--color-error-hover)}.confirm-dialog-footer .btn-warning{background:var(--color-warning);color:var(--color-warning-text)}.confirm-dialog-footer .btn-warning:hover{background:var(--color-warning-hover)}.confirm-dialog-footer .btn-info{background:var(--color-info);color:#fff}.confirm-dialog-footer .btn-info:hover{background:var(--color-info-hover)}.confirm-dialog-danger .confirm-dialog-title{color:var(--color-error)}.confirm-dialog-warning .confirm-dialog-title{color:var(--color-warning)}.confirm-dialog-info .confirm-dialog-title{color:var(--color-info)}@media(max-width:768px){.confirm-dialog{max-width:100%;margin:var(--space-4)}.confirm-dialog-footer{flex-direction:column-reverse}.confirm-dialog-footer button{width:100%}}.alert-dialog-overlay{position:fixed;inset:0;background-color:#0009;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-4)}.alert-dialog{background:var(--color-bg-secondary);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:480px;width:100%;animation:slideIn var(--transition-fast) ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.alert-dialog-header{padding:var(--space-6) var(--space-6) var(--space-4);border-bottom:1px solid var(--color-border-primary)}.alert-dialog-title{margin:0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-heading)}.alert-dialog-body{padding:var(--space-6)}.alert-dialog-message{margin:0;font-size:var(--font-size-md);line-height:var(--line-height-normal);color:var(--color-text-secondary);white-space:pre-wrap}.alert-dialog-footer{padding:var(--space-4) var(--space-6) var(--space-6);display:flex;justify-content:flex-end;border-top:1px solid var(--color-border-primary)}.alert-dialog-footer button{padding:var(--btn-padding-md);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);border:none;min-width:100px}.alert-dialog-footer .btn-primary{background:var(--color-primary);color:var(--color-text-on-primary)}.alert-dialog-footer .btn-primary:hover{background:var(--color-primary-hover)}.alert-dialog-footer .btn-primary:focus{outline:2px solid var(--color-primary);outline-offset:2px}.alert-dialog-footer .btn-error{background:var(--color-error);color:#fff}.alert-dialog-footer .btn-error:hover{background:var(--color-error-hover)}.alert-dialog-footer .btn-success{background:var(--color-success);color:#fff}.alert-dialog-footer .btn-success:hover{background:var(--color-success-hover)}.alert-dialog-footer .btn-warning{background:var(--color-warning);color:var(--color-warning-text)}.alert-dialog-footer .btn-warning:hover{background:var(--color-warning-hover)}.alert-dialog-footer .btn-info{background:var(--color-info);color:#fff}.alert-dialog-footer .btn-info:hover{background:var(--color-info-hover)}.alert-dialog-error .alert-dialog-title{color:var(--color-error)}.alert-dialog-success .alert-dialog-title{color:var(--color-success)}.alert-dialog-warning .alert-dialog-title{color:var(--color-warning)}.alert-dialog-info .alert-dialog-title{color:var(--color-info)}@media(max-width:768px){.alert-dialog{max-width:100%;margin:var(--space-4)}.alert-dialog-footer button{width:100%}}.spellbook-list{padding:var(--space-8)}.spellbook-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-8)}.spellbook-list-header h2{margin:0}.header-actions{display:flex;gap:var(--space-3);align-items:center}.spellbooks-empty{text-align:center;padding:var(--space-16) var(--space-8);color:var(--color-text-secondary)}.spellbooks-empty p{margin:var(--space-2) 0}.spellbook-search{position:relative;margin-bottom:var(--space-6)}.spellbook-search .search-input{width:100%;padding:var(--space-3) var(--space-10) var(--space-3) var(--space-4);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);font-size:var(--font-size-md);background:var(--color-bg-primary);color:var(--color-text-primary);transition:all var(--transition-base)}.spellbook-search .search-input:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus-primary)}.spellbook-search .btn-clear-search{position:absolute;right:var(--space-3);top:50%;transform:translateY(-50%);background:none;border:none;color:var(--color-text-secondary);cursor:pointer;padding:var(--space-2);font-size:var(--font-size-lg);line-height:1;transition:color var(--transition-base)}.spellbook-search .btn-clear-search:hover{color:var(--color-text-primary)}.spellbooks-table{width:100%;border-collapse:collapse;background:var(--color-bg-secondary);border-radius:var(--radius-lg);overflow:hidden}.spellbooks-table thead{background:var(--color-bg-overlay);border-bottom:2px solid var(--color-border-primary)}.spellbooks-table th{padding:var(--space-4);text-align:left;font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);color:var(--color-text-heading)}.spellbooks-table th.sortable-header{padding:0}.sort-button{width:100%;height:100%;background:none;border:none;padding:var(--space-4);text-align:left;font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);color:var(--color-text-heading);cursor:pointer;display:flex;align-items:center;gap:var(--space-2);transition:background var(--transition-base)}.spellbooks-table tbody tr{border-bottom:1px solid var(--color-border-primary);transition:background var(--transition-base);cursor:pointer}.spellbooks-table tbody tr:hover{background:var(--color-hover)}.spellbooks-table tbody tr:last-child{border-bottom:none}.spellbooks-table td{padding:var(--space-4);font-size:var(--font-size-md)}.spellbook-name{font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.spellbook-spell-count,.spellbook-ability,.spellbook-attack,.spellbook-save-dc{color:var(--color-text-secondary)}.spellbook-updated{color:var(--color-text-secondary);font-size:var(--font-size-base)}.spellbook-actions{text-align:right;display:flex;gap:var(--space-2);justify-content:flex-end}.btn-primary{padding:var(--btn-padding-md);background:var(--color-primary);color:var(--color-text-on-primary);border:none;border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--transition-base)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{padding:var(--btn-padding-md);background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base)}.btn-secondary:hover:not(:disabled){background:var(--color-hover-strong)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary-small{padding:var(--btn-padding-sm);background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-sm);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-base)}.btn-secondary-small:hover{background:var(--color-hover-strong)}.btn-danger-small{padding:var(--btn-padding-sm);background:var(--color-error);color:#fff;border:none;border-radius:var(--radius-sm);font-size:var(--font-size-base);cursor:pointer;transition:background var(--transition-base)}.btn-danger-small:hover{background:var(--color-error-hover)}.dialog-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.dialog{background:var(--color-bg-primary);padding:var(--space-8);border-radius:var(--radius-xl);min-width:400px;max-width:90vw;box-shadow:var(--shadow-xl)}.dialog h3{margin:0 0 var(--space-6) 0}.form-group{margin-bottom:var(--space-6)}.form-group label{display:block;margin-bottom:var(--space-2);font-weight:var(--font-weight-medium)}.form-group input{width:100%;padding:var(--input-padding);border:var(--input-border);border-radius:var(--radius-md);font-size:var(--font-size-md);background:var(--color-bg-primary);color:var(--color-text-primary)}.form-group input:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus-primary)}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-4);margin-top:var(--space-6)}.hidden-file-input{display:none}.context-menu{position:fixed;background:var(--color-bg-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);z-index:var(--z-modal);min-width:180px;overflow:hidden;transform:translate(-50%,-100%);margin-top:-10px}@media(max-width:768px){.spellbook-list{padding:var(--space-4)}.spellbook-list-header{flex-direction:column;align-items:stretch;gap:var(--space-4);margin-bottom:var(--space-6)}.spellbook-list-header h2{font-size:var(--font-size-2xl);text-align:center}.header-actions{flex-direction:column;gap:var(--space-2)}.header-actions button{width:100%}.spellbooks-table{display:block;background:var(--color-bg-primary)}.spellbooks-table thead{display:none}.spellbooks-table tbody{display:block}.spellbooks-table tbody tr{display:block;margin-bottom:var(--space-4);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);padding:var(--space-4);background:var(--color-bg-secondary);box-shadow:0 1px 3px #0000001a}.spellbooks-table td{padding:0;border-bottom:none}.spellbook-ability,.spellbook-attack,.spellbook-save-dc,.spellbook-actions{display:none!important}.spellbook-name{display:block;font-size:2rem;font-weight:var(--font-weight-bold);color:var(--color-text-heading);margin-bottom:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border-secondary);word-wrap:break-word;overflow-wrap:break-word;hyphens:auto}.spellbook-name:before{display:none}.spellbook-spell-count,.spellbook-updated{display:inline-block;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-right:var(--space-4);margin-bottom:0}.spellbook-spell-count:before{content:"📚 "}.spellbook-updated{margin-right:0}.spellbook-updated:before{content:"📅 "}.dialog{min-width:auto;max-width:95vw;padding:var(--space-6)}.dialog h3{font-size:var(--font-size-xl)}.dialog-actions{flex-direction:column-reverse;gap:var(--space-2)}.dialog-actions button{width:100%}.btn-primary,.btn-secondary{padding:var(--space-3) var(--space-4)}}.spell-table{width:100%;border-collapse:collapse;font-size:var(--font-size-base)}.spell-table thead{background:light-dark(rgba(241,245,249,.9),rgba(15,23,42,.6));position:sticky;top:0;z-index:var(--z-dropdown)}.spell-table th{padding:var(--space-3) var(--space-4);text-align:left;font-weight:var(--font-weight-semibold);color:var(--color-text-heading);border-bottom:2px solid var(--color-border-primary);white-space:nowrap}.spell-table th.sortable-header{padding:0}.sort-button{width:100%;height:100%;background:none;border:none;padding:var(--space-3) var(--space-4);text-align:left;font-weight:var(--font-weight-semibold);font-size:var(--font-size-base);color:var(--color-text-heading);cursor:pointer;display:flex;align-items:center;gap:var(--space-2);justify-content:space-between;transition:background-color var(--transition-fast)}.sort-button:hover{background:var(--color-hover)}.th-content{display:flex;align-items:center;gap:var(--space-2);justify-content:space-between}.sort-icon{opacity:.5;font-size:var(--font-size-base)}.spell-table th.sortable:hover .sort-icon,.sort-button:hover .sort-icon{opacity:1}.spell-table tbody tr{border-bottom:1px solid var(--color-border-secondary);transition:background-color var(--transition-fast)}.spell-row{cursor:pointer}.spell-row:hover{background:var(--color-hover)}.spell-row.expanded{background:var(--color-expanded-bg)}.spell-expanded-row{background:var(--color-bg-secondary);animation:slideDown var(--transition-slow)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.spell-expanded-content{padding:var(--space-6);border-left:3px solid var(--color-primary)}.spell-expanded-header h3{margin:0 0 var(--space-2) 0;color:var(--color-text-primary);font-size:var(--font-size-xl)}.spell-meta{color:var(--color-text-secondary);margin:0 0 var(--space-4) 0;font-size:var(--font-size-base)}.spell-expanded-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-3);margin-bottom:var(--space-4);padding:var(--space-4);background:var(--color-bg-primary);border-radius:var(--radius-lg)}.spell-expanded-details div{font-size:var(--font-size-base)}.spell-expanded-details strong{color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.spell-expanded-description{margin:var(--space-4) 0;line-height:var(--line-height-relaxed);color:var(--color-text-primary)}.spell-expanded-higher-levels{margin:var(--space-4) 0;padding:var(--space-4);background:var(--color-primary-lighter);border-radius:var(--radius-lg);border-left:3px solid var(--color-primary)}.spell-expanded-higher-levels strong{color:var(--color-primary)}.spell-expanded-footer{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-primary);display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-base)}.spell-source{color:var(--color-text-secondary);font-style:italic}.spell-table td{padding:var(--space-3) var(--space-4);color:var(--color-text-primary);vertical-align:top}.spell-name{font-weight:var(--font-weight-medium);color:var(--color-text-link);min-width:200px}.badge{display:inline-block;padding:.125rem var(--space-1);margin-left:var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);vertical-align:middle}.badge-concentration{background:var(--color-badge-concentration-bg);color:var(--color-badge-concentration-text);border:1px solid var(--color-badge-concentration-border)}.badge-ritual{background:var(--color-badge-ritual-bg);color:var(--color-badge-ritual-text);border:1px solid var(--color-badge-ritual-border)}.component-badges{display:flex;gap:.25rem;justify-content:center;align-items:center;flex-wrap:nowrap}.component-badge{display:inline-block;padding:.125rem .375rem;border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);vertical-align:middle;text-align:center;min-width:1.25rem}.badge-verbal{background:light-dark(rgba(139,92,246,.15),rgba(139,92,246,.25));color:light-dark(rgb(109,40,217),rgb(196,181,253));border:1px solid light-dark(rgb(139,92,246),rgb(139,92,246))}.badge-somatic{background:light-dark(rgba(234,179,8,.15),rgba(234,179,8,.25));color:light-dark(rgb(161,98,7),rgb(253,224,71));border:1px solid light-dark(rgb(234,179,8),rgb(234,179,8))}.badge-material{background:light-dark(rgba(236,72,153,.15),rgba(236,72,153,.25));color:light-dark(rgb(190,24,93),rgb(251,207,232));border:1px solid light-dark(rgb(236,72,153),rgb(236,72,153))}.class-badges{display:flex;gap:.25rem;flex-wrap:wrap;align-items:center}.class-badge{display:inline-block;padding:.0625rem .25rem;border-radius:var(--radius-sm);font-size:.625rem;font-weight:var(--font-weight-bold);vertical-align:middle;text-align:center;line-height:1.2;min-width:1.5rem}.class-badge-bard{background:light-dark(rgba(196,181,253,.2),rgba(196,181,253,.15));border:1px solid light-dark(#a78bfa,#7c3aed);color:light-dark(#6d28d9,#c4b5fd)}.class-badge-cleric{background:light-dark(rgba(253,224,71,.2),rgba(253,224,71,.15));border:1px solid light-dark(#fbbf24,#eab308);color:light-dark(#b45309,#fde047)}.class-badge-druid{background:light-dark(rgba(134,239,172,.2),rgba(134,239,172,.15));border:1px solid light-dark(#4ade80,#22c55e);color:light-dark(#16a34a,#86efac)}.class-badge-paladin{background:light-dark(rgba(148,163,184,.2),rgba(148,163,184,.15));border:1px solid light-dark(#94a3b8,#64748b);color:light-dark(#475569,#cbd5e1)}.class-badge-ranger{background:light-dark(rgba(217,119,6,.15),rgba(217,119,6,.2));border:1px solid light-dark(#d97706,#ea580c);color:light-dark(#92400e,#fdba74)}.class-badge-sorcerer{background:light-dark(rgba(248,113,113,.2),rgba(248,113,113,.15));border:1px solid light-dark(#f87171,#ef4444);color:light-dark(#dc2626,#fca5a5)}.class-badge-warlock{background:light-dark(rgba(251,146,60,.2),rgba(251,146,60,.15));border:1px solid light-dark(#fb923c,#f97316);color:light-dark(#ea580c,#fdba74)}.class-badge-wizard{background:light-dark(rgba(96,165,250,.2),rgba(96,165,250,.15));border:1px solid light-dark(#3b82f6,#2563eb);color:light-dark(#1e40af,#93c5fd)}.level-col{text-align:center;width:80px}.school-col{text-transform:capitalize;min-width:120px}.components-col{text-align:center;font-family:monospace;width:80px;color:var(--color-text-secondary)}.duration-col{width:120px}.classes-col{text-transform:capitalize;color:var(--color-text-secondary);width:200px}.source-col{color:var(--color-text-tertiary);font-size:var(--font-size-sm);width:150px}.action-col{width:60px;text-align:center}@media(max-width:1400px){.spell-table .source-col{display:none}}@media(max-width:1200px){.spell-table .classes-col{display:none}}@media(max-width:1024px){.spell-table .components-col{display:none}}@media(max-width:900px){.spell-table .school-col{display:none}}@media(max-width:800px){.spell-table .duration-col{display:none}}@media(min-width:769px){.spell-expansion-row{background:var(--color-bg-secondary);animation:slideDown var(--transition-slow)}.spell-expansion-cell{padding:0!important}.spell-inline-expansion{padding:var(--space-6) var(--space-8);color:var(--color-text-primary);background:var(--color-bg-secondary);border-radius:var(--radius-lg);margin:var(--space-2) var(--space-4)}.spell-inline-expansion .spell-meta{font-size:var(--font-size-base);margin-bottom:var(--space-4);color:var(--color-text-secondary)}.spell-inline-expansion .spell-expanded-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);margin-bottom:var(--space-6);padding:var(--space-6);background:var(--color-hover);border-radius:var(--radius-lg);font-size:var(--font-size-base);border:1px solid var(--color-border-primary)}.spell-inline-expansion .spell-expanded-details strong{display:block;margin-bottom:var(--space-2);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);color:var(--color-text-secondary);font-weight:var(--font-weight-semibold)}.spell-inline-expansion .spell-expanded-description{font-size:var(--font-size-md);line-height:var(--line-height-relaxed);margin:var(--space-6) 0;color:var(--color-text-primary)}.spell-inline-expansion .spell-expanded-higher-levels{margin:var(--space-6) 0;padding:var(--space-6);background:var(--color-primary-lighter);border-radius:var(--radius-lg);border-left:3px solid var(--color-primary);font-size:var(--font-size-md);line-height:var(--line-height-relaxed)}.spell-inline-expansion .spell-expanded-higher-levels strong{display:block;margin-bottom:var(--space-3);font-size:var(--font-size-base);color:var(--color-primary);font-weight:var(--font-weight-semibold)}.spell-inline-expansion .spell-expanded-footer{margin-top:var(--space-6);padding-top:var(--space-6);border-top:1px solid var(--color-border-secondary);font-size:var(--font-size-base);display:flex;justify-content:space-between;align-items:center}.spell-inline-expansion .spell-source{color:var(--color-text-secondary);font-style:italic;font-size:var(--font-size-base)}}@media(max-width:768px){.spell-table-container,.spellbook-table-container{padding:0;background:transparent;border:none;overflow-x:visible}.spell-table thead,.spellbook-table>thead{display:none}.spell-table,.spell-table>tbody,.spellbook-table,.spellbook-table>tbody{display:block;width:100%}.spell-table>tbody>tr,.spellbook-table>tbody>tr{display:flex;flex-wrap:wrap;margin-bottom:var(--space-4);gap:var(--space-2);background:light-dark(rgba(255,255,255,.95),rgba(30,41,59,.6));border:1px solid light-dark(rgba(226,232,240,.8),rgba(100,116,139,.3));border-radius:var(--radius-xl);padding:var(--space-3) var(--space-4) var(--space-4);border-left:4px solid var(--color-primary);position:relative;min-height:60px;box-shadow:light-dark(0 1px 3px rgba(0,0,0,.05),none)}.spell-table>tbody>tr:hover,.spellbook-table>tbody>tr:hover{background:light-dark(rgba(248,250,252,.95),rgba(30,41,59,.8))}.spell-row.expanded{background:light-dark(rgba(237,233,254,.3),rgba(79,70,229,.15));border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:none;margin-bottom:0;z-index:1;clip-path:inset(-20px -20px 0 -20px)}.spell-table>tbody>tr.spell-expansion-row,.spellbook-table>tbody>tr.spell-expansion-row{border-top-left-radius:0;border-top-right-radius:0;border-top:none;margin-top:0;background:light-dark(rgba(237,233,254,.3),rgba(79,70,229,.15));padding-top:0}.spellbook-table .prepared-row{background:light-dark(rgba(237,233,254,.25),rgba(79,70,229,.15))}.spellbook-table .prepared-row:hover{background:light-dark(rgba(237,233,254,.35),rgba(79,70,229,.2))}.spell-table>tbody>tr>td,.spellbook-table>tbody>tr>td{padding:0;border:none}.spell-name{flex:1 1 100%;padding:var(--space-2) var(--space-1) var(--space-2) 3rem;margin:0;min-width:0;order:1}.spell-table .spell-name{padding-right:var(--space-1)}.spellbook-table .spell-name{padding-left:3.5rem;padding-right:3.5rem}.spell-name-header{display:inline;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:light-dark(#4c1d95,#a5b4fc);line-height:var(--line-height-snug);overflow-wrap:break-word;word-break:break-word}.level-col,.school-col{display:inline-block!important;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);padding:var(--space-1) var(--space-2);margin:var(--space-1) var(--space-1) 0 0;border-radius:var(--radius-md);background:light-dark(rgba(139,92,246,.1),rgba(139,92,246,.2));color:light-dark(#6d28d9,#a78bfa);border:1px solid light-dark(rgba(139,92,246,.3),rgba(139,92,246,.3));white-space:nowrap;text-align:center;vertical-align:middle}.level-col{flex:0 0 auto;order:2;margin-left:3.5rem;margin-bottom:var(--space-2)}.school-col{flex:0 0 auto;order:3;margin-bottom:var(--space-2)}.time-col,.range-col,.components-col,.duration-col,.classes-col,.source-col{width:auto!important;min-width:0!important;flex:1 1 45%;order:4;white-space:normal!important;font-size:var(--font-size-sm);color:var(--color-text-secondary);padding:var(--space-1) 0}.source-col{flex:1 1 100%;order:5;font-style:italic}.components-col{display:flex;align-items:center;justify-content:flex-start}.badge{display:inline-block;margin:0 0 0 var(--space-1);padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs)}.spell-expansion-cell{flex:1 1 100%;width:100%;display:block!important}.spell-inline-expansion,.spellbook-table .spell-inline-expansion{margin-top:0;padding-top:var(--space-2);border-top:1px solid light-dark(rgba(203,213,225,.6),rgba(100,116,139,.3));animation:slideDown var(--transition-base) forwards;opacity:1;color:light-dark(#1e293b,#e2e8f0)}.spell-inline-expansion .spell-meta,.spellbook-table .spell-inline-expansion .spell-meta{font-size:var(--font-size-base);margin-bottom:var(--space-4);color:var(--color-text-secondary)}.spell-inline-expansion .spell-expanded-details,.spellbook-table .spell-inline-expansion .spell-expanded-details{display:grid;grid-template-columns:1fr;gap:var(--space-3);margin-bottom:var(--space-4);padding:var(--space-4);background:light-dark(rgba(241,245,249,.6),rgba(15,23,42,.4));border-radius:var(--radius-lg);font-size:var(--font-size-base);color:light-dark(#1e293b,#e2e8f0)}.spell-inline-expansion .spell-expanded-details strong,.spellbook-table .spell-inline-expansion .spell-expanded-details strong{display:block;margin-bottom:var(--space-1);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);color:var(--color-text-secondary)}.spell-inline-expansion .spell-expanded-description,.spellbook-table .spell-inline-expansion .spell-expanded-description{font-size:var(--font-size-md);line-height:var(--line-height-relaxed);margin:var(--space-4) 0;color:var(--color-text-primary)}.spell-inline-expansion .spell-expanded-higher-levels,.spellbook-table .spell-inline-expansion .spell-expanded-higher-levels{margin:var(--space-4) 0;padding:var(--space-4);background:light-dark(rgba(237,233,254,.4),rgba(79,70,229,.05));border-radius:var(--radius-lg);border-left:3px solid var(--color-primary);font-size:var(--font-size-md);line-height:var(--line-height-relaxed)}.spell-inline-expansion .spell-expanded-higher-levels strong,.spellbook-table .spell-inline-expansion .spell-expanded-higher-levels strong{display:block;margin-bottom:var(--space-2);font-size:var(--font-size-base);color:var(--color-primary)}.spell-inline-expansion .spell-expanded-footer,.spellbook-table .spell-inline-expansion .spell-expanded-footer{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid light-dark(rgba(203,213,225,.4),rgba(100,116,139,.2));font-size:var(--font-size-base);display:flex;flex-direction:column;gap:var(--space-2)}.spell-expanded-classes{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.spell-expanded-classes strong{margin-bottom:0!important;margin-right:var(--space-2)}.expanded-badges-container{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-1)}.materials-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-style:italic}.spell-inline-expansion .spell-source,.spellbook-table .spell-inline-expansion .spell-source{margin-top:var(--space-2);color:var(--color-text-secondary);font-style:italic;font-size:var(--font-size-sm)}.spell-expanded-row,.spellbook-table .spell-expanded-row{display:none}}.spellbook-detail{padding:var(--space-8);max-width:1600px;margin:0 auto}.spellbook-detail-header{margin-bottom:var(--space-8)}.btn-back{padding:var(--space-2) var(--space-4);background:transparent;color:var(--color-primary);border:none;font-size:var(--font-size-md);cursor:pointer;margin-bottom:var(--space-4);transition:opacity var(--transition-fast)}.btn-back:hover{opacity:.7}.spellbook-header-content{flex:1}.spellbook-header-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2)}.spellbook-header-top h2{margin:0}.spellbook-header-top .header-actions{display:flex;gap:var(--space-3)}.spellbook-header-top .btn-secondary{padding:var(--space-2) var(--space-4);background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base)}.spellbook-header-top .btn-secondary:hover{background:var(--color-hover-strong)}.spellbook-stats{color:var(--color-text-secondary);margin:0 0 var(--space-3) 0}.spellbook-attributes{display:flex;gap:var(--space-6);flex-wrap:wrap;margin-top:var(--space-4);padding:var(--space-4);background:var(--color-bg-secondary);border-radius:var(--radius-md);border:1px solid var(--color-border-primary)}.spellbook-attributes span{display:flex;flex-direction:column;gap:var(--space-1)}.spellbook-attributes strong{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.05em}.spellbook-attributes span>:not(strong){color:var(--color-text-primary);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}.spell-slots-display{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-4);background:var(--color-bg-secondary);border-radius:var(--radius-md);border:1px solid var(--color-border-primary)}.spell-slots-display>strong{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.05em}.spell-slots-table{border-collapse:collapse;width:auto;display:table}.spell-slots-table thead{display:table-header-group}.spell-slots-table tbody{display:table-row-group}.spell-slots-table tr{display:table-row}.spell-slots-table th,.spell-slots-table td{display:table-cell;padding:var(--space-2) var(--space-3);text-align:center;border:1px solid var(--color-border-primary)}.spell-slots-table th{background:var(--color-bg-primary);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);text-transform:uppercase}.spell-slots-table td{background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);min-width:40px}.spellbook-detail-empty{text-align:center;padding:var(--space-16) var(--space-8);color:var(--color-text-secondary)}.spellbook-detail-empty p{margin:var(--space-2) 0}.spellbook-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);padding:var(--space-4);background:var(--color-bg-secondary);border-radius:var(--radius-md);border:1px solid var(--color-border-primary)}.filter-checkbox-label{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;user-select:none}.filter-checkbox-label input[type=checkbox]{cursor:pointer;width:18px;height:18px}.filter-checkbox-label span{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.spellbook-table-container{margin-top:var(--space-4);overflow-x:auto}.spellbook-table .prepared-col{width:60px;text-align:center}.spellbook-table .prepared-col input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--color-primary)}.spellbook-table .prepared-row{background:light-dark(rgba(79,70,229,.05),rgba(79,70,229,.08))}.spellbook-table .prepared-row:hover{background:light-dark(rgba(79,70,229,.1),rgba(79,70,229,.12))}.spellbook-table .action-col{width:80px;text-align:center}.btn-remove-small{width:32px;height:32px;padding:0;background:transparent;color:var(--color-text-tertiary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);display:inline-flex;align-items:center;justify-content:center}.btn-remove-small:hover{background:var(--color-error-bg);color:var(--color-error)}.context-menu{background:var(--color-bg-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);z-index:var(--z-modal);min-width:180px;overflow:hidden;transform:translate(-50%,-100%);margin-top:-10px}.context-menu-item{width:100%;padding:var(--space-3) var(--space-4);background:none;border:none;text-align:left;color:var(--color-text-primary);font-size:var(--font-size-md);cursor:pointer;transition:background var(--transition-base);border-bottom:1px solid var(--color-border-secondary)}.context-menu-item:last-child{border-bottom:none}.context-menu-item:hover{background:var(--color-hover)}.context-menu-item-danger{color:var(--color-error)}.context-menu-item-danger:hover{background:var(--color-error-bg)}@media(max-width:768px){.spellbook-detail{padding:var(--space-4)}.spellbook-header-top{flex-direction:column;align-items:stretch;gap:var(--space-3)}.spellbook-header-top h2{font-size:var(--font-size-2xl)}.spellbook-header-top .header-actions{display:flex;flex-direction:row;gap:var(--space-2)}.spellbook-header-top .btn-secondary{flex:1}.spellbook-attributes{display:flex;flex-direction:row;gap:var(--space-4);justify-content:space-between}.spellbook-attributes span{flex:1;min-width:0}.spellbook-controls{flex-direction:column;align-items:stretch;gap:var(--space-3)}.spellbook-controls button{width:100%}.spellbook-table td:not(.spell-name):not(.level-col):not(.school-col):not(.spell-expansion-cell):not(.action-col):not(.prepared-col){display:none}.spellbook-table .prepared-col{display:block;position:absolute;top:var(--space-3);left:var(--space-4);width:auto;padding:0;z-index:2}.spellbook-table .action-col{position:absolute;top:var(--space-3);right:var(--space-4);bottom:auto;width:auto;display:block;padding:0}.spellbook-table .prepared-row{background:light-dark(rgba(79,70,229,.08),rgba(79,70,229,.12));border:2px solid light-dark(rgba(79,70,229,.3),rgba(79,70,229,.5))}.spell-slots-table{display:table}.spell-slots-table thead{display:table-header-group}.spell-slots-table tbody{display:table-row-group}.spell-slots-table tr{display:table-row;margin:0;padding:0;border:none;border-radius:0;box-shadow:none;min-height:auto;flex-wrap:nowrap}.spell-slots-table th,.spell-slots-table td{display:table-cell;padding:var(--space-2) var(--space-3)}}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{position:fixed;top:0;left:0;right:0;z-index:100;background:var(--color-bg-primary);border-bottom:1px solid var(--color-border-secondary);box-shadow:0 2px 8px #0000001a;display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);gap:var(--space-6)}.app-title{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1)}.app-header h1{font-size:var(--font-size-2xl);margin:0;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.app-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0;font-weight:var(--font-weight-normal)}.app-nav{display:flex;gap:var(--space-3)}.nav-link{padding:var(--space-3) var(--space-6);background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base)}.nav-link:hover{background:var(--color-hover);color:var(--color-text-primary)}.nav-link.active{background:var(--color-primary);color:var(--color-text-on-primary);border-color:var(--color-primary)}.browse-header{text-align:center;margin-bottom:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);align-items:center}.browse-header p{font-size:var(--font-size-md);color:var(--color-text-secondary);margin:0}.batch-add-container{display:flex;gap:var(--space-3);align-items:center;justify-content:flex-start;margin:var(--space-6) 0;padding:var(--space-4);background:var(--color-bg-overlay);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg)}.spellbook-dropdown{flex:1;max-width:400px;padding:var(--space-3) var(--space-4);background:var(--color-bg-input);border:var(--input-border);border-radius:var(--radius-lg);color:var(--color-text-primary);font-size:var(--font-size-md);cursor:pointer;transition:all var(--transition-base)}.spellbook-dropdown:hover{border-color:var(--color-border-focus)}.spellbook-dropdown:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.batch-add-container .btn-primary:disabled,.batch-add-container .btn-secondary:disabled{opacity:.5;cursor:not-allowed}.app-main{flex:1;padding:calc(80px + var(--space-8)) 0 var(--space-8);max-width:1400px;width:100%;margin:0 auto}.loading,.error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;text-align:center;padding:var(--space-8)}.loading h2,.error h2{font-size:var(--font-size-2xl);color:var(--color-text-heading);margin-bottom:var(--space-2)}.loading p,.error p{color:var(--color-text-secondary)}.error h2{color:var(--color-error)}@media(max-width:768px){body{overflow-x:hidden}.app{max-width:100vw;overflow-x:hidden}.app-header{flex-direction:column;align-items:stretch;padding:var(--space-3) var(--space-4);gap:var(--space-3)}.app-title{align-items:center;text-align:center}.app-header h1{font-size:var(--font-size-xl)}.app-subtitle{font-size:var(--font-size-xs)}.app-nav{flex-direction:row;gap:var(--space-2)}.nav-link{flex:1;padding:var(--space-2) var(--space-3);text-align:center;font-size:var(--font-size-sm)}.app-main{padding:calc(120px + var(--space-4)) var(--space-4) var(--space-4);max-width:100vw;overflow-x:hidden}.batch-add-container{flex-direction:column;gap:var(--space-3)}.spellbook-dropdown{width:100%;max-width:none}.batch-add-container .btn-primary,.batch-add-container .btn-secondary{width:100%}.success-toast{bottom:var(--space-4);right:var(--space-4);left:var(--space-4);font-size:var(--font-size-base)}}.spellbook-selector-list{display:flex;flex-direction:column;gap:var(--space-3);margin:var(--space-4) 0;max-height:400px;overflow-y:auto}.spellbook-selector-item{display:flex;flex-direction:column;align-items:flex-start;padding:var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);text-align:left}.spellbook-selector-item:hover{background:var(--color-hover);border-color:var(--color-primary)}.spellbook-selector-item strong{display:block;margin-bottom:var(--space-1);color:var(--color-text-primary)}.spellbook-selector-item span{font-size:var(--font-size-base);color:var(--color-text-secondary)}.success-toast{position:fixed;bottom:var(--space-8);right:var(--space-8);padding:var(--space-4) var(--space-6);background:var(--color-success);color:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);font-weight:var(--font-weight-medium);animation:slideIn var(--transition-slow);z-index:var(--z-toast)}@keyframes slideIn{0%{transform:translateY(100px);opacity:0}to{transform:translateY(0);opacity:1}}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-8);background:var(--color-bg-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.error-boundary-content{max-width:600px;text-align:center;background:var(--color-bg-secondary);padding:var(--space-12);border-radius:var(--radius-xl);box-shadow:var(--shadow-md)}.error-icon{font-size:var(--font-size-4xl);margin-bottom:var(--space-6);animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.error-title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-heading);margin-bottom:var(--space-4)}.error-message{font-size:var(--font-size-lg);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-bottom:var(--space-8)}.error-actions{display:flex;gap:var(--space-4);justify-content:center;flex-wrap:wrap;margin-bottom:var(--space-8)}.error-actions .btn-primary,.error-actions .btn-secondary{padding:var(--space-3) var(--space-6);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);border-radius:var(--radius-lg);border:none;cursor:pointer;transition:all var(--transition-fast)}.error-actions .btn-primary{background:var(--color-primary);color:var(--color-text-on-primary)}.error-actions .btn-primary:hover{background:var(--color-primary-hover);transform:translateY(-2px);box-shadow:var(--shadow-md)}.error-actions .btn-secondary{background:var(--color-bg-tertiary);color:var(--color-text-primary);border:1px solid var(--color-border-primary)}.error-actions .btn-secondary:hover{background:var(--color-hover-strong);transform:translateY(-2px)}.error-details{margin-top:var(--space-8);text-align:left;background:light-dark(#f8f8f8,#1e1e1e);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);padding:var(--space-4)}.error-details summary{cursor:pointer;font-weight:var(--font-weight-semibold);color:var(--color-text-primary);padding:var(--space-2);user-select:none}.error-details summary:hover{background:var(--color-hover);border-radius:var(--radius-sm)}.error-stack{margin-top:var(--space-4)}.error-stack h3{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin-top:var(--space-4);margin-bottom:var(--space-2)}.error-stack pre{background:light-dark(#2d2d2d,#1a1a1a);color:light-dark(#f8f8f8,#e0e0e0);padding:var(--space-4);border-radius:var(--radius-sm);overflow-x:auto;font-family:Monaco,Menlo,Consolas,monospace;font-size:var(--font-size-sm);line-height:var(--line-height-normal);white-space:pre-wrap;word-wrap:break-word}@media(max-width:640px){.error-boundary{padding:var(--space-4)}.error-boundary-content{padding:var(--space-8) var(--space-6)}.error-title{font-size:var(--font-size-2xl)}.error-message{font-size:var(--font-size-md)}.error-actions{flex-direction:column;gap:var(--space-3)}.error-actions .btn-primary,.error-actions .btn-secondary{width:100%}}:root{--color-bg-primary: light-dark(#ffffff, #0f172a);--color-bg-secondary: light-dark(#f8fafc, #1e293b);--color-bg-tertiary: light-dark(#f1f5f9, #334155);--color-bg-elevated: light-dark(rgba(255, 255, 255, .95), rgba(30, 41, 59, .6));--color-bg-overlay: light-dark(rgba(248, 250, 252, .9), rgba(30, 41, 59, .4));--color-bg-overlay-strong: light-dark(rgba(248, 250, 252, .95), rgba(30, 41, 59, .6));--color-bg-card: light-dark(rgba(255, 255, 255, .95), rgba(30, 41, 59, .6));--color-bg-input: light-dark(#ffffff, rgba(15, 23, 42, .6));--color-text-primary: light-dark(#0f172a, rgba(255, 255, 255, .87));--color-text-secondary: light-dark(#64748b, #94a3b8);--color-text-tertiary: light-dark(#94a3b8, #64748b);--color-text-muted: light-dark(#cbd5e1, #475569);--color-text-inverse: light-dark(rgba(255, 255, 255, .87), #0f172a);--color-text-on-primary: #ffffff;--color-text-link: light-dark(#4c1d95, #a5b4fc);--color-text-heading: light-dark(#334155, #cbd5e1);--color-text-label: light-dark(#475569, #cbd5e1);--color-border-primary: light-dark(#e2e8f0, rgba(100, 116, 139, .3));--color-border-secondary: light-dark(#cbd5e1, rgba(100, 116, 139, .2));--color-border-tertiary: light-dark(rgba(226, 232, 240, .8), rgba(100, 116, 139, .15));--color-border-strong: light-dark(rgba(203, 213, 225, .8), rgba(100, 116, 139, .4));--color-border-focus: #667eea;--color-primary: #4f46e5;--color-primary-hover: #4338ca;--color-primary-light: light-dark(rgba(79, 70, 229, .1), rgba(79, 70, 229, .2));--color-primary-lighter: light-dark(rgba(79, 70, 229, .05), rgba(79, 70, 229, .1));--color-accent: #667eea;--color-accent-light: light-dark(rgba(102, 126, 234, .1), rgba(102, 126, 234, .2));--color-accent-lighter: light-dark(rgba(102, 126, 234, .05), rgba(102, 126, 234, .1));--color-success: light-dark(#059669, #10b981);--color-success-bg: light-dark(rgba(5, 150, 105, .1), rgba(16, 185, 129, .1));--color-success-border: light-dark(rgba(5, 150, 105, .2), rgba(16, 185, 129, .2));--color-warning: light-dark(#d97706, #fbbf24);--color-warning-bg: light-dark(rgba(217, 119, 6, .1), rgba(251, 191, 36, .1));--color-warning-border: light-dark(rgba(217, 119, 6, .2), rgba(251, 191, 36, .2));--color-error: light-dark(#dc2626, #ef4444);--color-error-bg: light-dark(rgba(220, 38, 38, .05), rgba(239, 68, 68, .1));--color-error-border: light-dark(rgba(220, 38, 38, .2), rgba(239, 68, 68, .3));--color-error-text: light-dark(#dc2626, #fca5a5);--color-error-hover: light-dark(#b91c1c, #dc2626);--color-info: light-dark(#0284c7, #38bdf8);--color-info-bg: light-dark(rgba(2, 132, 199, .1), rgba(56, 189, 248, .1));--color-info-border: light-dark(rgba(2, 132, 199, .2), rgba(56, 189, 248, .2));--color-badge-concentration-bg: light-dark(rgba(6, 182, 212, .15), rgba(6, 182, 212, .25));--color-badge-concentration-text: light-dark(#0e7490, #67e8f9);--color-badge-concentration-border: light-dark(#06b6d4, #06b6d4);--color-badge-ritual-bg: light-dark(rgba(239, 68, 68, .15), rgba(239, 68, 68, .25));--color-badge-ritual-text: light-dark(#dc2626, #fca5a5);--color-badge-ritual-border: light-dark(#ef4444, #dc2626);--color-hover: light-dark(#f1f5f9, rgba(100, 116, 139, .15));--color-hover-strong: light-dark(#e2e8f0, rgba(100, 116, 139, .2));--color-active: light-dark(rgba(79, 70, 229, .1), rgba(79, 70, 229, .15));--color-active-strong: light-dark(rgba(79, 70, 229, .15), rgba(79, 70, 229, .2));--color-prepared-bg: light-dark(rgba(237, 233, 254, .25), rgba(79, 70, 229, .15));--color-prepared-hover: light-dark(rgba(237, 233, 254, .35), rgba(79, 70, 229, .2));--color-expanded-bg: light-dark(rgba(237, 233, 254, .3), rgba(79, 70, 229, .1));--color-level-bg: light-dark(rgba(102, 126, 234, .15), rgba(102, 126, 234, .2));--color-level-text: light-dark(#4c1d95, #a5b4fc);--color-level-border: light-dark(rgba(102, 126, 234, .25), rgba(102, 126, 234, .3));--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-xs: var(--space-1);--space-sm: var(--space-2);--space-md: var(--space-4);--space-lg: var(--space-6);--space-xl: var(--space-8);--space-2xl: var(--space-12);--font-size-xs: .6875rem;--font-size-sm: .75rem;--font-size-base: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.7;--letter-spacing-tight: -.025em;--letter-spacing-normal: 0;--letter-spacing-wide: .05em;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .05);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 25px rgba(0, 0, 0, .15);--shadow-xl: 0 20px 60px rgba(0, 0, 0, .3);--shadow-focus: 0 0 0 3px rgba(102, 126, 234, .1);--shadow-focus-primary: 0 0 0 3px rgba(79, 70, 229, .1);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--z-base: 1;--z-dropdown: 10;--z-sticky: 100;--z-overlay: 1000;--z-modal: 2000;--z-toast: 3000;--btn-padding-sm: var(--space-2) var(--space-4);--btn-padding-md: var(--space-3) var(--space-6);--btn-padding-lg: var(--space-4) var(--space-8);--input-padding: var(--space-3) var(--space-4);--input-border: 1px solid var(--color-border-primary);--input-border-focus: 1px solid var(--color-border-focus);--card-padding: var(--space-6);--card-padding-sm: var(--space-4);--card-border: 1px solid var(--color-border-primary);--card-radius: var(--radius-xl)}:root{--bg-primary: var(--color-bg-primary);--bg-secondary: var(--color-bg-secondary);--bg-hover: var(--color-hover-strong);--text-primary: var(--color-text-primary);--text-secondary: var(--color-text-secondary);--border-color: var(--color-border-primary);--primary-color: var(--color-primary);--primary-hover: var(--color-primary-hover)}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:var(--line-height-normal);font-weight:var(--font-weight-normal);color-scheme:dark light;color:var(--color-text-primary);background-color:var(--color-bg-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}body{min-width:320px;min-height:100vh}#root{max-width:1280px;margin:0 auto;padding:var(--space-8)}button{border-radius:var(--radius-lg);border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:var(--font-weight-medium);font-family:inherit;background-color:var(--color-bg-tertiary);cursor:pointer;transition:border-color var(--transition-base)}button:hover{border-color:var(--color-accent)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}
