:root{--shell-bg: #f7f6f3;--shell-panel: #ffffff;--shell-panel-soft: #f2f1ee;--shell-border: #dedbd5;--shell-text: #252525;--shell-muted: #756f68;--shell-accent: #1184a4;--shell-accent-soft: #e5f3f7;--shell-danger: #a94343;--shell-radius-sm: 7px;--shell-radius-md: 11px;--shell-radius-lg: 15px;--shell-shadow: 0 7px 24px rgba(31, 34, 38, .07)}[data-theme=dark]{--shell-bg: #171819;--shell-panel: #202224;--shell-panel-soft: #272a2d;--shell-border: #393d40;--shell-text: #f2f0ec;--shell-muted: #aaa59e;--shell-accent-soft: rgba(17, 132, 164, .18);--shell-shadow: none}.editor-shell-v2{min-height:100vh;background:var(--shell-bg);color:var(--shell-text)}.editor-shell-header{width:min(1440px,100%);margin:0 auto;padding:18px 28px 14px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:nowrap}.editor-shell-brand{min-width:0;display:flex;align-items:center;gap:11px;flex:1 1 auto}.editor-shell-brand-text{min-width:0;flex:1 1 auto}.editor-shell-project-button{flex:0 0 auto;margin-left:auto;min-height:40px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--shell-border);border-radius:var(--shell-radius-sm);background:var(--shell-panel);color:var(--shell-text);font:inherit;font-size:.88rem;cursor:pointer}.editor-shell-brand{min-width:0;display:flex;align-items:center;gap:11px}.editor-shell-brand-icon{width:52px;height:52px;flex:0 0 52px;object-fit:contain;display:block}.editor-shell-brand-text{min-width:0}.editor-shell-brand h1{margin:0;font-size:clamp(1.35rem,2vw,1.8rem);line-height:1.05}.editor-shell-brand p{margin:5px 0 0;color:var(--shell-muted);font-size:.9rem;line-height:1.35}.editor-shell-project-button{flex:0 0 auto;min-height:40px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--shell-border);border-radius:var(--shell-radius-sm);background:var(--shell-panel);color:var(--shell-text);font:inherit;font-size:.88rem;cursor:pointer}.editor-shell-project-button:hover,.editor-shell-project-button.active{border-color:var(--shell-accent);background:var(--shell-accent-soft)}.editor-shell-project-chevron{transition:transform .16s ease}.editor-shell-project-button.active .editor-shell-project-chevron{transform:rotate(180deg)}.editor-shell-nav{position:sticky;top:0;z-index:30;width:100%;border-top:1px solid var(--shell-border);border-bottom:1px solid var(--shell-border);background:color-mix(in srgb,var(--shell-bg) 93%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.editor-shell-nav-wrap{position:relative;width:min(1440px,100%);margin:0 auto}.editor-shell-nav-scroll{width:100%;margin:0;padding:0 42px;display:flex;align-items:stretch;justify-content:center;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch}.editor-shell-nav-scroll::-webkit-scrollbar{display:none}.editor-shell-nav-item{position:relative;flex:0 0 auto;min-width:100px;min-height:58px;padding:8px 14px 10px;border:0;background:transparent;color:var(--shell-muted);display:inline-flex;align-items:center;justify-content:center;gap:7px;font:inherit;font-size:.82rem;cursor:pointer;scroll-snap-align:center;white-space:nowrap;transition:color .14s ease,background-color .14s ease}.editor-shell-nav-item:after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:3px;border-radius:999px 999px 0 0;background:transparent}.editor-shell-nav-item:hover{color:var(--shell-text);background:var(--shell-panel-soft)}.editor-shell-nav-item.active{color:var(--shell-accent);font-weight:700}.editor-shell-nav-item.active:after{background:var(--shell-accent)}.editor-shell-nav-main{display:inline-flex;align-items:center;justify-content:center;gap:7px}.editor-shell-nav-icon{display:inline-flex;align-items:center;justify-content:center;line-height:1}.editor-shell-nav-meta{position:absolute;top:8px;right:9px;display:inline-flex;align-items:center;justify-content:center;min-width:14px;min-height:14px;pointer-events:none}.editor-shell-nav-status{display:inline-flex;align-items:center;justify-content:center}.editor-shell-nav-status.partial{width:7px;height:7px;border-radius:50%;background:var(--shell-accent);opacity:.7}.editor-shell-nav-status.complete{width:16px;height:16px;border-radius:50%;background:var(--shell-accent-soft);color:var(--shell-accent)}.editor-shell-nav-badge{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--shell-accent-soft);color:var(--shell-accent);display:inline-flex;align-items:center;justify-content:center;font-size:.66rem;line-height:1;font-weight:800}.editor-shell-nav-scroll-button{position:absolute;top:50%;z-index:5;width:30px;height:38px;padding:0;display:flex;align-items:center;justify-content:center;transform:translateY(-50%);border:1px solid var(--shell-border);border-radius:999px;background:var(--shell-panel);color:var(--shell-text);box-shadow:0 2px 8px #00000017;cursor:pointer;transition:background-color .14s ease,border-color .14s ease,color .14s ease,opacity .14s ease}.editor-shell-nav-scroll-button:hover{border-color:var(--shell-accent);background:var(--shell-accent-soft);color:var(--shell-accent)}.editor-shell-nav-scroll-button.left{left:6px}.editor-shell-nav-scroll-button.right{right:6px}.editor-shell-nav-scroll-button:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;z-index:-1;border-radius:999px;background:color-mix(in srgb,var(--shell-bg) 82%,transparent)}.editor-shell-project-panel,.editor-shell-content{width:min(1360px,calc(100% - 40px));margin-left:auto;margin-right:auto}.editor-shell-project-panel{margin-top:14px;padding:14px 16px;display:grid;grid-template-columns:minmax(220px,.75fr) 1.5fr;gap:18px;align-items:center;border:1px solid var(--shell-border);border-radius:var(--shell-radius-md);background:var(--shell-panel);box-shadow:var(--shell-shadow)}.editor-shell-project-copy{display:grid;gap:4px}.editor-shell-project-copy span{color:var(--shell-muted);font-size:.82rem;line-height:1.4}.editor-shell-project-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;justify-content:stretch}.editor-shell-project-actions>*{width:100%}.editor-shell-project-actions .input-button,.editor-shell-project-actions button,.editor-shell-project-actions label{min-height:38px;width:100%;justify-content:center}.editor-shell-content{margin-top:18px;padding-bottom:48px}.editor-shell-content>.editor-grid{margin-top:0}@media(max-width:900px){.editor-shell-nav-scroll{justify-content:center}.editor-shell-project-panel{grid-template-columns:1fr;gap:12px}}@media(max-width:760px){.editor-shell-header{padding:13px 16px 11px;gap:10px}.editor-shell-brand{gap:8px}.editor-shell-brand-icon{width:42px;height:42px;flex-basis:42px}.editor-shell-brand h1{font-size:1.25rem}.editor-shell-brand p{max-width:260px;font-size:.76rem}.editor-shell-project-button{width:40px;height:40px;min-height:40px;padding:0;justify-content:center}.editor-shell-project-button span,.editor-shell-project-chevron{display:none}.editor-shell-nav-scroll{justify-content:center;padding-left:38px;padding-right:38px}.editor-shell-nav-item{min-width:76px;min-height:54px;padding:7px 12px 8px;font-size:.7rem}.editor-shell-nav-main{flex-direction:column;gap:3px}.editor-shell-nav-icon{display:flex}.editor-shell-nav-item:after{left:9px;right:9px}.editor-shell-nav-meta{top:5px;right:5px}.editor-shell-nav-scroll-button{width:27px;height:34px}.editor-shell-nav-scroll-button.left{left:4px}.editor-shell-nav-scroll-button.right{right:4px}.editor-shell-project-panel,.editor-shell-content{width:calc(100% - 24px)}.editor-shell-project-panel{padding:13px}.editor-shell-content{margin-top:12px}}@media(max-width:600px){.editor-shell-nav-item{min-width:55px;padding-left:8px;padding-right:10px;font-size:.65rem}.editor-shell-nav-main,.editor-shell-nav-icon{display:flex}.editor-shell-nav-main{flex-direction:column}.editor-shell-project-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:400px){.editor-shell-brand p{max-width:190px}.editor-shell-nav-item{min-width:54px;padding-left:6px;padding-right:8px}.editor-shell-nav-scroll{padding-left:34px;padding-right:34px}.editor-shell-nav-scroll-button{width:25px;height:32px}}@media(max-width:330px){.editor-shell-project-actions{grid-template-columns:1fr}.editor-shell-brand-icon{width:38px;height:38px;flex-basis:38px}.editor-shell-brand p{display:none}}.spellbook-page{--spellbook-surface: var(--panel-bg, rgba(255, 255, 255, .04));--spellbook-surface-strong: var(--input-bg, rgba(95, 151, 211, .102));--spellbook-border: var(--border-color, rgba(127, 127, 127, .28));--spellbook-text: var(--text-color, inherit);--spellbook-muted: var(--muted-text, rgba(127, 127, 127, .9));--spellbook-accent: var(--accent-color, currentColor);--color-confirm: var(--text-color, rgb(184, 11, 11));--spellbook-nav: var(--shell-accent, currentColor);width:100%;display:grid;gap:18px;color:var(--spellbook-text)}.spellbook-page-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-end}.spellbook-page-header h1,.spellbook-page-header p{margin:0}.spellbook-page-header h1{font-size:clamp(1.65rem,3vw,2.35rem);line-height:1.05}.spellbook-eyebrow{margin:0 0 5px!important;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.6}.spellbook-subtitle{max-width:680px;margin-top:8px!important;opacity:.72}.spellbook-summary{display:flex;border:1px solid var(--spellbook-border);border-radius:12px;overflow:hidden;flex:0 0 auto}.spellbook-summary span{min-width:88px;padding:10px 14px;display:grid;text-align:center}.spellbook-summary span+span{border-left:1px solid var(--spellbook-border)}.spellbook-summary strong{font-size:1.05rem}.spellbook-summary small{margin-top:1px;opacity:.62}.spellbook-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) auto auto auto;gap:10px;align-items:end;padding:12px;border:1px solid var(--spellbook-border);border-radius:14px;background:var(--spellbook-surface)}.spellbook-toolbar label{min-width:0}.spellbook-filter-label{display:block;margin:0 0 5px 2px;font-size:.72rem;font-weight:700;opacity:.65}.spellbook-toolbar input,.spellbook-toolbar select,.spellbook-clear-button,.spellbook-primary-button{min-height:40px;border:1px solid var(--spellbook-border);border-radius:9px;color:inherit;font:inherit}.spellbook-toolbar input,.spellbook-toolbar select{width:100%;padding:0 11px;background:var(--spellbook-surface-strong)}.spellbook-toolbar select{min-width:135px}.spellbook-clear-button,.spellbook-primary-button{padding:0 14px;cursor:pointer}.spellbook-clear-button{background:transparent}.spellbook-clear-button:disabled{opacity:.35;cursor:default}.spellbook-primary-button{background:#1f1f1f;color:#fff;border-color:#1f1f1f;font-weight:700}.spellbook-primary-button:hover{background:#333}.spellbook-secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:2px 5px;border:1px solid #d4d1c9;border-radius:5px;background:#fff;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .08s ease,box-shadow .15s ease;opacity:.5}.spellbook-secondary-button:hover{opacity:1}.spellbook-trash{color:var(--color-confirm)}.spellbook-workspace{display:grid;grid-template-columns:minmax(400px,.82fr) minmax(500px,1.18fr);gap:18px;align-items:start;min-width:0}.spellbook-collection-column{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.92fr);gap:12px;min-width:0;position:sticky;top:12px}.spellbook-panel{display:flex;flex-direction:column;height:calc(100dvh - 230px);min-height:480px;overflow:hidden}.spellbook-panel .spellbook-list{flex:1;min-height:0;max-height:none;overflow-y:auto}.spellbook-panel,.spellbook-preview-card{min-width:0;border:1px solid var(--spellbook-border);border-radius:14px;background:var(--spellbook-surface)}.spellbook-panel{overflow:hidden}.spellbook-panel-header{min-height:66px;padding:13px 14px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--spellbook-border);color:var(--spellbook-nav)}.spellbook-panel-header h2,.spellbook-panel-header p{margin:0}.spellbook-panel-header h2{font-size:1rem}.spellbook-panel-header p{margin-top:3px;font-size:.76rem;opacity:.6}.spellbook-list{max-height:min(65vh,760px);overflow:auto;padding:8px}.spellbook-row{display:flex;align-items:stretch;min-width:0;border:1px solid transparent;border-radius:9px;overflow:hidden}.spellbook-row+.spellbook-row{margin-top:3px}.spellbook-row:hover{background:var(--spellbook-surface-strong)}.spellbook-row.is-selected{border-color:var(--spellbook-border);background:var(--spellbook-surface-strong)}.spellbook-spell-button{flex:1 1 auto;min-width:0;padding:9px 10px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.spellbook-spell-name,.spellbook-spell-meta{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spellbook-spell-name{font-weight:700;font-size:.88rem}.spellbook-spell-meta{margin-top:2px;font-size:.72rem;opacity:.58}.spellbook-add-button,.spellbook-remove-button{min-width:38px;border:0;border-left:1px solid transparent;background:transparent;cursor:pointer}.spellbook-row:hover .spellbook-add-button,.spellbook-row:hover .spellbook-remove-button,.spellbook-row.is-selected .spellbook-add-button,.spellbook-row.is-selected .spellbook-remove-button{border-left-color:var(--spellbook-border)}.spellbook-add-button{display:grid;place-content:center;line-height:1;font-weight:800}.spellbook-add-button:disabled{opacity:.38;cursor:default}.spellbook-button-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.spellbook-remove-button{font-size:1.25rem;color:var(--color-confirm)}.spellbook-level-group+.spellbook-level-group{margin-top:12px}.spellbook-level-heading{display:flex;justify-content:space-between;gap:8px;padding:5px 8px 6px;font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;opacity:.56}.spellbook-empty{min-height:150px;padding:24px;display:grid;place-content:center;gap:4px;text-align:center;opacity:.62}.spellbook-empty strong{opacity:.95}.spellbook-empty span{font-size:.8rem}.spellbook-preview-card{padding:14px;position:sticky;top:12px}.spellbook-preview-header{margin-bottom:12px;display:flex;justify-content:space-between;gap:14px;align-items:center}.spellbook-preview-header h2,.spellbook-preview-header p{margin:0}.spellbook-preview-header h2{line-height:1.1}.spellbook-preview-meta{margin-top:4px!important;font-size:.82rem;opacity:.62}.spellbook-canvas-wrapper{position:relative;width:100%}.spellbook-canvas-wrapper .canvas-tooltip{position:absolute;pointer-events:none;z-index:50}.spellbook-canvas-wrapper{position:relative;display:inline-block;width:100%;max-width:inherit}.spellbook-canvas-frame{width:min(100%,610px);margin:0 auto;overflow:hidden;border-radius:11px}.spellbook-artwork-options{position:absolute;top:40%;left:33.5%;display:flex;opacity:1;z-index:20}.spellbook-artwork-options:hover{opacity:1}.spellbook-position-hint{margin:10px 0 0;text-align:center;font-size:.75rem;opacity:.58}.spellbook-preview-empty{min-height:340px;display:grid;place-content:center;gap:4px;text-align:center}.spellbook-preview-empty span{opacity:.6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.spellbook-appearance{position:absolute;top:12px;right:12px;z-index:30;display:inline-block}.spellbook-appearance.is-open{display:block}.spellbook-appearance-row{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:8px 12px;border-radius:12px}.spellbook-toggle-chevron{display:inline-block;font-size:.75rem;transition:transform .2s ease}.spellbook-appearance-toggle.is-open .spellbook-toggle-chevron{transform:rotate(360deg)}.spellbook-tint-control,.spellbook-color-setting{flex:0 0 auto;flex-direction:column;align-items:center}.spellbook-color-setting{display:flex;flex-direction:column;align-items:center;gap:3px}.spellbook-color-setting span,.appearance-label{font-size:.75rem;white-space:nowrap}.spellbook-color-setting input[type=color],.spellbook-tint-control input[type=color]{width:34px;height:34px;padding:2px;border-radius:50%;cursor:pointer}.spellbook-tint-control input[type=range]{flex:1;min-width:100px}.spellbook-position-control{display:flex;align-items:center;gap:7px;white-space:nowrap}.spellbook-preview-header{display:grid;grid-template-columns:auto auto 1fr;align-items:start;gap:16px;margin-bottom:12px}.spellbook-preview-title{min-width:110px}.spellbook-preview-title h2{margin:2px 0 4px}.spellbook-preview-meta{margin:0}.spellbook-save-image-button{align-self:center}.resize-options{position:relative;display:inline-flex;align-items:center}.spellbook-preview-tools{position:absolute;top:calc(100% + 8px);left:-35px;width:max-content;min-width:130px;padding:10px 12px;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:14px;box-shadow:0 8px 24px #0000001f;display:none;z-index:20}.spellbook-preview-tools.is-open{display:block}.spellbook-preview-tools:before{content:"";position:absolute;top:-6px;left:45px;width:10px;height:10px;background:#fff;border-left:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12);transform:rotate(45deg)}.spellbook-secondary-button.is-open{color:var(--spellbook-muted)}.spellbook-artwork-controls label{width:100px;min-width:0;display:flex;flex-direction:column;gap:2px}.spellbook-artwork-controls input[type=range]{width:100px;min-width:0;margin:0}.spellbook-artwork-controls label span{font-size:.8rem;white-space:nowrap}.spellbook-artwork-controls input[type=range]{height:6px;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:999px;background:#ddd;cursor:pointer}.spellbook-artwork-controls input[type=range]::-webkit-slider-thumb{width:16px;height:16px;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:2px solid #1f1f1f;border-radius:50%;background:#fff;cursor:pointer}.spellbook-artwork-controls input[type=range]::-moz-range-thumb{width:16px;height:16px;border:2px solid #1f1f1f;border-radius:50%;background:#fff;cursor:pointer}.spellbook-artwork-controls .hidden{display:none}.spellbook-reset-art-button.input-button{align-self:end;white-space:nowrap;padding:5px}.spellbook-appearance-toggle{display:none}.spellbook-search{position:relative}.spellbook-search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);pointer-events:none;opacity:.65}.spellbook-search input{padding-left:48px}@media(max-width:1120px){.spellbook-workspace{grid-template-columns:1fr}.spellbook-collection-column{position:static;height:calc(100dvh - 100px);grid-template-columns:1fr 1fr}.spellbook-panel{height:100%;min-height:0}}@media(max-width:760px){.spellbook-preview-header{grid-template-columns:1fr}.spellbook-appearance-row{padding:0}.spellbook-appearance-row{justify-content:center;text-align:center}.spellbook-appearance-toggle{display:inline-flex;align-items:center;gap:4px}.spellbook-appearance.is-open{display:block}.spellbook-appearance{display:none;position:static;top:auto;right:auto;width:100%}.spellbook-appearance-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:transparent;border:0;cursor:pointer;font:inherit;font-weight:600;text-align:left}.spellbook-toggle-chevron{display:inline-block;font-size:.75rem;transition:transform .2s ease}.spellbook-appearance-toggle.is-open .spellbook-toggle-chevron{transform:rotate(180deg)}.spellbook-page{gap:12px}.spellbook-page .canvas-actions{top:12px;right:15px}.spellbook-page-header{flex-direction:column;align-items:flex-start;gap:12px}.spellbook-summary{width:100%}.spellbook-summary span{flex:1}.spellbook-mobile-library-title{font-weight:700}.spellbook-mobile-library-meta{display:flex;align-items:center;gap:8px;font-size:.9rem;opacity:.7}.spellbook-list{max-height:320px}.spellbook-canvas-frame,.spellbook-position-control{width:100%}.spellbook-page-header{align-items:flex-start;flex-direction:column}.spellbook-toolbar{grid-template-columns:1fr 1fr}.spellbook-search{grid-column:1 / -1}.spellbook-collection-column{grid-template-columns:1fr}.spellbook-list{max-height:420px}}@media(max-width:650px){.spellbook-collection-column{height:calc(100dvh - 80px);grid-template-columns:1fr;grid-template-rows:1fr 1fr}.spellbook-panel{min-height:0}}@media(max-width:520px){.spellbook-toolbar{grid-template-columns:1fr}.spellbook-search{grid-column:auto}.spellbook-preview-card{position:relative}}@media(max-width:480px){.spellbook-toolbar{grid-template-columns:1fr}.spellbook-search{grid-column:auto}.spellbook-preview-header{align-items:flex-start;flex-direction:column}.spellbook-primary-button{width:100%}}.spellbook-mobile-tabs,.spellbook-mobile-collection,.spellbook-mobile-results-header{display:none}@media(max-width:760px){.spellbook-summary{display:none}.spellbook-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.spellbook-mobile-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:14px;border:1px solid var(--shell-border, #dedbd5);border-radius:10px;overflow:hidden;background:var(--shell-panel, #fff)}.spellbook-mobile-tab{min-width:0;min-height:54px;padding:9px 12px;display:flex;align-items:center;justify-content:center;gap:7px;border:0;background:transparent;color:var(--shell-text, #252525);font:inherit;font-size:.86rem;cursor:pointer}.spellbook-mobile-tab+.spellbook-mobile-tab{border-left:1px solid var(--shell-border, #dedbd5)}.spellbook-mobile-tab strong{color:var(--shell-accent, #1184a4);font-size:.84rem}.spellbook-mobile-tab.active{background:var(--shell-accent-soft, #e5f3f7);color:var(--shell-accent, #1184a4);font-weight:700}.spellbook-toolbar{margin-top:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px;border:1px solid var(--shell-border, #dedbd5);border-radius:12px;background:var(--shell-panel, #fff)}.spellbook-search{grid-column:1 / -1}.spellbook-toolbar label{min-width:0}.spellbook-toolbar select{width:100%}.spellbook-clear-button{grid-column:1 / -1}.spellbook-desktop-collections{display:none}.spellbook-mobile-collection{display:block;min-width:0;width:100%;max-height:50vh;height:100%;overflow-y:auto;overscroll-behavior:contain}.spellbook-mobile-collection>*{width:100%;max-width:none}.spellbook-workspace{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.spellbook-preview{width:100%;min-width:0}}@media(max-width:420px){.spellbook-mobile-tab{padding-left:8px;padding-right:8px;font-size:.8rem}.spellbook-toolbar{padding:10px;gap:8px}}.app-footer{width:100%;margin-top:48px;border-top:1px solid var(--shell-border);background:var(--shell-bg)}.app-footer-inner{width:min(1180px,calc(100% - 48px));margin:0 auto;padding:38px 0 28px}.app-footer-main{display:grid;grid-template-columns:minmax(420px,1.35fr) minmax(440px,1fr);gap:52px;align-items:start}.app-footer-intro{display:grid;grid-template-columns:minmax(190px,.8fr) minmax(230px,1.2fr);gap:32px;min-width:0}.app-footer-brand{display:flex;align-items:flex-start;gap:16px;min-width:0}.app-footer-mascot{width:58px;height:58px;flex:0 0 auto;object-fit:contain}.app-footer-brand h2{margin:0 0 6px;font-size:1rem;line-height:1.25;color:var(--shell-text)}.app-footer-description,.app-footer-about p{margin:0;font-size:.86rem;line-height:1.6;color:var(--shell-muted)}.app-footer-about{min-width:0}.app-footer-about .app-footer-credit{margin-top:10px;font-weight:700;color:var(--shell-text)}.app-footer-links{display:grid;grid-template-columns:minmax(175px,.8fr) minmax(210px,1.2fr);gap:28px;min-width:0}.app-footer-link-group{min-width:0}.app-footer-link-heading{display:block;margin-bottom:10px;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--shell-muted)}.app-footer-actions{display:grid;gap:8px}.app-footer-button{width:100%;min-height:48px;padding:9px 12px;display:grid;grid-template-columns:18px minmax(0,1fr) 13px;align-items:center;gap:8px;border:1px solid var(--shell-border);border-radius:10px;background:var(--shell-panel);color:var(--shell-text);font-size:.84rem;font-weight:650;line-height:1.25;text-decoration:none}.app-footer-button:hover{border-color:var(--shell-accent)}.app-footer-button-tip{color:var(--shell-accent)}.app-footer-external{opacity:.55}.app-footer-shop{padding-left:28px;border-left:1px solid var(--shell-border)}.app-footer-shop-description{max-width:300px;margin:0 0 9px;font-size:.86rem;line-height:1.55;color:var(--shell-muted)}.app-footer-shop-link{display:inline-flex;align-items:center;gap:6px;font-size:.9rem;font-weight:650;color:var(--shell-accent);text-decoration:none}.app-footer-shop-link:hover{text-decoration:underline}.app-footer-legal{max-width:760px;margin:34px auto 0;padding-top:22px;border-top:1px solid var(--shell-border);text-align:center;color:var(--shell-muted)}.app-footer-legal p{margin:2px 0;font-size:.72rem;line-height:1.5}@media(max-width:1000px){.app-footer-main{grid-template-columns:1fr;gap:30px}.app-footer-intro{grid-template-columns:minmax(240px,.8fr) minmax(300px,1.2fr)}.app-footer-links{grid-template-columns:minmax(220px,.8fr) minmax(260px,1.2fr)}.app-footer-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.app-footer{margin-top:36px}.app-footer-inner{width:min(100% - 32px,1180px);padding:30px 0 24px}.app-footer-main,.app-footer-intro,.app-footer-links{grid-template-columns:1fr}.app-footer-main{gap:28px}.app-footer-intro{gap:18px}.app-footer-brand{gap:14px}.app-footer-mascot{width:52px;height:52px}.app-footer-about{padding-left:0}.app-footer-links{gap:24px}.app-footer-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.app-footer-shop{padding:20px 0 0;border-left:0;border-top:1px solid var(--shell-border)}.app-footer-legal{margin-top:28px;padding-top:20px}}@media(max-width:420px){.app-footer-actions{grid-template-columns:1fr}.app-footer-button{min-height:44px}}@font-face{font-family:PlayerHand;src:local("Comic Sans MS");font-display:swap}@font-face{font-family:CardNumbers;src:local("Georgia");font-display:swap}:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#fdf8f8;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button{cursor:pointer}.input-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 13px;border:1px solid #d4d1c9;border-radius:10px;background:#fff;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .08s ease,box-shadow .15s ease}.input-button:hover{background:#f7f6f2;border-color:#aaa69c}.input-button:active{background:#eeece6;transform:translateY(1px)}.input-button:focus-visible{outline:2px solid #777;outline-offset:2px}.input-button.secondary{padding:2px 8px}.download-button{min-height:32px;padding:5px 8px;font-size:.75rem}.icon-only{padding:9px}.icon-text{display:flex;gap:5px;align-items:end}.reset-button{color:#666}.reset-button:hover{color:#9b2c2c;border-color:#c9a0a0;background:#fff7f7}.active-small{border:1px solid #1f1f1f;border-radius:10px;background:#1f1f1f;color:#fff}.coming-soon-badge{margin-left:4px;padding:2px 5px;border:1px solid currentColor;border-radius:999px;font-size:.58rem;font-weight:700;line-height:1;opacity:.55;white-space:nowrap}.share-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;background:#141e1c6b;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.share-dialog{width:min(100%,520px);max-height:calc(100vh - 48px);overflow-y:auto;padding:24px;background:var(--panel-bg, #fffdf8);border:1px solid var(--border-color, #d8d4ca);border-radius:16px;box-shadow:0 24px 60px #0000002e,0 4px 12px #00000014}.share-dialog h2{margin:0 0 8px;font-size:1.25rem}.share-dialog>p{margin:0 0 18px;font-size:.9rem;line-height:1.5;opacity:.75}.share-link-row{display:flex;align-items:stretch;width:100%;min-height:48px;background:#fff;border:1px solid var(--border-color, #d8d4ca);border-radius:9px;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.share-link-row:focus-within{border-color:var(--accent-color, #3f8f83);box-shadow:0 0 0 2px #3f8f831f}.share-link-icon{display:flex;align-items:center;justify-content:center;width:52px;flex-shrink:0;color:#9aaeb5;border-right:1px solid #edf0ed}.share-link-row input{flex:1;min-width:0;padding:0 14px;font:inherit;font-size:.85rem;color:#70858d;background:transparent;border:0;outline:0}.share-link-row input::selection{background:#3f8f832e}.share-copy-button{flex-shrink:0;min-width:90px;margin:4px;padding:0 18px;font:inherit;font-size:.85rem;font-weight:600;color:#fff;background:var(--accent-color, #3f8f83);border:0;border-radius:7px;cursor:pointer;transition:opacity .15s ease,transform .1s ease,background-color .2s ease}.share-copy-button:hover{opacity:.9}.share-copy-button:active{transform:scale(.98)}.share-copy-button.copied{background:#22b95b}.share-expiration{display:block;margin-top:10px;font-size:.78rem;opacity:.6}.share-dialog-actions{display:flex;justify-content:flex-end;margin-top:22px}.share-backup-note{display:flex;flex-direction:column;gap:3px;margin-top:16px;padding:12px 14px;font-size:.8rem;line-height:1.45;background:#3f8f8314;border:1px solid rgba(63,143,131,.18);border-radius:8px}.share-backup-note span{opacity:.75}@media(max-width:600px){.share-dialog-backdrop{align-items:flex-end;padding:12px}.share-dialog{width:100%;max-height:85vh;padding:20px;border-radius:16px}}.app-shell{min-height:100vh;max-width:1440px;margin:0 auto;padding:24px}.app-header{max-width:1500px;margin:0 auto 18px;display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.app-heading h1{margin:0 0 4px;font-size:30px}.app-heading p{max-width:620px;margin:0;color:#666}.app-header-intro p{margin:4px 0 0;font-size:.85rem;line-height:1.4;opacity:.7}.header-action-buttons{display:flex;gap:8px;flex-wrap:wrap}.header-reset{display:flex;align-items:center;padding-left:16px;border-left:1px solid #ddd9d1}.character-data-panel{padding:10px 12px;border:1px solid #e3e0da;border-radius:10px;background:#ffffff73}.header-action-copy{display:flex;flex-direction:column;gap:2px}.header-action-copy strong{font-size:1.2rem}.header-action-copy span{max-width:500px;font-size:.85rem;line-height:1.35;opacity:.6}.header-action-buttons{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap}.compact-action{min-height:34px;padding:6px 10px;font-size:.82rem;border-radius:8px}.card-nav-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 8px}.card-tabs{display:flex;flex-wrap:wrap;gap:8px}.card-tabs button,.pick-position{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:9px 13px;border:1px solid #d4d1c9;border-radius:10px;background:#fff;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .08s ease}.card-tabs button:hover,.pick-position:hover{background:#f5f3ef;border-color:#aaa69c}.card-tabs button:active,.pick-position:active{transform:translateY(1px)}.card-tabs button:focus-visible,.pick-position:focus-visible{outline:2px solid #777;outline-offset:2px}.card-tabs button.active{background:#1f1f1f;color:#fff;border-color:#1f1f1f}.card-tabs button.active:hover{background:#333;border-color:#333}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) 375px;gap:28px;align-items:stretch}.preview-panel,.form-panel{background:#fff;border:1px solid #dedbd3;border-radius:18px;box-shadow:0 6px 24px #0000000a}.editor-control-row{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.preview-stack{min-width:0}.preview-panel{display:flex;justify-content:center;min-width:0;background:transparent;border:none}.canvas-wrap{display:inline-flex;flex-direction:column;max-width:100%}.canvas-wrapper{position:relative}.canvas-actions{position:absolute;top:15px;right:20px;z-index:3;display:flex;gap:8px}.canvas-stage{position:relative;max-width:100%}.canvas-stage canvas{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100vh - 100px);border-radius:12px}.preview-panel canvas.editable{cursor:pointer}.preview-panel canvas.positioning{cursor:crosshair}.coordinate-display{position:absolute;top:10px;left:10px;z-index:3;padding:6px 10px;border-radius:6px;background:#000000bf;color:#fff;font-family:monospace;font-size:13px;pointer-events:none}.canvas-tooltip{position:fixed;z-index:1000;pointer-events:none;max-width:260px;padding:7px 10px;border-radius:6px;background:#1e1e1eeb;color:#fff;font-size:.85rem;line-height:1.3}.dev-toggle{display:flex;align-items:center;gap:7px;margin-bottom:12px;font-size:13px;white-space:nowrap}.position-help,.empty-card{margin-bottom:16px;padding:12px;border-radius:10px;background:#f3f3ef;color:#555;font-size:13px;line-height:1.45}.coordinate-display{position:absolute;top:10px;left:10px;z-index:3}.field-row.position-selected{opacity:1;border-style:dashed;border-color:#777;background:#faf9f6}.position-buttons{display:flex;flex-direction:column;gap:6px;margin-top:6px}.pick-position{font-size:12px;white-space:nowrap}.advanced-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:12px;padding-top:12px;border-top:1px solid #e3e0da}.advanced-toggle-copy{display:flex;flex-direction:column;gap:2px;text-align:left}.advanced-toggle-copy>span{font-size:.8rem;font-weight:700}.advanced-toggle-copy small{font-size:.72rem;line-height:1.35;opacity:.6}.toggle-switch{position:relative;flex:0 0 auto;cursor:pointer}.toggle-switch input{position:absolute;opacity:0;pointer-events:none}.toggle-track{display:flex;align-items:center;width:42px;height:24px;padding:3px;border-radius:999px;background:#d8d5ce;transition:background .2s ease}.toggle-thumb{width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .2s ease}.toggle-switch input:checked+.toggle-track{background:#333}.toggle-switch input:checked+.toggle-track .toggle-thumb{transform:translate(18px)}.toggle-switch input:focus-visible+.toggle-track{outline:2px solid currentColor;outline-offset:2px}.form-panel{max-height:calc(100vh - 160px);padding:22px;overflow:auto}.form-panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px;text-align:center}.form-panel-heading>div{width:100%}.form-panel h2{margin:0 0 4px}.form-panel p,.form-panel-heading>div>p{margin:0;color:#777;font-size:.85rem}.editor-settings{width:100%;display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:14px}.editor-setting-group{display:flex;flex-direction:column;align-items:center;gap:10px}.text-size-control{display:inline-flex;align-items:center;gap:6px;padding:5px 7px;border:1px solid #e1ded6;border-radius:10px;background:#faf9f6}.text-size-label{margin:0 3px;font-size:.78rem;color:#666;white-space:nowrap}.text-size-control .input-button,.text-size-control .active-small{padding:5px 9px}.appearance-grid{display:flex;align-items:flex-start;justify-content:center;flex-wrap:wrap;gap:12px}.appearance-color,.appearance-tint{display:flex;flex-direction:column;align-items:center;gap:4px}.appearance-color span,.appearance-label{font-size:.78rem;color:#666;white-space:nowrap}.appearance-label{text-align:center}.color-picker{width:34px;height:34px;padding:3px;border:1px solid #9d9d9d;border-radius:50%;background:transparent;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.color-picker::-webkit-color-swatch-wrapper{padding:0}.color-picker::-webkit-color-swatch{border:none;border-radius:50%}.color-picker::-moz-color-swatch{border:none;border-radius:50%}.color-picker:hover{border-color:#666}.color-picker:focus-visible{outline:2px solid #777;outline-offset:2px}.tint-control-box{display:flex;align-items:center;gap:8px;padding:5px 8px;margin-top:-5px;border:1px solid #e1ded6;border-radius:10px;background:#faf9f6}.tint-percent{min-width:28px;font-size:.78rem;text-align:right}.tint-range{--tint-percent: 50%;width:110px;height:8px;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:999px;outline:none;cursor:pointer;background:linear-gradient(to right,#1f1f1f 0%,#1f1f1f var(--tint-percent),#ddd var(--tint-percent),#ddd 100%)}.tint-range::-webkit-slider-thumb{width:20px;height:20px;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:2px solid #1f1f1f;border-radius:50%;background:#fff;cursor:pointer}.tint-range::-moz-range-thumb{width:20px;height:20px;border:2px solid #1f1f1f;border-radius:50%;background:#fff;cursor:pointer}.tint-range::-moz-range-track{height:8px;border-radius:999px;background:#ddd}.fields{display:flex;flex-direction:column;gap:5px}.field-row{padding:3px 5px;border:1px solid transparent;border-radius:6px;opacity:.72;transition:opacity .15s ease,border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.field-row:hover{opacity:1}.field-row.active{opacity:1;border-color:#aaa69c;background:#faf9f6;box-shadow:0 0 0 2px #1f1f1f0f,0 2px 6px #1f1f1f0d}.field-label{display:flex;flex-direction:column;gap:4px}.field-label>span{font-size:.78rem;font-weight:600}.field-main input[type=text],.field-main input[type=number],.field-main textarea{width:100%;padding:8px 10px;border:1px solid #d8d5ce;border-radius:8px;font:inherit;line-height:1.3}.field-main input[type=text],.field-main input[type=number]{min-height:38px}.field-main textarea{min-height:76px;resize:vertical}.field-label-inline{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}.field-label-inline>span{flex:0 0 120px;min-width:0}.checkbox-field>span{flex-basis:120px}.checkbox-field input[type=checkbox]{flex:0 0 auto;width:18px;height:18px;margin:0}.number-field input[type=number]{flex:0 0 60px;width:60px;min-height:36px;padding:6px 8px}.portrait-controls{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.portrait-heading{font-size:.9rem;font-weight:700}.portrait-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.portrait-size{display:flex;align-items:center;gap:10px}.portrait-size>span{font-size:.78rem;font-weight:600}.portrait-size input[type=range]{width:140px}.font-size-control{display:grid;grid-template-columns:auto minmax(100px,1fr) 60px auto;align-items:center;gap:8px;margin-top:5px}.font-size-control input[type=range]{height:6px;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:999px;background:#ddd;cursor:pointer}.font-size-control input[type=range]::-webkit-slider-thumb{width:16px;height:16px;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:2px solid #1f1f1f;border-radius:50%;background:#fff;cursor:pointer}.font-size-control input[type=range]::-moz-range-thumb{width:16px;height:16px;border:2px solid #1f1f1f;border-radius:50%;background:#fff;cursor:pointer}.font-size-number{width:60px;padding:5px 6px;text-align:center}.font-size-label{font-size:12px;opacity:.7}.choice-row{display:flex;align-items:center;gap:12px}.choice-label{flex:0 0 75px;font-size:.78rem;font-weight:600}.choice-options{display:inline-flex;border:1px solid #d8d5ce;border-radius:8px;overflow:hidden}.choice-option{border:0;background:transparent;padding:7px 14px;font:inherit;cursor:pointer}.choice-option+.choice-option{border-left:1px solid #d8d5ce}.choice-option.active{font-weight:600}.proficiency-picker{margin-top:20px;padding:14px;border:1px solid #ece9e2;border-radius:12px}.proficiency-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.proficiency-heading h3{margin:0}.proficiency-heading .text-button{padding:5px 8px;border:0;background:transparent;color:#666;font-size:13px}.proficiency-heading .text-button:hover{color:#1f1f1f}.proficiency-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.proficiency-option{display:flex;align-items:center;gap:8px;min-height:42px;padding:8px 10px;border:1px solid #e2dfd8;border-radius:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.proficiency-option:has(input:checked){border-color:#777;background:#f3f3ef}.proficiency-option input{flex:0 0 auto;width:20px;height:20px;margin:0}.proficiency-option span{font-size:14px}.calculation-overrides{margin-top:14px;padding:14px;border:1px solid #d8d5ce;border-radius:10px;background:#00000004}.calculation-overrides-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.calculation-overrides-heading h3{margin:0;font-size:.9rem;font-weight:700}.calculation-overrides-heading p{margin:4px 0 0;max-width:420px;font-size:.75rem;line-height:1.4;opacity:.65}.calculation-overrides-heading .text-button{flex:0 0 auto;white-space:nowrap}.override-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px}.override-option{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}.override-option>span{min-width:0;font-size:.78rem;font-weight:600;line-height:1.2}.override-option input{flex:0 0 68px;width:68px;min-height:32px;padding:5px 7px;border:1px solid #d8d5ce;border-radius:7px;font:inherit;font-size:.82rem;text-align:center;background:#fff}.override-option.has-override>span{font-weight:700}.override-option.has-override input{border-color:currentColor}.download-all-row{margin:0 auto}@media(max-width:1100px)and (min-width:769px){.editor-grid{grid-template-columns:minmax(0,1fr) minmax(320px,375px);gap:18px}.form-panel{max-height:100vh}}@media(max-width:1000px){.app-shell{padding:18px}.form-panel{max-height:none}}@media(max-height:700px)and (min-width:769px){.canvas-stage canvas{max-height:none;width:100%}.form-panel{max-height:max(calc(100vh - 160px),700px);overflow:auto}}@media(max-width:768px){.canvas-actions{position:absolute;right:10px;z-index:3;display:flex;gap:8px}.app-header{flex-direction:column;gap:12px}.header-actions{width:100%;align-items:stretch;flex-direction:column;gap:10px}.header-reset{padding-left:0;padding-top:10px;border-left:0;border-top:1px solid #ddd9d1}.header-actions .input-button{padding:8px 10px}.editor-grid{grid-template-columns:1fr;align-items:start}.card-nav-row{align-items:flex-start;flex-direction:column;gap:10px}.appearance-grid{justify-content:center}.number-field input[type=number]{flex-basis:80px;width:80px}}@media(max-width:540px){.position-buttons{flex-direction:row}.proficiency-options{grid-template-columns:1fr}.calculation-overrides{padding:12px}.calculation-overrides-heading{gap:10px}.override-options{grid-template-columns:1fr}.override-option input{flex-basis:72px;width:72px}}
