@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Outfit:wght@400;500;600;700;800&display=swap";.theme-selector-row{align-items:center;gap:8px;min-width:0;display:flex}.theme-selector-row .menubar-setting{flex:1;min-width:0}.theme-selector-row .menubar-setting label{align-items:center;min-width:0;display:flex}.theme-selector-row select{width:100%;min-width:0}.theme-custom-button{width:44px;height:44px;color:var(--c-primary);background:var(--c-surface-elevated);border:1px solid var(--c-border);border-radius:var(--r-sm);cursor:pointer;flex-shrink:0;place-items:center;display:grid}.theme-custom-button:hover{border-color:var(--c-primary)}.theme-custom-button:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}.theme-editor .modal-content--compact{width:min(960px,100vw - 32px);max-width:none;max-height:calc(100dvh - 32px);color:var(--c-text);background:var(--c-surface)}.theme-editor .modal-body{min-height:0;padding:0;display:flex;overflow:hidden}.theme-editor-form{flex-direction:column;width:100%;min-height:0;display:flex}.theme-base-controls{flex-wrap:wrap;align-items:end;gap:12px;padding:16px 20px 8px;display:flex}.theme-base-controls label{flex-direction:column;gap:5px;font-size:.8rem;display:flex}.theme-editor button,.theme-editor select,.theme-editor input{font:inherit;color:var(--c-text);background:var(--c-surface-elevated);border:1px solid var(--c-border);border-radius:var(--r-sm);min-height:36px}.theme-editor button{cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:6px 10px;display:inline-flex}.theme-editor button:focus-visible,.theme-editor input:focus-visible,.theme-editor select:focus-visible,.theme-editor summary:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}.theme-editor button:disabled{opacity:.5;cursor:default}.theme-editor-intro{color:var(--c-text-secondary);margin:0;padding:0 20px 12px;font-size:.8rem}.theme-editor-layout{grid-template-columns:minmax(0,1fr) 320px;gap:20px;min-height:0;max-height:60dvh;padding:0 20px 20px;display:grid;overflow:auto}.theme-groups details{border:1px solid var(--c-border);border-radius:var(--r-sm);margin-bottom:8px}.theme-groups summary{cursor:pointer;padding:12px;font-size:.85rem;font-weight:600}.theme-color-field{border-top:1px solid var(--c-border);padding:8px 12px 12px}.theme-color-field>label{margin-bottom:6px;font-size:.8rem;display:block}.theme-color-controls{align-items:center;gap:8px;display:flex}.theme-color-controls .theme-color-swatch{background:repeating-conic-gradient(#b6b6b6 0% 25%,#fff 0% 50%) 50%/12px 12px padding-box content-box;flex-shrink:0;width:44px;height:36px;padding:4px}.theme-color-swatch span{border-radius:3px;width:100%;height:100%;min-height:26px}.theme-color-controls .theme-color-value{width:100%;min-width:0;padding:6px 8px;font-family:monospace;font-size:.8rem}.theme-color-picker{border:1px solid var(--c-border);border-radius:var(--r-md);background:var(--c-surface-elevated);margin-top:10px;padding:12px}.theme-color-picker-toolbar{justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.theme-color-picker-toolbar label{color:var(--c-text-secondary);align-items:center;gap:8px;font-size:.75rem;display:flex}.theme-color-picker-toolbar select{padding:4px 8px}.theme-color-picker .react-colorful{gap:12px;width:100%;height:190px}.theme-color-picker .react-colorful__saturation{border-bottom:none;border-radius:8px}.theme-color-picker .react-colorful__hue{border-radius:8px;flex-shrink:0;height:16px}.theme-color-picker .react-colorful__pointer{width:22px;height:22px}.theme-color-picker .react-colorful__interactive:focus-visible{outline:2px solid var(--c-primary);outline-offset:3px}.theme-color-picker p{color:var(--c-text-secondary);margin:12px 0 0;font-size:.72rem;line-height:1.5}.theme-color-field .theme-alpha{align-items:center;gap:8px;margin-top:8px;font-size:.72rem;display:flex}.theme-alpha input{flex:1;width:100%;min-width:0}.theme-alpha output{text-align:right;min-width:36px}.theme-color-error{color:var(--c-error);font-size:.75rem}.theme-editor input[aria-invalid=true]{border-color:var(--c-error)}.theme-preview-area{min-width:0}.theme-preview-area h3{margin:10px 0;font-size:.85rem}.theme-preview{background:var(--c-bg);color:var(--c-text);border-radius:var(--r-md);box-shadow:var(--shadow-sm);padding:16px}.theme-preview h4{color:var(--c-primary);margin:0 0 8px}.theme-preview p{margin:0 0 12px;font-size:.78rem}.theme-preview-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-sm);flex-direction:column;gap:10px;padding:12px;font-size:.8rem;display:flex}.theme-preview-secondary{color:var(--c-text-secondary)}.theme-preview-muted{color:var(--c-text-muted)}.theme-preview label{align-items:center;gap:10px;display:flex}.theme-preview input{width:60px;min-width:0;color:var(--c-text);background:var(--c-surface-elevated);border-color:var(--c-border);padding:5px}.theme-preview-actions{flex-wrap:wrap;gap:8px;display:flex}.theme-preview-actions>span{background:var(--c-primary);color:var(--c-action-text);border-radius:var(--r-sm);padding:8px}.theme-preview-actions>.theme-preview-hover{background:var(--c-primary-hover)}.theme-preview-states{flex-wrap:wrap;gap:6px;display:flex}.theme-preview-states span{border-radius:4px;padding:5px}.theme-preview-focus{background:var(--c-surface-elevated);border:2px solid var(--c-border-active);outline:2px solid var(--c-primary);outline-offset:2px;padding:8px}.theme-contrast{margin-top:16px;font-size:.75rem}.theme-contrast summary{cursor:pointer;font-weight:600}.theme-contrast p{color:var(--c-text-secondary);line-height:1.5}.theme-contrast ul{padding-left:18px;line-height:1.6}.theme-editor-footer{border-top:1px solid var(--c-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;display:flex}.theme-editor-footer>span{color:var(--c-text-secondary);font-size:.72rem}.theme-editor-footer>div{gap:8px;margin-left:auto;display:flex}.theme-editor-footer p{width:100%;color:var(--c-error);margin:0;font-size:.8rem}.theme-editor-footer .theme-save{background:var(--c-primary);color:var(--c-action-text,var(--c-text-inverse));border-color:var(--c-primary)}@media (width<=700px){.theme-editor .modal-content--compact{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.theme-editor-layout{grid-template-columns:minmax(0,1fr);max-height:55dvh;padding:0 12px 16px}.theme-base-controls{padding:12px}.theme-editor-intro{padding:0 12px 12px}.theme-editor-footer{padding:12px}.theme-editor button,.theme-editor input,.theme-editor select{min-height:44px}.theme-preview-area{grid-row:1}.theme-contrast{margin-bottom:12px}}.abilities-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:12px;display:grid}.ability-card{background:var(--c-surface-elevated);border:1px solid var(--c-border);border-radius:var(--r-md);min-width:0;transition:border-color var(--t-fast);flex-direction:column;gap:12px;padding:14px;display:flex;position:relative}.ability-card:hover{border-color:var(--c-border-active)}.ability-heading{align-items:center;gap:8px;min-width:0;min-height:28px;display:flex}.ability-heading-title{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.ability-heading-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.ability-abbr{color:var(--c-primary);font:800 .75rem var(--f-heading);letter-spacing:.08em;flex-shrink:0}.ability-name{color:var(--c-text);overflow-wrap:anywhere;font-size:.85rem;font-weight:600;line-height:1.4}.ability-score-row{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.ability-score-field,.ability-check-field{flex-direction:column;gap:5px;min-width:0;display:flex}.ability-score-field{flex:1;min-width:112px}.ability-field-label{color:var(--c-text-secondary);font-size:.7rem}.ability-score-field>.number-input-wrapper{width:100%;max-width:132px;height:44px}.ability-card .ability-input{width:100%;min-width:0;font:700 1.1rem var(--f-heading);text-align:center}.ability-check-field{flex:1;align-items:flex-end}.ability-check-actions{justify-content:flex-end;align-items:center;gap:4px;width:100%;min-height:44px;display:flex}.ability-check-expression{flex-wrap:wrap;place-content:center flex-end;align-items:center;gap:0 5px;min-width:0;min-height:44px;display:flex}.ability-check-adjustments{color:var(--c-primary);white-space:nowrap;font-size:.75rem;line-height:16px}.ability-check-value{font:700 1.1rem var(--f-heading);color:var(--c-text);white-space:nowrap}.ability-card .roll-button{flex-shrink:0}.ability-card .ability-value{color:var(--c-text-muted);align-items:center;min-height:44px;font-size:1.1rem;display:flex}.ability-card.absent .ability-heading-title,.ability-card.absent .ability-score-row{opacity:.5}.ability-toggle{border-radius:var(--r-sm);width:28px;height:28px;color:var(--c-text-muted);cursor:pointer;background:0 0;border:0;place-items:center;font-size:.75rem;display:grid}.ability-toggle:hover,.ability-toggle:focus-visible{background:var(--c-bg);color:var(--c-text)}.ability-heading-actions .trait-control{width:auto}@media (width<=1200px){.abilities-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=768px){.ability-heading{min-height:44px}.ability-toggle{width:44px;height:44px}.ability-heading-actions .trait-control__add{min-width:44px;min-height:44px}}@media (width<=620px){.abilities-grid{grid-template-columns:minmax(0,1fr);gap:8px}.ability-card{padding:12px}.ability-score-field>.number-input-wrapper{max-width:160px}}@media (width<=360px){.ability-score-row{gap:4px}.ability-check-actions{gap:2px}}.portrait-frame{border-radius:var(--r-lg);background:linear-gradient(135deg,var(--c-primary-muted),var(--c-surface-elevated));border:2px solid var(--c-border);width:64px;height:64px;color:var(--c-primary);cursor:pointer;transition:border-color var(--t-fast),box-shadow var(--t-fast);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex;overflow:hidden}.portrait-frame:hover{border-color:var(--c-primary);box-shadow:0 0 16px rgba(var(--c-primary-rgb),.3)}@media (width<=768px){.portrait-frame{width:80px;height:80px}}.portrait-avatar-wrap{--portrait-width:160px;flex-direction:column;flex-shrink:0;align-items:center;gap:4px;display:flex;position:relative}.portrait-frame img{object-fit:contain;width:100%;height:100%;display:block}.portrait-local-label{color:var(--c-text-muted);font-size:.65rem}.portrait-avatar-wrap--filled,.portrait-size-probe{width:var(--portrait-width);height:calc(var(--portrait-width) * 4 / 3)}.portrait-size-probe{visibility:hidden;pointer-events:none;position:absolute;top:0;left:0}.portrait-avatar-wrap--filled{align-self:start}.portrait-avatar-wrap--filled>.portrait-frame{width:100%;height:100%;position:absolute;inset:0}.portrait-avatar-wrap--filled .portrait-local-label{border-radius:var(--r-sm);background:var(--c-surface);color:var(--c-text-secondary);pointer-events:none;padding:3px 6px;position:absolute;bottom:6px;left:6px}@media (width<=768px){.portrait-avatar-wrap{--portrait-width:120px}}.portrait-dialog .modal-content--compact{width:min(620px,100vw - 24px);max-width:620px;max-height:90dvh}.portrait-editor{gap:var(--s-md);flex-direction:column;display:flex}.portrait-modes{gap:var(--s-sm);display:flex}.portrait-modes button{border:1px solid var(--c-border);border-radius:var(--r-md);background:var(--c-surface-elevated);min-height:44px;color:var(--c-text);cursor:pointer;flex:1;justify-content:center;align-items:center;gap:8px;padding:8px;display:flex}.portrait-modes button[aria-pressed=true]{border-color:var(--c-primary);background:var(--c-primary-muted)}.portrait-notice{border:1px solid var(--c-border);border-left:3px solid var(--c-primary);border-radius:var(--r-sm);background:var(--c-surface-elevated);color:var(--c-text-secondary);margin:0;padding:12px;font-size:.85rem;line-height:1.5}.portrait-hint{color:var(--c-text-secondary);margin:0;font-size:.8rem;line-height:1.45}.portrait-address,.portrait-file-label{color:var(--c-text);flex-direction:column;gap:8px;font-size:.85rem;display:flex}.portrait-address input{background:var(--c-surface-elevated);border:1px solid var(--c-border);border-radius:var(--r-sm);width:100%;min-height:44px;color:var(--c-text);padding:10px}.portrait-file-label{border:1px solid var(--c-border);border-radius:var(--r-md);background:var(--c-surface-elevated);cursor:pointer;min-height:44px;padding:12px;position:relative}.portrait-file-label:hover,.portrait-file-label:focus-within{border-color:var(--c-primary)}.portrait-file-label input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.portrait-frame.portrait-preview{width:min(var(--portrait-preview-width),100%,calc(50dvh * var(--portrait-preview-ratio)));height:auto;aspect-ratio:var(--portrait-preview-ratio);cursor:zoom-in;margin-inline:auto}.portrait-frame.portrait-preview--expanded{width:min(360px,100%,calc(55dvh * var(--portrait-preview-ratio)));cursor:zoom-out}.portrait-error{color:var(--c-error);margin:0;font-size:.85rem;line-height:1.45}.portrait-actions{justify-content:flex-end;gap:var(--s-sm);background:var(--c-surface);flex-wrap:wrap;padding:8px 0;display:flex;position:sticky;bottom:0}.portrait-actions .btn{min-height:44px}.portrait-editor button:focus-visible,.portrait-avatar-wrap button:focus-visible{outline:2px solid var(--c-primary);outline-offset:3px}@media (width<=480px){.portrait-modes{flex-direction:column}.portrait-actions .btn{flex:1}.portrait-dialog .modal-body{padding:var(--s-md)}}.portrait-fit-options{border:0;min-width:0;margin:0;padding:0}.portrait-fit-options legend{color:var(--c-text);margin-bottom:8px;padding:0;font-size:.85rem}.portrait-fit-buttons{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px;display:grid}.portrait-fit-buttons label{border:1px solid var(--c-border);border-radius:var(--r-sm);background:var(--c-surface-elevated);min-height:44px;color:var(--c-text);cursor:pointer;align-items:center;gap:6px;padding:10px 8px;font-size:.8rem;display:flex}.portrait-fit-buttons label:has(input:checked){border-color:var(--c-primary);background:var(--c-primary-muted)}.portrait-fit-buttons input{accent-color:var(--c-primary);flex-shrink:0;margin:0}.portrait-fit-options:disabled label{opacity:.6;cursor:default}.portrait-fit-buttons label:focus-within{outline:2px solid var(--c-primary);outline-offset:2px}@media (width<=480px){.portrait-fit-buttons{grid-template-columns:1fr}}.resource-power{border-top:1px solid var(--c-border);min-width:0;padding-top:var(--s-xs);font-size:.82rem}.resource-power__header{justify-content:space-between;align-items:center;gap:var(--s-xs);display:flex}.resource-power__actions{flex-shrink:0;display:flex}.resource-power button{font:inherit;cursor:pointer;border-radius:var(--r-sm);color:var(--c-text-secondary);text-align:left;overflow-wrap:anywhere;background:0 0;border:0;align-items:center;gap:4px;max-width:100%;min-height:32px;padding:4px 6px;display:inline-flex}.resource-power button:hover{color:var(--c-primary);background:var(--c-primary-muted)}.resource-power button:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}.resource-power .resource-power__name{color:var(--c-text);flex-wrap:wrap;min-width:0;font-weight:600}.resource-power__name svg{flex-shrink:0}.resource-power .resource-power__edit{flex-shrink:0;justify-content:center;min-width:36px;min-height:36px}.resource-power__component{flex-wrap:wrap;align-items:center;gap:4px;margin:4px 0;display:flex}.resource-power .resource-power__effect{color:var(--c-primary)}.resource-power .resource-power__modifier{background:var(--c-surface-elevated);border:1px solid var(--c-border);min-width:0;font-size:.75rem}.resource-power__alternate{border-left:2px solid var(--c-border);padding-left:var(--s-sm);margin-top:var(--s-xs)}@media (width<=768px){.resource-power button{min-height:44px}.resource-power .resource-power__edit{min-width:44px;min-height:44px}}.campaign-panel{border:1px solid var(--c-border);border-left:3px solid var(--c-accent);border-radius:var(--r-lg);background:var(--c-surface);min-width:0;overflow:hidden}.campaign-header{background:var(--c-surface-elevated);align-items:center;gap:12px;padding:12px 16px;display:flex}.campaign-toggle{min-width:0;color:var(--c-text);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:8px;font-weight:600;display:flex}.campaign-toggle>span:first-of-type{overflow-wrap:anywhere;flex:1;min-width:0}.campaign-toggle>svg{flex-shrink:0}.campaign-badge{border:1px solid var(--c-border);border-radius:var(--r-full);color:var(--c-accent);flex-shrink:0;padding:2px 8px;font-size:.78rem}.campaign-state{color:var(--c-text-muted);font-size:.7rem}.campaign-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:14px 16px;display:grid}.campaign-stat{font-variant-numeric:tabular-nums;gap:4px;display:grid}.campaign-stat>span{color:var(--c-text-secondary);font-size:.72rem}.campaign-stat>strong{color:var(--c-primary);overflow-wrap:anywhere;font-size:1rem}.campaign-negative,.campaign-stat.campaign-negative>strong{color:var(--c-error)}.campaign-body{gap:14px;padding:0 16px 16px;display:grid}.campaign-hint{color:var(--c-text-secondary);margin:0;font-size:.78rem;line-height:1.5}.campaign-panel>.campaign-hint{padding:0 16px 14px}.campaign-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.campaign-toolbar button{justify-content:center;align-items:center;gap:6px;display:flex}.campaign-panel .btn{min-height:36px;font:inherit;border:1px solid var(--c-border);border-radius:var(--r-sm);cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:.8rem;font-weight:600;display:inline-flex}.campaign-panel .btn-primary{background:var(--c-primary);color:var(--c-action-text,var(--c-text-inverse));border-color:var(--c-primary)}.campaign-panel .btn-secondary{background:var(--c-surface-elevated);color:var(--c-text)}.campaign-panel .btn:hover{border-color:var(--c-primary-hover)}.campaign-panel .btn:disabled{opacity:.5;cursor:not-allowed}.campaign-form{border:1px solid var(--c-border-active);border-radius:var(--r-md);background:var(--c-bg);gap:12px;padding:16px;display:grid}.campaign-form-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.campaign-panel label{min-width:0;color:var(--c-text-secondary);gap:6px;font-size:.75rem;display:grid}.campaign-panel input,.campaign-panel select,.campaign-panel textarea{border:1px solid var(--c-border);background:var(--c-surface);width:100%;min-width:0;color:var(--c-text);border-radius:var(--r-sm);font:inherit;padding:8px 10px}.campaign-panel textarea{resize:vertical}.campaign-panel :is(input,select,textarea,button,summary):focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}.campaign-preview{margin:0;font-size:.8rem;line-height:1.5}.campaign-error{color:var(--c-error);margin:0;font-size:.8rem}.campaign-log{overscroll-behavior:contain;gap:8px;max-height:420px;padding:2px;display:grid;overflow-y:auto}.campaign-entry{border:1px solid var(--c-border);border-radius:var(--r-md);gap:8px;min-width:0;padding:12px;display:grid}.campaign-entry-heading{overflow-wrap:anywhere;justify-content:space-between;gap:12px;font-size:.78rem;display:flex}.campaign-entry-heading>strong{flex-shrink:0}.campaign-entry-note{min-width:0;font-size:.8rem}.campaign-entry-note summary{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;padding:4px 0;overflow:hidden}.campaign-entry-note[open] summary{white-space:normal;overflow-wrap:anywhere}.campaign-entry-note p{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0;line-height:1.55}.campaign-entry-footer{color:var(--c-text-secondary);justify-content:space-between;align-items:center;gap:12px;font-size:.7rem;display:flex}.campaign-entry-actions{gap:4px;display:flex}.campaign-entry-actions button{background:var(--c-surface-elevated);min-width:32px;min-height:32px;color:var(--c-text-secondary);border:1px solid var(--c-border);border-radius:var(--r-sm);cursor:pointer;place-items:center;display:grid}.campaign-entry-actions button:hover{border-color:var(--c-primary);color:var(--c-primary)}.campaign-options{border-top:1px solid var(--c-border);padding-top:12px}.campaign-options>summary{cursor:pointer;padding:6px 0;font-size:.8rem}.campaign-options>p{margin:10px 0}.campaign-options form{gap:12px;max-width:380px;display:grid}.campaign-history-controls{grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:12px;display:grid}.campaign-backup{margin-top:12px}@media (width<=480px){.campaign-history-controls{grid-template-columns:1fr}}@media (width<=768px){.campaign-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.campaign-panel :is(input,select,button){min-height:44px}.campaign-entry-actions button{min-width:44px}}@media (width<=480px){.campaign-header{flex-wrap:wrap;padding:10px 12px}.campaign-toggle{flex-basis:100%}.campaign-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:12px}.campaign-body{padding:0 12px 12px}.campaign-form-grid{grid-template-columns:1fr}.campaign-form{padding:12px}.campaign-entry-heading{flex-wrap:wrap}}.campaign-migration-list{gap:16px;margin:20px 0;display:grid}.campaign-migration fieldset{border:1px solid var(--c-border);border-radius:var(--r-md);min-width:0;padding:12px 16px}.campaign-migration legend{overflow-wrap:anywhere;padding:0 6px;font-weight:600}.campaign-migration-fields{grid-template-columns:1fr 1fr;gap:16px;display:grid}.campaign-migration label{gap:6px;font-size:.8rem;display:grid}.campaign-migration input{background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--r-sm);width:100%;min-width:0;color:var(--c-text);font:inherit;padding:8px 10px}.campaign-migration :is(input,button):focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}.campaign-migration-hint{color:var(--c-text-secondary)}.campaign-migration-actions{flex-wrap:wrap;justify-content:flex-end;gap:12px;margin-top:20px;display:flex}.campaign-error{color:var(--c-error)}@media (width<=420px){.campaign-migration-fields{grid-template-columns:1fr;gap:12px}.campaign-migration-actions button{width:100%;min-height:44px}}.campaign-migration .btn{min-height:44px;font:inherit;border:1px solid var(--c-border);border-radius:var(--r-sm);cursor:pointer;justify-content:center;align-items:center;padding:10px 16px;font-size:.85rem;font-weight:600;display:inline-flex}.campaign-migration .btn-primary{background:var(--c-primary);color:var(--c-action-text,var(--c-text-inverse));border-color:var(--c-primary)}.campaign-migration .btn-secondary{background:var(--c-surface-elevated);color:var(--c-text)}.campaign-migration .btn:disabled{opacity:.5;cursor:not-allowed}.dice-toggle{border:1px solid var(--c-border);background:var(--c-surface-elevated);width:44px;height:72px;color:var(--c-primary);cursor:pointer;z-index:110;border-right:0;border-radius:50% 0 0 50%;place-items:center;padding-left:6px;display:grid;position:fixed;top:50%;right:0;transform:translateY(-50%)}.dice-toggle:hover{background:var(--c-surface)}.dice-toggle[hidden]{display:none}.dice-toggle:focus-visible,.dice-panel button:focus-visible,.dice-panel input:focus-visible,.roll-button:focus-visible{outline:2px solid var(--c-primary);outline-offset:3px}.dice-panel{z-index:150;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);width:350px;max-width:calc(100vw - 74px);min-height:0;max-height:720px;box-shadow:var(--shadow-xl);color:var(--c-text);visibility:hidden;pointer-events:none;flex-direction:column;transition:transform .24s cubic-bezier(.2,.8,.2,1),visibility 0s .24s;display:flex;position:fixed;top:120px;bottom:16px;right:54px;overflow:hidden;transform:translate(calc(100% + 74px))}.dice-panel[data-open=true]{visibility:visible;pointer-events:auto;transition-delay:0s;transform:translate(0)}.dice-panel-header,.dice-history-header{flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;display:flex}.dice-panel-header{border-bottom:1px solid var(--c-border)}.dice-panel-header:focus-visible{outline:2px solid var(--c-primary);outline-offset:-3px}.dice-panel[data-dragging=true]{transition:none}.dice-panel-header h2{align-items:center;gap:8px;margin:0;font-size:1rem;display:flex}.dice-panel button,.dice-notice button{font:inherit;cursor:pointer;color:var(--c-text-secondary);border-radius:var(--r-sm);background:0 0;border:0;min-height:36px}.dice-panel-header button,.dice-notice button{place-items:center;min-width:36px;display:grid}.dice-panel button:disabled{opacity:.4;cursor:default}.dice-manual{border-bottom:1px solid var(--c-border);padding:12px 16px}.dice-manual>label{color:var(--c-text-secondary);margin-bottom:6px;font-size:.76rem;display:block}.dice-manual-controls{align-items:center;gap:8px;display:flex}.dice-manual-controls>span{white-space:nowrap;font-weight:700}.dice-panel input{width:80px;min-width:0;min-height:36px;color:var(--c-text);border:1px solid var(--c-border);background:var(--c-bg);border-radius:var(--r-sm);font:inherit;padding:6px 8px}.dice-manual-controls input{flex:1}.dice-manual-controls button{background:var(--c-primary);color:var(--c-action-text,var(--c-bg));justify-content:center;align-items:center;gap:6px;padding:6px 12px;font-weight:700;display:flex}.dice-history-header{padding-top:8px;padding-bottom:8px;font-size:.8rem}.dice-history-header small{font-variant-numeric:tabular-nums;color:var(--c-text-muted)}.dice-history-header button{font-size:.75rem}.dice-history{overscroll-behavior:contain;flex:1;min-height:0;padding:0 12px 12px;overflow:auto}.dice-empty{color:var(--c-text-muted);text-align:center;padding:12px;font-size:.84rem}.dice-result{border:1px solid var(--c-border);background:var(--c-surface-elevated);border-radius:var(--r-sm);margin-bottom:8px;padding:12px}.dice-result-source{overflow-wrap:anywhere;flex-direction:column;gap:3px;margin-bottom:8px;display:flex}.dice-result-source strong{font-size:.84rem}.dice-result-source span{color:var(--c-text-secondary);font-size:.7rem}.dice-result-formula{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;color:var(--c-primary);font-size:1.08rem;font-weight:700}.dice-result-breakdown{color:var(--c-text-secondary);overflow-wrap:anywhere;margin-top:8px;font-size:.72rem}.dice-result-breakdown summary{cursor:pointer}.dice-result-breakdown ul{margin:6px 0 0;padding-left:18px}.dice-panel-footer{border-top:1px solid var(--c-border);flex-shrink:0;padding:12px 16px}.dice-panel-footer label{justify-content:space-between;align-items:center;gap:12px;font-size:.78rem;display:flex}.dice-panel-footer p{color:var(--c-text-muted);margin:8px 0 0;font-size:.7rem}.dice-history-preference{justify-content:space-between;align-items:center;gap:12px;margin-top:6px;font-size:.78rem;display:flex}.dice-panel .dice-history-switch{flex-shrink:0;place-items:center;min-width:44px;padding:0;display:grid}.dice-history-switch>span{background:var(--c-border);border-radius:12px;width:38px;height:22px;transition:background .15s;display:block;position:relative}.dice-history-switch>span:after{content:"";background:var(--c-text);border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:3px;left:3px}.dice-history-switch[aria-checked=true]>span{background:var(--c-primary)}.dice-history-switch[aria-checked=true]>span:after{background:var(--c-action-text,var(--c-bg));transform:translate(16px)}.dice-panel input[aria-invalid=true]{border-color:var(--c-error)}.dice-notice{z-index:140;background:var(--c-surface-elevated);border:1px solid var(--c-border);border-radius:var(--r-md);max-width:min(380px,100vw - 88px);box-shadow:var(--shadow-xl);align-items:center;gap:12px;padding:12px;display:flex;position:fixed;bottom:20px;right:64px}.dice-notice>div{overflow-wrap:anywhere;flex-direction:column;gap:4px;display:flex}.dice-notice strong{color:var(--c-text-secondary);font-size:.75rem}.dice-notice span{color:var(--c-primary);font-size:1rem;font-weight:700}.dice-sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sheet-item-actions,.sheet-check-result{flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;display:flex}.sheet-roll-slot{flex-shrink:0;justify-content:center;align-items:center;width:32px;min-height:32px;display:inline-flex}.roll-button{width:32px;height:32px;color:var(--c-primary);background:var(--c-primary-muted);border:1px solid var(--c-border);border-radius:var(--r-sm);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;padding:4px;display:inline-flex}.roll-button:hover{background:var(--c-primary-muted);border-color:var(--c-border)}.roll-button:disabled{opacity:.4;cursor:default}.roll-routine-icon{font-size:.8rem;font-weight:800}.roll-button--label{text-align:left;white-space:normal;width:100%;height:auto;min-height:32px;font:inherit;justify-content:flex-start;gap:8px;font-size:.78rem}.roll-choices-list{width:300px;max-width:calc(100vw - 36px);height:max-content;max-height:calc(100dvh - 36px);color:var(--c-text);background:var(--c-surface-elevated);border:1px solid var(--c-border);border-radius:var(--r-sm);box-shadow:var(--shadow-xl);margin:auto;padding:12px;position:fixed;inset:0;overflow:auto}.roll-choices-list:popover-open{flex-direction:column;gap:8px;display:flex}.roll-choices-list>strong{overflow-wrap:anywhere;font-size:.8rem}.roll-choices-list::backdrop{background:rgba(var(--c-overlay-rgb,0, 0, 0), calc(var(--c-overlay-alpha,.6) * .25))}@media (width<=768px){.dice-toggle{top:auto;bottom:calc(18px + env(safe-area-inset-bottom));border-right:1px solid var(--c-border);width:48px;height:48px;box-shadow:var(--shadow-lg);border-radius:50%;padding:0;right:16px;transform:none}.dice-panel{border-radius:var(--r-lg) var(--r-lg) 0 0;width:100%;max-width:100%;height:70dvh;max-height:650px;padding-bottom:env(safe-area-inset-bottom);top:auto;bottom:0;right:0;transform:translateY(calc(100% + 24px))}.dice-panel[data-open=true]{transform:translateY(0)}.dice-panel button,.dice-panel input,.roll-button{min-height:44px}.roll-button{width:44px;height:44px}.sheet-roll-slot{width:44px;min-height:44px}.roll-button--label{width:100%;height:auto;min-height:44px}.dice-notice{bottom:calc(82px + env(safe-area-inset-bottom));max-width:calc(100vw - 32px);right:16px}.dice-history{padding-bottom:8px}}@media (height<=500px) and (width>=769px){.dice-panel{top:16px}}@media (height<=500px) and (width<=768px){.dice-panel{height:calc(100dvh - 12px);max-height:100dvh}.dice-panel-header,.dice-manual,.dice-panel-footer{padding:8px 12px}}@media (prefers-reduced-motion:reduce){.dice-panel,.dice-history-switch>span,.dice-history-switch>span:after{transition:none}}@media (width>=769px){.dice-panel-header{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.dice-panel[data-dragging=true] .dice-panel-header{cursor:grabbing}.dice-panel[data-detached=true]{left:var(--dice-left);top:var(--dice-top);height:min(720px,100dvh - 136px);bottom:auto;right:auto}.dice-panel[data-detached=true][data-open=false]{transform:translateX(calc(100vw - var(--dice-left) + 24px))}}@media (width>=769px) and (height<=500px){.dice-panel[data-detached=true]{height:calc(100dvh - 32px)}}:root{--f-body:"Inter", system-ui, -apple-system, sans-serif;--f-heading:"Outfit", "Inter", system-ui, sans-serif;--s-xs:4px;--s-sm:8px;--s-md:16px;--s-lg:24px;--s-xl:32px;--s-2xl:48px;--s-3xl:64px;--r-sm:6px;--r-md:10px;--r-lg:16px;--r-xl:24px;--r-full:9999px;--shadow-sm:0 1px 3px rgba(var(--c-shadow-rgb,0, 0, 0), calc(var(--c-shadow-alpha,.2) * .6));--shadow-md:0 4px 12px rgba(var(--c-shadow-rgb,0, 0, 0), calc(var(--c-shadow-alpha,.2) * .75));--shadow-lg:0 8px 32px rgba(var(--c-shadow-rgb,0, 0, 0), calc(var(--c-shadow-alpha,.2) * 1));--shadow-glow:0 0 20px rgba(var(--c-primary-rgb), .3);--t-fast:.15s ease;--t-normal:.25s ease;--t-slow:.4s cubic-bezier(.4, 0, .2, 1);--bp-mobile:320px;--bp-mobile-lg:480px;--bp-tablet:768px;--bp-tablet-lg:1024px;--bp-desktop:1280px;--touch-target-min:44px;--touch-target-comfortable:48px;--touch-spacing:8px;--container-padding:var(--s-lg)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--f-body);background-color:var(--c-bg);color:var(--c-text);min-height:100vh;transition:background-color var(--t-normal), color var(--t-normal);line-height:1.6}.app-input,.app-select,.app-textarea{background:var(--c-surface-elevated);border:1px solid var(--c-border);border-radius:var(--r-sm);color:var(--c-text);font:inherit;padding:var(--s-sm) var(--s-md)}.app-select{cursor:pointer}.app-textarea{resize:vertical;line-height:1.5}.app-input:focus,.app-select:focus,.app-textarea:focus{border-color:var(--c-primary);box-shadow:0 0 0 2px var(--c-primary-muted);outline:none}.app-checkbox,.app-radio{appearance:none;background:var(--c-surface-elevated);border:1px solid var(--c-border);cursor:pointer;height:18px;transition:background var(--t-fast), border-color var(--t-fast), box-shadow var(--t-fast);flex:none;place-content:center;width:18px;margin:0;display:inline-grid}.app-checkbox{border-radius:var(--r-sm)}.app-radio{border-radius:50%}.app-checkbox:before{background:var(--c-text-inverse);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%);content:"";height:11px;transition:transform var(--t-fast);width:11px;transform:scale(0)}.app-radio:before{background:var(--c-text-inverse);content:"";height:8px;transition:transform var(--t-fast);border-radius:50%;width:8px;transform:scale(0)}.app-checkbox:checked,.app-radio:checked{background:var(--c-primary);border-color:var(--c-primary)}.app-checkbox:checked:before,.app-radio:checked:before{transform:scale(1)}.app-checkbox:focus-visible,.app-radio:focus-visible{box-shadow:0 0 0 2px var(--c-primary-muted);outline:2px solid var(--c-primary);outline-offset:2px}.app-checkbox:disabled,.app-radio:disabled{cursor:not-allowed;opacity:.5}h1,h2,h3,h4,h5,h6{font-family:var(--f-heading);font-weight:700;line-height:1.2}.glass{background:var(--c-surface-glass);-webkit-backdrop-filter:blur(16px);border:1px solid var(--c-border)}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:var(--s-lg);transition:border-color var(--t-fast), box-shadow var(--t-fast)}.card:hover{border-color:var(--c-border-active);box-shadow:var(--shadow-glow)}.app-root{flex-direction:column;min-height:100vh;display:flex}.app-main{padding:var(--s-lg);flex:1;width:100%;max-width:1200px;margin:0 auto}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--c-bg)}::-webkit-scrollbar-thumb{background:var(--c-text-muted);border-radius:var(--r-full)}::-webkit-scrollbar-thumb:hover{background:var(--c-text-secondary)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 8px rgba(var(--c-primary-rgb), .3)}50%{box-shadow:0 0 20px rgba(var(--c-primary-rgb), .6)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.panel{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:var(--s-lg);transition:border-color var(--t-fast), box-shadow var(--t-fast);animation:.35s backwards fadeIn}.panel:nth-child(2){animation-delay:50ms}.panel:nth-child(3){animation-delay:.1s}.panel:nth-child(4){animation-delay:.15s}.panel:nth-child(5){animation-delay:.2s}.panel:nth-child(6){animation-delay:.25s}.panel:nth-child(7){animation-delay:.3s}.panel:hover{border-color:rgba(var(--c-primary-rgb), .2);box-shadow:0 0 24px rgba(var(--c-primary-rgb), .06)}.panel-header{margin-bottom:var(--s-md);padding-bottom:var(--s-sm);border-bottom:1px solid var(--c-border);justify-content:space-between;align-items:center;display:flex}.panel-title{font-family:var(--f-heading);color:var(--c-text);align-items:center;gap:var(--s-sm);font-size:1rem;font-weight:700;display:flex}.panel-title:before{content:"";background:var(--c-primary);border-radius:var(--r-full);width:3px;height:1em;display:inline-block}.panel-cost{font-family:var(--f-heading);color:var(--c-primary);font-variant-numeric:tabular-nums;padding:var(--s-xs) var(--s-md);background:var(--c-primary-muted);border-radius:var(--r-full);font-size:.95rem;font-weight:800}.pp-summary-footer{gap:var(--s-sm);padding:var(--s-md) var(--s-lg);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));animation:.4s .35s backwards fadeIn;display:grid}.pp-summary-item{flex-direction:column;align-items:center;gap:2px;display:flex}.pp-summary-label{text-transform:uppercase;letter-spacing:.08em;color:var(--c-text-muted);font-size:.65rem;font-weight:600}.pp-summary-value{font-family:var(--f-heading);color:var(--c-text);font-variant-numeric:tabular-nums;font-size:1.1rem;font-weight:800}.pp-summary-value--primary{color:var(--c-primary)}.pp-summary-value--accent{color:var(--c-accent)}.pp-summary-value--error{color:var(--c-error)}.pp-summary-value--success{color:var(--c-success)}.pp-progress-bar{background:var(--c-surface-elevated);border-radius:var(--r-full);width:100%;height:6px;margin-top:var(--s-xs);overflow:hidden}.pp-progress-fill{background:linear-gradient(90deg, var(--c-primary), var(--c-accent));border-radius:var(--r-full);height:100%;transition:width var(--t-normal)}.pp-progress-fill[data-over=true]{background:linear-gradient(90deg, var(--c-error), var(--c-warning))}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=768px){:root{--container-padding:var(--s-md);--s-xs:6px;--s-sm:10px;--s-md:18px;--s-lg:28px}html{font-size:16px}body{line-height:1.7}.mobile-stack{flex-direction:column!important}.mobile-full-width{width:100%!important;min-width:0!important}.mobile-hide{display:none!important}input,select,textarea{font-size:16px!important}}.build-descriptors{margin-bottom:var(--s-sm)}.build-descriptor-tags{gap:var(--s-xs);margin-top:var(--s-sm);flex-wrap:wrap;display:flex}.build-descriptor-tag{align-items:center;gap:var(--s-xs);padding:var(--s-xs) var(--s-sm);background:var(--c-primary-muted);border:1px solid var(--c-border);border-radius:var(--r-sm);color:var(--c-text);transition:all var(--t-fast);font-size:.875rem;display:inline-flex}.build-descriptor-tag:hover,.build-descriptor-tag--selected{background:var(--c-surface-elevated);border-color:var(--c-primary)}.build-descriptor-tag--selected{box-shadow:0 0 0 1px var(--c-primary-muted)}.build-descriptor-tag-select{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.build-descriptor-tag-select:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}.build-descriptor-tag-remove{color:var(--c-text-secondary);cursor:pointer;border-radius:var(--r-sm);transition:all var(--t-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:2px;display:flex}.build-descriptor-tag-remove:hover{background:var(--c-error);color:var(--c-text)}.build-descriptor-add{gap:var(--s-xs);flex:0 auto;display:flex}.build-descriptor-add .build-input{width:clamp(140px,20vw,220px)}.power-card-descriptors{gap:var(--s-xs);margin-top:var(--s-xs);flex-wrap:wrap;display:flex}.power-descriptor-tag{padding:2px var(--s-xs);background:var(--c-primary-muted);border:1px solid var(--c-border);border-radius:var(--r-sm);color:var(--c-text-secondary);font-size:.75rem;font-weight:500;display:inline-block}.variable-cost-selector{margin-top:.75rem}.cost-options{flex-direction:column;gap:.5rem;margin-top:.5rem;display:flex}.cost-option-radio{border:1px solid var(--c-border);border-radius:var(--r-sm);cursor:pointer;transition:background-color var(--t-fast);align-items:center;gap:.5rem;padding:.5rem;display:flex}.cost-option-radio:hover{background-color:var(--c-surface-elevated)}.cost-option-radio input[type=radio]{cursor:pointer}.cost-option-radio input[type=radio]:checked~.cost-option-label{color:var(--c-primary);font-weight:600}.cost-option-label{color:var(--c-text);transition:all var(--t-fast);flex:1;font-size:.875rem}.cost-option-cost{color:var(--c-accent);margin-left:auto;font-size:.875rem;font-weight:600}.variable-cost-warning{background:rgba(var(--c-warning-rgb,251, 191, 36), .1);border:1px solid var(--c-warning);border-radius:var(--r-sm);color:var(--c-warning);align-items:center;gap:.5rem;margin-top:.5rem;padding:.5rem;font-size:.875rem;display:flex}
