*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:var(--font-body)}body{padding:clamp(1rem,3vw,2.5rem);display:flex;justify-content:center}button,input,select{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--teal);outline-offset:2px}html:has(dialog[open]),html:has(dialog[open]) body,html[data-modal-open],html[data-modal-open] body{overflow:hidden}.device{width:100%;max-width:1180px;background:var(--paper-panel);border-radius:var(--radius-lg);border:1px solid var(--line);box-shadow:inset 0 1px #ffffff59,var(--shadow-panel);overflow:hidden}.bezel{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);background:var(--poke-red);color:var(--on-red);padding:var(--space-2) clamp(1.2rem,3vw,2.2rem) calc(var(--space-2) + 4px)}.bezel:after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--footer-bg)}.bezel:before{content:"";position:absolute;left:50%;bottom:2px;transform:translate(-50%,50%);width:18px;height:18px;border-radius:50%;background:#fff;border:4px solid var(--footer-bg);z-index:1}.bezel h1{font-family:var(--font-display);font-size:clamp(1.05rem,2.5vw,1.25rem);font-weight:700;margin:0;letter-spacing:-.01em;white-space:nowrap}.bezel h1 a{color:inherit;text-decoration:none}.bezel h1 a:hover{text-decoration:underline}.e-accent{color:var(--gold-soft)}.power-led{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--led-off);box-shadow:none;margin-right:.6em;vertical-align:2px;transition:background var(--transition-fast),box-shadow var(--transition-fast)}.power-led[data-status=ready]{background:var(--led-ready);box-shadow:0 0 6px var(--led-ready)}.power-led[data-status=sending]{background:var(--led-sending);box-shadow:0 0 6px var(--led-sending)}.power-led[data-status=receiving]{background:var(--led-online);box-shadow:0 0 6px var(--led-online)}.bezel-btn{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid rgba(255,248,239,.45);border-radius:50%;background:transparent;color:var(--on-red);cursor:pointer;touch-action:manipulation;transition:background var(--transition-fast)}.bezel-btn:hover{background:#fff8ef26}.bezel-btn svg{width:17px;height:17px}.bezel-btn--menu{width:auto;height:auto;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-2xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.bezel-menu{position:relative}.header-menu{position:absolute;top:calc(100% + 10px);right:0;z-index:50;min-width:180px;display:grid;gap:2px;padding:var(--space-2);background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-suggestions)}.header-menu[hidden]{display:none}.header-menu-item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-sm);background:transparent;text-align:left;font-size:var(--font-size-md);cursor:pointer}.header-menu-item:hover{background:var(--lcd)}.header-menu-item svg{flex:0 0 auto;width:16px;height:16px;color:var(--ink-soft)}.header-menu-item[aria-checked=true]{background:var(--teal-soft);font-weight:600}.header-menu-item[aria-checked=true] svg{color:var(--teal)}.header-menu-sep{height:1px;margin:var(--space-2) 0;background:var(--line)}.header-menu-label{margin:0 var(--space-3) var(--space-1);font-family:var(--font-mono);font-size:var(--font-size-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.header-menu [role=group]{display:grid;gap:2px}.layout{display:grid;grid-template-columns:minmax(240px,300px) 1fr;gap:var(--space-5);padding:var(--space-5) clamp(1.2rem,3vw,2.2rem)}@media(max-width:860px){.layout{grid-template-columns:1fr}.add-panel{position:static}}.panel h2{font-family:var(--font-display);font-size:var(--font-size-xl);margin:0 0 var(--space-1);letter-spacing:-.01em}.hint{margin:0 0 var(--space-4);font-size:var(--font-size-md);color:var(--ink-soft)}.add-panel,.empty-state,.add-pokemon-dialog-identity{background-image:repeating-linear-gradient(0deg,var(--lcd-grid) 0 1px,transparent 1px 4px),repeating-linear-gradient(90deg,var(--lcd-grid) 0 1px,transparent 1px 4px);box-shadow:var(--shadow-lcd)}.add-panel{background-color:var(--lcd);border:1px solid var(--lcd-line);border-radius:var(--radius-md);padding:var(--space-4);align-self:start;position:sticky;top:clamp(1rem,3vw,2.5rem)}.add-form{display:flex;gap:var(--space-3);flex-wrap:wrap}@media(max-width:420px){.add-form{flex-direction:column;align-items:stretch}}.status-line{min-height:1.2rem;margin:var(--space-3) 0 0;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--teal)}.legend{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px dashed var(--lcd-line)}.legend ul{margin:var(--space-3) 0 0;padding-left:1.1rem;font-size:var(--font-size-sm);color:var(--ink-soft);display:grid;gap:var(--space-2)}.picker{padding:var(--space-5) clamp(1.2rem,3vw,2.2rem)}.picker h2{font-family:var(--font-display);font-size:var(--font-size-xl);margin:0 0 var(--space-1)}.party-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4);margin:var(--space-4) 0}.picker-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.picker-import-hint{margin:var(--space-3) 0 0;max-width:480px}.party-card{display:flex;gap:var(--space-4);align-items:flex-start;text-align:left;background:var(--lcd);border:1px solid var(--lcd-line);border-radius:var(--radius-md);padding:var(--space-4);text-decoration:none;color:inherit;transition:box-shadow var(--transition-med),transform var(--transition-fast),border-color var(--transition-med)}.party-card:hover{box-shadow:var(--shadow-panel);transform:translateY(-1px);border-color:var(--cart-color, var(--lcd-line))}.party-card-cart{flex:0 0 auto;--cart-w: 44px;filter:drop-shadow(0 2px 3px rgba(27,31,28,.2))}.party-card-body{flex:1;min-width:0;display:grid;gap:var(--space-1)}.party-card-name-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}.party-card-name{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-lg);color:var(--ink);min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.party-card-name-row .game-name-label{flex:0 0 auto}.game-name-label{font-family:var(--font-mono);font-size:var(--font-size-2xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}.party-card-description{margin:var(--space-1) 0 0;font-size:var(--font-size-sm);color:var(--ink-soft);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.party-card-stats{display:flex;gap:var(--space-3);margin-top:var(--space-2);font-family:var(--font-mono);font-size:var(--font-size-2xs);letter-spacing:.04em;text-transform:uppercase;color:var(--teal)}.header-cart{display:flex;align-items:center;gap:var(--space-2);--cart-w: 28px}.game-version-row{display:flex;align-items:center;gap:var(--space-3)}.game-version-row .ds-field{flex:1}.game-version-row game-ball{flex:0 0 auto;--cart-w: 34px}.party-view-header{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:var(--space-3) var(--space-4);padding:var(--space-4) clamp(1.2rem,3vw,2.2rem) 0}.back-link{grid-row:1;align-self:center;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--teal);text-decoration:none}.back-link:hover{text-decoration:underline}#edit-party-btn{grid-column:3;grid-row:1}.party-identity{grid-column:1 / -1;grid-row:2}.party-identity-head{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.party-identity h2{font-family:var(--font-display);font-size:clamp(1.3rem,3vw,1.7rem);margin:0}.party-identity .hint{margin:var(--space-1) 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@media(min-width:640px){.back-link{grid-column:1;grid-row:1}.party-identity{grid-column:2;grid-row:1}}.empty-state{font-size:var(--font-size-lg);color:var(--ink-soft);background-color:var(--lcd);border:1px dashed var(--lcd-line);border-radius:var(--radius-md);padding:var(--space-5);text-align:center}.roster-toolbar{display:flex;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3)}.roster-toolbar #roster-search{flex:1 1 auto}@media(max-width:520px){.roster-toolbar{flex-direction:column;align-items:stretch}}.roster-filter-btn{display:inline-flex;align-items:center;gap:var(--space-2);flex:0 0 auto;padding:var(--space-3) var(--space-4);border:1px solid var(--lcd-line);border-radius:var(--radius-sm);background:var(--surface);font-family:var(--font-mono);font-size:var(--font-size-input);color:var(--ink);cursor:pointer;white-space:nowrap}.roster-filter-btn:hover{border-color:var(--teal)}.roster-filter-btn svg{flex:0 0 auto;width:16px;height:16px}.roster-filter-count{display:inline-block;padding:0 .4em;border-radius:var(--radius-pill);background:var(--teal);color:var(--on-teal);font-size:var(--font-size-2xs)}.roster-filter-dialog{width:min(360px,calc(100vw - 2.4rem))}.roster-filter-actions{flex-direction:column;align-items:stretch;gap:var(--space-2);margin-top:var(--space-2)}.roster-filter-actions .ds-btn{width:100%}.roster-filter-group{display:grid;gap:var(--space-2);border:none;padding:0;margin:0 0 var(--space-4)}.roster-filter-group legend{padding:0;font-family:var(--font-mono);font-size:var(--font-size-2xs);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.roster-filter-group label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-md);cursor:pointer}.roster-filter-range{display:flex;align-items:center;gap:var(--space-2);color:var(--ink-soft)}.roster-filter-range .ds-field{width:0;flex:1 1 0}.roster-filter-toggles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-2);margin-bottom:var(--space-4)}.roster-filter-toggle{justify-content:center}.pokerus-icon{width:22px;height:22px;flex:0 0 auto;display:inline-flex;color:var(--pokerus-purple)}.pokerus-icon svg{width:100%;height:100%}.roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-3)}@media(max-width:520px){.roster{grid-template-columns:1fr}}.roster-card{display:flex;align-items:center;gap:var(--space-2);background:var(--lcd);border:1px solid var(--lcd-line);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);transition:box-shadow var(--transition-med),transform var(--transition-fast)}.roster-card:hover{box-shadow:var(--shadow-panel);transform:translateY(-1px)}.roster-card--dragging{opacity:.6;box-shadow:var(--shadow-panel)}.roster-card--drop-target{outline:2px dashed var(--teal);outline-offset:2px}.roster-card-link{display:flex;align-items:center;gap:var(--space-3);min-width:0;flex:1 1 auto;text-decoration:none;color:inherit}.roster-card-handle{flex:0 0 auto;border:none;background:transparent;padding:var(--space-2);margin:calc(var(--space-2) * -1);font-size:var(--font-size-lg);line-height:1;color:var(--ink-soft);cursor:grab;touch-action:none}.roster-card-handle:hover{color:var(--ink)}.roster-card--dragging .roster-card-handle{cursor:grabbing}.roster-card-sprite{flex:0 0 auto;width:36px;height:36px;image-rendering:pixelated;background:var(--sprite-bg);border-radius:var(--radius-sm);object-fit:contain;box-sizing:border-box;border:2px solid transparent}.roster-card-body{min-width:0;flex:1 1 auto;display:grid;gap:.15rem}.roster-card-name{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-md);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-card-meta{display:inline-flex;align-items:center;gap:.35em;font-family:var(--font-mono);font-size:var(--font-size-2xs);color:var(--ink-soft);text-transform:capitalize}.roster-card-evbar{flex:1 1 100px;max-width:140px;min-width:84px}.roster-card-sprite--pokerus{border-color:var(--pokerus-purple);box-shadow:0 0 0 3px var(--pokerus-purple-soft)}.roster-card-sprite--trained{border-color:#caa53d;box-shadow:0 0 0 3px #caa53d59,0 0 8px #ffd7004d;background-image:linear-gradient(120deg,#c9a227,#ffe9a8 30%,#fff6d5,#ffe9a8 70%,#c9a227);background-size:180% 180%;animation:fully-trained-shimmer 5.5s linear infinite}.roster-card-sprite--trained.roster-card-sprite--pokerus{border-color:var(--pokerus-purple);box-shadow:0 0 0 3px var(--pokerus-purple-soft),0 0 8px #ffd7004d}@keyframes fully-trained-shimmer{0%{background-position:0% 50%}to{background-position:100% 50%}}@media(prefers-reduced-motion:reduce){.roster-card-sprite--trained{animation:none;background-position:40% 50%}}.roster-card-exp-share{flex:0 0 auto;width:14px;height:14px;object-fit:contain;image-rendering:pixelated}.pokemon-view{padding:var(--space-4) clamp(1.2rem,3vw,2.2rem) var(--space-5);display:grid;gap:var(--space-4)}.pokemon-view pokemon-detail{max-width:980px}.settings-view{padding:var(--space-4) clamp(1.2rem,3vw,2.2rem) var(--space-5);max-width:640px}.settings-view h2{font-family:var(--font-display);font-size:var(--font-size-xl);margin:var(--space-3) 0 var(--space-4);letter-spacing:-.01em}.settings-section{padding-bottom:var(--space-4);margin-bottom:var(--space-4);border-bottom:1px solid var(--line)}.settings-section:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.settings-section h3{margin:0 0 var(--space-2);font-size:var(--font-size-md)}.settings-section .hint{margin-bottom:var(--space-3)}.settings-section .hint:last-child{margin-bottom:0}.icon-btn{display:inline-flex;align-items:center;gap:var(--space-2)}.icon-btn svg{flex:0 0 auto;width:16px;height:16px}.safe-data-note{padding:var(--space-3);border-left:3px solid var(--teal);background:var(--paper)}.safe-data-note strong{color:var(--ink)}#clear-cache-status{min-height:0;margin-top:var(--space-2)}.settings-section:has(#notify-cache-done-input) .field-label{margin-bottom:var(--space-2)}#notify-cache-done-status{min-height:0;margin-top:0}#settings-version{font-family:var(--font-mono)}.sprite-cache-generation{padding:var(--space-3) 0;border-bottom:1px solid var(--line)}.sprite-cache-generation:last-child{border-bottom:none}.sprite-cache-generation>summary{display:flex;align-items:center;gap:var(--space-2)}.sprite-cache-summary-status{margin-left:auto;font-family:var(--font-mono);font-size:var(--font-size-2xs);font-weight:400;color:var(--ink-soft)}.sprite-cache-summary-status[data-state=busy]{color:var(--led-sending)}.sprite-cache-summary-status[data-state=full]{color:var(--teal)}.sprite-cache-generation-body{margin-top:var(--space-3);display:grid;gap:var(--space-3)}.sprite-cache-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);flex-wrap:wrap}.sprite-cache-row-info{display:grid;gap:2px;min-width:0}.sprite-cache-row-label{font-weight:600}.sprite-cache-row-count{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--ink-soft)}.sprite-cache-row-note{margin:0;font-size:var(--font-size-2xs)}.sprite-cache-row-actions{display:flex;gap:var(--space-2);flex:0 0 auto}@media(min-width:641px){#party-dialog{width:min(480px,calc(100vw - 2.4rem))}}.add-pokemon-dialog-identity{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);padding:var(--space-3);background-color:var(--lcd);border:1px solid var(--lcd-line);border-radius:var(--radius-md)}.add-pokemon-dialog-sprite{flex:0 0 auto;width:56px;height:56px;image-rendering:pixelated;background:var(--sprite-bg);border-radius:var(--radius-sm);object-fit:contain}.add-pokemon-dialog-identity-text{min-width:0}.add-pokemon-dialog-name{display:block;font-family:var(--font-display);font-weight:600;font-size:var(--font-size-lg);text-transform:capitalize}.add-pokemon-dialog-status{margin:.15rem 0 0;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--teal);min-height:1.1em}.field-label{display:block;font-size:var(--font-size-sm);color:var(--ink-soft);margin-bottom:var(--space-4)}.field-label .ds-field,.field-label level-input{display:block;width:100%;margin-top:var(--space-2);font-family:var(--font-body)}.field-error{display:block;margin-top:var(--space-2);font-size:var(--font-size-xs);color:var(--poke-red)}.field-optional{font-weight:400;font-size:var(--font-size-xs);color:var(--ink-soft);opacity:.75}textarea.ds-field{resize:vertical}.advanced-rules{margin:0 0 var(--space-4);padding-top:var(--space-3);border-top:1px dashed var(--lcd-line)}.advanced-rules-hint{margin:var(--space-3) 0 var(--space-4);font-size:var(--font-size-xs)}.field-label--inline{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.field-label--checkbox{display:flex;align-items:flex-start;gap:var(--space-3);font-weight:600;color:var(--ink)}.field-label--checkbox input[type=checkbox]{margin-top:3px;width:16px;height:16px;accent-color:var(--teal);flex:0 0 auto}.field-label--checkbox .hint{margin:2px 0 0;font-weight:400}.field-label--checkbox-inline{align-items:center}.field-label--checkbox-inline input[type=checkbox]{margin-top:0}.field-label--checkbox-inline span{transform:translateY(-1.5px)}.field-label--inline .ds-field{width:230px;margin-top:0;flex:0 1 auto}.field-label--inline game-version-picker{width:230px;flex:0 1 auto}.sprite-style-hint{margin-top:calc(-1 * var(--space-2));font-size:var(--font-size-xs)}@media(max-width:640px){.field-label--inline{flex-direction:column;align-items:stretch;gap:var(--space-2);margin-bottom:var(--space-4)}.field-label--inline .ds-field,.field-label--inline game-version-picker{width:100%;flex:1 1 auto}}.party-dialog-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.party-dialog-actions .spacer{flex:1}.bezel-footer{display:grid;gap:2px;background:var(--footer-bg);color:var(--footer-ink);text-align:center;padding:var(--space-3);font-family:var(--font-mono);font-size:var(--font-size-xs);letter-spacing:.04em}.footer-link{color:inherit;text-decoration:underline;text-underline-offset:2px}.app-version{font-size:var(--font-size-2xs);opacity:.6}@media(max-width:600px){body{padding:0}.device{border-radius:0;border-left:none;border-right:none;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.bezel-footer{margin-top:auto}.layout,.picker,.pokemon-view,.party-view-header,.settings-view,.bezel{padding-inline:1rem}.layout,.picker{padding-block:var(--space-4)}.layout{gap:var(--space-4)}.party-view-header{padding-top:var(--space-3)}}
/*# sourceMappingURL=styles.css.map */
