:root{--color-bg: #fff2c9;--color-surface: #fffdf8;--color-surface-strong: #fff2df;--color-text: #34251f;--color-muted: #7a6d66;--color-border: #ead6c7;--color-primary: #2dbfaf;--color-secondary: #7d9f2f;--color-accent-warm: #f4b75e;--color-accent-soft: #f0c9ca;--color-warning: #9a650c;--color-shadow: transparent;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius-card: 18px;--radius-control: 12px;--container-width: 1232px;--paper: var(--color-bg);--paper-soft: var(--color-surface);--paper-strong: var(--color-surface-strong);--ink: var(--color-text);--ink-muted: var(--color-muted);--line: var(--color-border);--line-strong: color-mix(in srgb, var(--color-border) 72%, var(--color-text));--accent: #17665d;--accent-soft: color-mix(in srgb, var(--color-primary) 18%, transparent);--danger: #b23a48;--field: var(--color-bg);--shadow-soft: none;--shadow-strong: none;--button-hover-bg: color-mix(in srgb, var(--color-surface) 86%, #000 14%);--button-hover-border: color-mix(in srgb, var(--color-border) 72%, #000 28%);--primary-hover-bg: color-mix(in srgb, var(--color-primary) 76%, #000 24%);--danger-hover-bg: color-mix(in srgb, #fff 64%, var(--danger) 36%);color-scheme:light;color:var(--ink);background:var(--field);font-family:ui-rounded,SF Pro Rounded,Nunito,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;line-height:1.5;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{--color-bg: #18110d;--color-surface: #241a15;--color-surface-strong: #312219;--color-text: #f8eadb;--color-muted: #c9b8aa;--color-border: #4b3327;--color-primary: #43d4c2;--color-secondary: #b8d875;--color-accent-warm: #f3bd63;--color-accent-soft: #7b5160;--color-warning: #f0c15e;--color-shadow: transparent;--accent: #9ff3e8;--danger: #f28b99;--shadow-soft: none;--shadow-strong: none;--button-hover-bg: color-mix(in srgb, var(--color-surface) 82%, #000 18%);--button-hover-border: color-mix(in srgb, var(--color-border) 72%, #000 28%);--primary-hover-bg: color-mix(in srgb, var(--color-primary) 70%, #000 30%);--danger-hover-bg: color-mix(in srgb, var(--danger) 44%, #000 56%);color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme]){--color-bg: #18110d;--color-surface: #241a15;--color-surface-strong: #312219;--color-text: #f8eadb;--color-muted: #c9b8aa;--color-border: #4b3327;--color-primary: #43d4c2;--color-secondary: #b8d875;--color-accent-warm: #f3bd63;--color-accent-soft: #7b5160;--color-warning: #f0c15e;--color-shadow: transparent;--accent: #9ff3e8;--danger: #f28b99;--shadow-soft: none;--shadow-strong: none;--button-hover-bg: color-mix(in srgb, var(--color-surface) 82%, #000 18%);--button-hover-border: color-mix(in srgb, var(--color-border) 72%, #000 28%);--primary-hover-bg: color-mix(in srgb, var(--color-primary) 70%, #000 30%);--danger-hover-bg: color-mix(in srgb, var(--danger) 44%, #000 56%);color-scheme:dark}}*{box-sizing:border-box}html{width:100%;min-height:100%;background-color:var(--field)}body{width:100%;min-width:320px;min-height:100vh;margin:0;background-color:var(--field);color:var(--ink)}astro-island{display:block;min-height:100vh;background-color:var(--field)}button,input,select{font:inherit}button{color:inherit;cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,.scene-card:focus-visible{outline:3px solid var(--color-secondary);outline-offset:3px}button:disabled{cursor:not-allowed}a{color:inherit}.gallery-shell{width:100%;min-height:calc(100vh - 96px);margin:0;padding:var(--space-6) var(--space-5);background:var(--field)}.top-banner{position:sticky;top:0;z-index:10;border-bottom:4px solid transparent;border-image:linear-gradient(to right,#f26d6d,#8fcf62,#68b8e8,#35c7b2) 1;background:#fff2c9f5;box-shadow:none;color:var(--color-text)}.top-banner__inner{width:100%;min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin:0;padding:var(--space-4) var(--space-5)}.top-banner__brand{display:inline-flex;align-items:center;min-width:0;flex-shrink:0;text-decoration:none}.top-banner h1{font-weight:950;font-size:1.8rem;line-height:1.1;margin:0;background-image:linear-gradient(90deg,#009bd1,#54aa32,#e48a12,#e25292);background-clip:text;color:transparent;filter:none;letter-spacing:0;text-shadow:none;text-transform:lowercase;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.top-banner__actions{display:inline-flex;align-items:center;flex:0 0 auto;gap:var(--space-2)}.theme-toggle,.language-toggle{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border:1.5px solid #e8cab6;border-radius:50%;padding:0;background:var(--color-surface);box-shadow:none;color:#5f4233;cursor:pointer;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.theme-toggle:hover,.language-toggle:hover{border-color:var(--button-hover-border);background:var(--button-hover-bg);color:color-mix(in srgb,#5f4233 82%,#000 18%)}.theme-toggle svg{width:18px;height:18px}.theme-toggle circle{fill:none;stroke:currentColor;stroke-width:1.6}.theme-toggle path{fill:currentColor}.language-toggle{font-size:.76rem;font-weight:900;letter-spacing:0}.login-button{min-width:64px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border:1.5px solid var(--color-text);border-radius:999px;padding:0 var(--space-4);background:var(--color-text);box-shadow:none;color:var(--color-surface);font-size:.84rem;font-weight:900;line-height:1;overflow:hidden;text-decoration:none;position:relative;white-space:nowrap;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.login-button__layout-label{visibility:hidden}.login-button__text{align-items:center;box-sizing:border-box;display:flex;inset:0;justify-content:center;overflow:hidden;padding:inherit;position:absolute;text-overflow:ellipsis;white-space:nowrap}.login-button.login-button--avatar{border-radius:50%;height:44px;min-height:44px;min-width:44px;padding:0;width:44px}.login-button__avatar{align-items:center;display:inline-flex;height:100%;justify-content:center;line-height:1;width:100%}.login-button:hover{border-color:color-mix(in srgb,var(--color-text) 84%,#000 16%);background:color-mix(in srgb,var(--color-text) 84%,#000 16%);color:var(--color-surface);text-decoration:none}:root[data-theme=dark] .top-banner{background:#19120ef5;box-shadow:none}:root[data-theme=dark] .top-banner h1{background:linear-gradient(90deg,#58d7ff,#95df65,#f6c55d,#ff8fc1);background-clip:text;text-shadow:none;-webkit-background-clip:text}:root[data-theme=dark] .theme-toggle,:root[data-theme=dark] .language-toggle{border-color:#57392b;background:#261c17;box-shadow:none;color:#f4dfc9}:root[data-theme=dark] .theme-toggle:hover,:root[data-theme=dark] .language-toggle:hover{border-color:var(--button-hover-border);background:var(--button-hover-bg);color:#f4dfc9}:root[data-theme=dark] .login-button{border-color:#c79038;background:#f0bd5f;color:#34251f}:root[data-theme=dark] .login-button:hover{border-color:color-mix(in srgb,#c79038 78%,#000 22%);background:color-mix(in srgb,#f0bd5f 78%,#000 22%);color:#34251f}.scene-dimension-formula{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;letter-spacing:0;text-transform:uppercase}h2,h3,p{margin-top:0}h2{margin-bottom:0;font-size:1.55rem;font-weight:800;line-height:1.25}h3{margin-bottom:0;font-size:1.15rem;font-weight:800;line-height:1.25}.auth-error{grid-column:1 / -1;margin:0;color:var(--danger);font-size:.82rem}.auth-notice{grid-column:1 / -1;margin:0;color:var(--accent);font-size:.82rem}.primary-button,.secondary-button,.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1.5px solid var(--color-primary);border-radius:var(--radius-control);background:var(--color-surface);color:#164c46;font-weight:900;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.primary-button,.secondary-button{height:34px;padding:0 12px;white-space:nowrap}.secondary-button{border-color:var(--line);background:var(--color-surface);color:var(--ink)}.primary-button:not(:disabled){background:#e8faf5}.primary-button:not(:disabled):hover,.icon-button:not(:disabled):hover{border-color:var(--button-hover-border);background:var(--primary-hover-bg);color:#082f2a}.secondary-button:not(:disabled):hover{border-color:var(--button-hover-border);background:var(--button-hover-bg)}.icon-button{width:34px;height:34px;padding:0}.icon-button:disabled,.primary-button:disabled,.secondary-button:disabled{border-color:var(--line);color:var(--ink-muted);background:#ffffff57;opacity:.72}.content-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-5);align-items:start;margin:0}.section-block{min-width:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}.my-scenes-section{position:sticky;top:12px}.section-heading{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:0 0 var(--space-5)}.scene-tabs{min-width:0;display:inline-flex;align-items:center;gap:var(--space-1);border:1.5px solid var(--line);border-radius:var(--radius-control);padding:var(--space-1);background:color-mix(in srgb,var(--color-surface) 76%,transparent);box-shadow:none}.scene-tab{min-height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius-control) - 4px);padding:0 var(--space-4);color:var(--ink-muted);font-size:.96rem;font-weight:900;line-height:1;text-decoration:none;white-space:nowrap;transition:background-color .14s ease,color .14s ease}.scene-tab:hover{background:var(--button-hover-bg);color:var(--ink);text-decoration:none}.scene-tab--active{background:var(--color-primary);color:#113832;box-shadow:none}.scene-tab--active:hover{background:var(--primary-hover-bg);color:#113832}:root[data-theme=dark] .scene-tabs{background:color-mix(in srgb,var(--color-surface) 74%,transparent);box-shadow:none}:root[data-theme=dark] .scene-tab--active{color:#10231f}.public-scene-filters{display:flex;align-items:center;justify-content:flex-end;width:min(340px,42vw);min-width:0}.scene-pokemon-control{min-width:0;width:100%}.scene-pokemon-control select{width:100%;min-width:0;height:44px;border:1.5px solid var(--line);border-radius:var(--radius-control);background:var(--color-surface);color:var(--ink);font-size:.84rem;font-weight:900;padding:0 var(--space-3);transition:background-color .14s ease,border-color .14s ease,color .14s ease}.scene-pokemon-control select:hover{border-color:var(--button-hover-border);background:var(--button-hover-bg)}.scene-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-4);padding:0}.public-scenes-section{width:100%}.scene-card{--pokemon-primary: #f5efe2;--pokemon-secondary: #fbf7ee;--pokemon-tertiary: #ffffff;--pokemon-card-ink: #1c1a17;position:relative;min-height:232px;display:block;border:2px solid color-mix(in srgb,var(--pokemon-primary) 68%,var(--color-border));border-radius:var(--radius-card);padding:var(--space-4);background:radial-gradient(circle at 82% 82%,color-mix(in srgb,var(--pokemon-secondary) 62%,transparent) 0 32%,transparent 58%),linear-gradient(135deg,color-mix(in srgb,var(--pokemon-primary) 72%,#fff 28%),color-mix(in srgb,var(--pokemon-tertiary) 56%,var(--pokemon-primary) 44%));box-shadow:var(--shadow-soft);color:var(--pokemon-card-ink);cursor:pointer;overflow:hidden;text-decoration:none;transition:border-color .14s ease,background .14s ease}.scene-card:hover{border-color:color-mix(in srgb,var(--pokemon-primary) 78%,var(--pokemon-card-ink));background:radial-gradient(circle at 82% 82%,color-mix(in srgb,var(--pokemon-secondary) 70%,transparent) 0 34%,transparent 60%),linear-gradient(135deg,color-mix(in srgb,var(--pokemon-primary) 78%,#fff 22%),color-mix(in srgb,var(--pokemon-tertiary) 62%,var(--pokemon-primary) 38%));box-shadow:none;transform:none}.scene-card--has-cover:after{position:absolute;inset:0;z-index:1;content:"";background:linear-gradient(180deg,#0a11181a,#0a111870),linear-gradient(90deg,#ffffffc2,#ffffff2e);pointer-events:none}.scene-card--owned{min-height:232px;cursor:pointer}.scene-card--create{display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 78% 76%,rgba(219,207,248,.62) 0 30%,transparent 64%),linear-gradient(135deg,#fbf8ff,#ece5fb)}.scene-card--owned:hover{transform:none}.scene-card-actions{position:absolute;top:var(--space-4);right:var(--space-4);z-index:4;display:flex;align-items:center;gap:var(--space-2);color:inherit}.scene-card-hit-area{position:absolute;inset:0;z-index:3;border-radius:inherit;color:inherit;text-decoration:none}.scene-card-hit-area:focus-visible{outline:3px solid var(--ring);outline-offset:-3px}.scene-card--owned .scene-card-actions{position:absolute;top:auto;right:var(--space-4);bottom:var(--space-4);left:var(--space-4);justify-content:space-between}.scene-ref-link{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;padding:0;background:transparent;color:inherit;box-shadow:none;text-decoration:none;opacity:.9;transition:opacity .14s ease}.scene-ref-link:hover{background:transparent;opacity:1;text-decoration:none;transform:none}.scene-ref-link svg{width:18px;height:18px}.scene-card-create-mark{position:relative;z-index:3;width:86px;height:86px;display:inline-flex;align-items:center;justify-content:center;border:2px solid rgba(112,92,150,.26);border-radius:50%;background:#ffffff6b;color:#263645;transition:background-color .14s ease,border-color .14s ease}.scene-card--create:hover .scene-card-create-mark{border-color:#705c966b;background:#ffffff8a}.public-toggle{height:30px;display:inline-flex;align-items:center;gap:7px;border:1px solid color-mix(in srgb,var(--pokemon-card-ink) 24%,transparent);border-radius:999px;padding:0 9px 0 5px;background:color-mix(in srgb,#fff 78%,var(--pokemon-primary) 22%);color:var(--pokemon-card-ink);box-shadow:none;font-size:.72rem;font-weight:950;line-height:1;white-space:nowrap;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.delete-scene-button{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--danger) 45%,transparent);border-radius:999px;padding:0;background:color-mix(in srgb,#fff 80%,var(--danger) 20%);color:var(--danger);box-shadow:none;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.delete-scene-button:hover:not(:disabled){border-color:color-mix(in srgb,var(--danger) 64%,#000 36%);background:var(--danger-hover-bg)}.delete-scene-button:disabled{opacity:.76}.public-toggle:hover:not(:disabled){border-color:color-mix(in srgb,var(--pokemon-card-ink) 34%,transparent);background:color-mix(in srgb,#fff 66%,var(--pokemon-primary) 34%)}.public-toggle:disabled{opacity:.76}.public-toggle-track{width:28px;height:16px;display:inline-flex;align-items:center;border-radius:999px;padding:2px;background:color-mix(in srgb,var(--pokemon-card-ink) 18%,transparent);transition:background .14s ease}.public-toggle-thumb{width:12px;height:12px;border-radius:50%;background:#fffdf8;box-shadow:none;transform:translate(0);transition:transform .14s ease}.public-toggle.is-on .public-toggle-track{background:color-mix(in srgb,var(--accent) 78%,#fff 22%)}.public-toggle.is-on .public-toggle-thumb{transform:translate(12px)}.public-toggle svg{width:13px;height:13px}.scene-card-pokemon{position:absolute;right:-26px;bottom:-22px;z-index:1;width:min(58%,204px);max-height:78%;object-fit:contain;object-position:right bottom;filter:none;pointer-events:none}.scene-card-cover{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.scene-card--create .scene-card-pokemon--silhouette{inset:50% auto auto 50%;display:block;width:80%;height:80%;max-height:none;background:#d9ccf4;opacity:.72;transform:translate(-50%,-50%);-webkit-mask:var(--pokemon-silhouette-image) center / contain no-repeat;mask:var(--pokemon-silhouette-image) center / contain no-repeat}.scene-card-content{position:relative;z-index:2;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;min-height:208px;gap:8px}.scene-card--owned .scene-card-content{padding-bottom:56px}.scene-card h3{max-width:min(78%,20rem);margin:0;align-self:start;color:var(--pokemon-card-ink);font-size:clamp(1.3rem,1.5vw,1.62rem);line-height:1.05;overflow-wrap:break-word;word-break:normal}.scene-dimension-formula{width:fit-content;max-width:min(78%,20rem);margin:0;border-top:1px solid color-mix(in srgb,var(--pokemon-card-ink) 24%,transparent);padding-top:8px;color:var(--pokemon-card-ink);font-size:.78rem;font-weight:900;line-height:1;white-space:nowrap}.state-panel{min-height:112px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px dashed var(--line-strong);margin:14px;border-radius:8px;padding:16px;background:#ffffff4d;color:var(--ink-muted)}.scene-status-message{margin:42px 14px;color:var(--ink-muted);font-size:.96rem;font-weight:800;line-height:1.4;text-align:center}.compact-state{justify-content:flex-start;min-height:74px}.error-state{justify-content:space-between;color:var(--danger)}.error-state div{display:grid;gap:2px}.error-state span{overflow-wrap:anywhere}.load-more-bar{display:flex;align-items:center;justify-content:center;border-top:1px solid var(--line);padding:12px 16px}.load-more-button{min-width:126px}.visibility-action-error{margin:-2px 14px 14px;color:var(--danger);font-size:.84rem;font-weight:800}.confirm-backdrop{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:18px;background:#231f1a52;backdrop-filter:blur(8px)}.confirm-dialog{width:min(390px,calc(100vw - 36px));display:grid;gap:12px;border:1px solid var(--line-strong);border-radius:8px;padding:16px;background:color-mix(in srgb,var(--paper-soft) 96%,#fff 4%);box-shadow:none}.confirm-dialog h2{font-size:1.35rem}.confirm-dialog p{margin:0;color:var(--ink-muted);font-size:.92rem}.confirm-scene-name{color:var(--ink)!important;font-weight:950;overflow-wrap:anywhere}.confirm-error{color:var(--danger)!important;font-weight:800}.confirm-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}.danger-button{min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid color-mix(in srgb,var(--danger) 48%,transparent);border-radius:6px;padding:0 12px;background:color-mix(in srgb,#fff 78%,var(--danger) 22%);color:var(--danger);font-weight:950;white-space:nowrap;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.danger-button:not(:disabled):hover{border-color:color-mix(in srgb,var(--danger) 64%,#000 36%);background:var(--danger-hover-bg)}.danger-button:disabled{border-color:var(--line);color:var(--ink-muted);background:#ffffff57;opacity:.72}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:980px){.content-grid{grid-template-columns:1fr}.scene-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.public-scenes-section .section-heading{align-items:stretch;flex-direction:column}.scene-tabs{width:100%}.scene-tab{flex:1 1 0}.public-scene-filters{justify-content:stretch}.scene-pokemon-control,.public-scene-filters{width:100%}.my-scenes-section{position:static}}@media(max-width:640px){.gallery-shell{padding:var(--space-5) var(--space-4)}.top-banner__inner{min-height:56px;gap:var(--space-2);padding:var(--space-3) var(--space-4)}.top-banner h1{font-size:1.2rem}.top-banner__actions{gap:6px}.login-button{min-width:56px;padding:0 var(--space-3)}.public-scene-filters{flex-direction:column}.scene-card{min-height:244px;padding:var(--space-4)}.scene-card-content{min-height:220px}.scene-card-pokemon{right:-34px;bottom:-20px;width:min(58%,190px)}}@media(max-width:430px){h1{max-width:8ch}.section-heading{align-items:start;flex-direction:column}.scene-card{min-height:300px}.scene-card-content{min-height:276px;padding-bottom:104px}.scene-card h3,.scene-dimension-formula{max-width:100%}.scene-card-pokemon{width:min(64%,210px)}}
