:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#0f1115;--color-surface:#171a21;--color-surface-raised:#1f232c;--color-border:#2a2f3a;--color-border-strong:#3a4150;--color-text:#e6e8ec;--color-text-muted:#9aa3b2;--color-text-disabled:#5c6474;--color-primary:#4c8dff;--color-primary-hover:#6ba1ff;--color-primary-active:#3a78e8;--color-on-primary:#0b1020;--color-focus-ring:#8ab4ff;--color-danger:#f4676b;--color-danger-hover:#ff8085;--color-on-danger:#1a0b0c;--color-warning:#f0b03c;--color-success:#4ecb8f;--color-info:#6fc7de;--color-badge-published-bg:#15311f;--color-badge-published-fg:#4ecb8f;--color-badge-unpublished-bg:#2a2f3a;--color-badge-unpublished-fg:#9aa3b2;--color-badge-active-bg:#15311f;--color-badge-active-fg:#4ecb8f;--color-badge-inactive-bg:#3a1f21;--color-badge-inactive-fg:#f4676b;--color-badge-continue-bg:#1b2b45;--color-badge-continue-fg:#4c8dff;--opacity-row-dimmed:.55;--color-shell-bar:#0b0d11;--color-shell-canvas-bg:#000;--color-shell-overlay:#0b0d11e0;--font-family-body:system-ui, -apple-system, "Segoe UI", "Yu Gothic UI", "Noto Sans JP", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;--font-family-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Noto Sans Mono", monospace;--font-display-size:28px;--font-display-line:1.3;--font-display-weight:700;--font-heading-size:20px;--font-heading-line:1.4;--font-heading-weight:700;--font-subheading-size:16px;--font-subheading-line:1.5;--font-subheading-weight:600;--font-body-size:14px;--font-body-line:1.6;--font-body-weight:400;--font-body-strong-weight:600;--font-caption-size:12px;--font-caption-line:1.5;--font-mono-size:13px;--font-mono-line:1.5;--space-2xs:2px;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-full:9999px;--border-width:1px;--focus-ring-width:2px;--focus-ring-offset:2px;--elevation-1:0 1px 2px #0006;--elevation-2:0 4px 12px #00000080;--elevation-3:0 12px 32px #0009;--layout-max-width:1280px;--layout-header-height:56px;--layout-shell-bar-height:44px;--layout-card-min-width:200px;--layout-form-max-width:400px;--layout-grid-gap:16px;--breakpoint-sm:768px;--breakpoint-md:1024px;--breakpoint-lg:1280px;--motion-fast:.12s;--motion-normal:.2s;--motion-slow:.32s;--motion-easing:ease-out;--icon-size:20px;--icon-size-standalone:24px;--icon-button-hit-area:40px;--button-min-height:36px;--button-primary-min-height:44px;--input-height:40px}@media (prefers-reduced-motion:reduce){:root{--motion-fast:0s;--motion-normal:0s;--motion-slow:0s}}*,:before,:after{box-sizing:border-box}html,body{height:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-family-body);font-size:var(--font-body-size);line-height:var(--font-body-line);font-weight:var(--font-body-weight);-webkit-text-size-adjust:100%;margin:0}h1,h2,h3{margin:0}h1{font-size:var(--font-heading-size);line-height:var(--font-heading-line);font-weight:var(--font-heading-weight)}h2{font-size:var(--font-subheading-size);line-height:var(--font-subheading-line);font-weight:var(--font-subheading-weight)}:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus-ring);outline-offset:var(--focus-ring-offset)}.field{gap:var(--space-xs);flex-direction:column;display:flex}.field>label{font-size:var(--font-body-size);font-weight:var(--font-body-strong-weight)}.field>.hint{color:var(--color-text-muted);font-size:var(--font-caption-size);line-height:var(--font-caption-line)}.field>.error{color:var(--color-danger);font-size:var(--font-caption-size);line-height:var(--font-caption-line)}input[type=text],input[type=password]{height:var(--input-height);padding:0 var(--space-sm);border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-family:inherit;font-size:var(--font-body-size);transition:border-color var(--motion-fast) var(--motion-easing)}input:hover:not(:disabled){border-color:var(--color-text-muted)}input:disabled{color:var(--color-text-disabled);background:var(--color-surface)}.mono{font-family:var(--font-family-mono);font-size:var(--font-mono-size);line-height:var(--font-mono-line)}.button{min-height:var(--button-min-height);padding:0 var(--space-md);border:var(--border-width) solid transparent;border-radius:var(--radius-sm);font-family:inherit;font-size:var(--font-body-size);font-weight:var(--font-body-strong-weight);cursor:pointer;transition:background-color var(--motion-fast) var(--motion-easing)}.button:disabled{cursor:not-allowed;opacity:.6}.button-primary{min-height:var(--button-primary-min-height);background:var(--color-primary);width:100%;color:var(--color-on-primary)}.button-primary:hover:not(:disabled){background:var(--color-primary-hover)}.button-primary:active:not(:disabled){background:var(--color-primary-active)}.centered-page{justify-content:center;align-items:center;gap:var(--space-lg);min-height:100%;padding:var(--space-2xl) var(--space-md);flex-direction:column;display:flex}.service-name{font-size:var(--font-display-size);line-height:var(--font-display-line);font-weight:var(--font-display-weight)}.card{gap:var(--space-md);width:100%;max-width:var(--layout-form-max-width);padding:var(--space-lg);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--elevation-1);flex-direction:column;display:flex}.message{gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:var(--font-body-size);display:flex}.message-error{background:var(--color-badge-inactive-bg);color:var(--color-danger)}.message-info{background:var(--color-surface-raised);color:var(--color-text-muted)}.note{color:var(--color-text-muted);font-size:var(--font-caption-size);line-height:var(--font-caption-line);text-align:center}.admin-page{max-width:var(--layout-max-width);padding:var(--space-lg) var(--space-md);gap:var(--space-md);flex-direction:column;margin:0 auto;display:flex}.admin-tabs{border-bottom:var(--border-width) solid var(--color-border);padding-bottom:var(--space-sm);justify-content:space-between;align-items:center;display:flex}.admin-tabs ul{gap:var(--space-md);margin:0;padding:0;list-style:none;display:flex}.admin-tabs a{color:var(--color-text-muted);text-decoration:none}.admin-tabs a.tab-active{color:var(--color-text);font-weight:var(--font-body-strong-weight)}.admin-tabs .tab-disabled{color:var(--color-text-disabled);cursor:not-allowed}.admin-header{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.filters{gap:var(--space-sm);flex-wrap:wrap;display:flex}.filters select{height:var(--input-height);padding:0 var(--space-sm);border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-family:inherit;font-size:var(--font-body-size)}.data-table{border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius-md);width:100%;overflow:hidden}.data-table th,.data-table td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:var(--border-width) solid var(--color-border)}.data-table th{font-weight:var(--font-body-strong-weight);color:var(--color-text-muted)}.data-table .row-dimmed{opacity:var(--opacity-row-dimmed)}.row-actions{gap:var(--space-sm);align-items:center;display:flex}.badge{padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius-sm);font-size:var(--font-caption-size);display:inline-block}.badge-active{background:var(--color-badge-active-bg);color:var(--color-badge-active-fg)}.badge-inactive{background:var(--color-badge-inactive-bg);color:var(--color-badge-inactive-fg)}.button-inline{align-items:center;width:auto;text-decoration:none;display:inline-flex}.button-danger{background:var(--color-danger);color:var(--color-on-danger)}.button-danger:hover:not(:disabled){background:var(--color-danger-hover)}.danger-zone{border-color:var(--color-border-strong)}.info-list{gap:var(--space-xs) var(--space-md);color:var(--color-text-muted);font-size:var(--font-caption-size);grid-template-columns:auto 1fr;margin:0;display:grid}.info-list dt{font-weight:var(--font-body-strong-weight)}.info-list dd{margin:0}.issued-password{padding:var(--space-sm);background:var(--color-surface-raised);border-radius:var(--radius-sm);-webkit-user-select:all;user-select:all}fieldset.field{border:none;margin:0;padding:0}fieldset.field legend{font-weight:var(--font-body-strong-weight);padding:0}.card-wide{max-width:480px}.upload-form{max-width:none}.badge-published{background:var(--color-badge-published-bg);color:var(--color-badge-published-fg)}.badge-unpublished{background:var(--color-badge-unpublished-bg);color:var(--color-badge-unpublished-fg)}.validation-errors{padding:var(--space-sm) var(--space-md) var(--space-sm) var(--space-xl);margin:0;display:block}.validation-errors li{margin:var(--space-2xs) 0}input[type=file]{padding:var(--space-sm);border:var(--border-width) dashed var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-family:inherit;font-size:var(--font-body-size)}.shell{flex-direction:column;height:100vh;display:flex}.shell-bar{align-items:center;gap:var(--space-md);height:var(--layout-shell-bar-height);padding:0 var(--space-md);background:var(--color-shell-bar);flex-shrink:0;display:flex}.shell-slot{color:var(--color-text-muted);font-size:var(--font-caption-size)}.shell-stage{background:var(--color-shell-canvas-bg);flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.shell-canvas{width:100%;max-width:100%;max-height:100%}.shell-overlay{justify-content:center;align-items:center;gap:var(--space-md);background:var(--color-shell-overlay);color:var(--color-text);text-align:center;padding:var(--space-lg);flex-direction:column;display:flex;position:absolute;inset:0}.shell-overlay-actions{gap:var(--space-sm);display:flex}.shell-overlay-actions .button{background:var(--color-surface-raised);color:var(--color-text);padding:0 var(--space-md);align-items:center;text-decoration:none;display:inline-flex}.site-header{justify-content:space-between;align-items:center;gap:var(--space-md);height:var(--layout-header-height);padding:0 var(--space-lg);background:var(--color-surface);border-bottom:var(--border-width) solid var(--color-border);display:flex}.site-logo{font-size:var(--font-subheading-size);font-weight:var(--font-subheading-weight);color:var(--color-text);text-decoration:none}.site-menu{align-items:center;gap:var(--space-md);display:flex}.site-menu a{color:var(--color-text-muted);font-size:var(--font-body-size);text-decoration:none}.site-menu a:hover{color:var(--color-text)}.viewer-name{font-weight:var(--font-body-strong-weight)}.link-button{color:var(--color-text-muted);font-family:inherit;font-size:var(--font-body-size);cursor:pointer;background:0 0;border:none;padding:0}.link-button:hover{color:var(--color-text)}.catalog-page,.detail-page{max-width:var(--layout-max-width);padding:var(--space-lg) var(--space-md);gap:var(--space-md);flex-direction:column;margin:0 auto;display:flex}.card-grid{grid-template-columns:repeat(auto-fill, minmax(var(--layout-card-min-width), 1fr));gap:var(--layout-grid-gap);margin:0;padding:0;list-style:none;display:grid}.game-card a{gap:var(--space-xs);padding:var(--space-md);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);transition:border-color var(--motion-fast) var(--motion-easing);flex-direction:column;text-decoration:none;display:flex}.game-card a:hover{border-color:var(--color-border-strong)}.thumbnail,.thumbnail-fallback{aspect-ratio:16/9;border-radius:var(--radius-sm);background:var(--color-surface-raised);object-fit:cover;justify-content:center;align-items:center;width:100%;display:flex}.thumbnail-fallback{font-size:var(--font-display-size);font-weight:var(--font-display-weight);color:var(--color-text-muted)}.game-card-title{font-size:var(--font-subheading-size);font-weight:var(--font-subheading-weight)}.game-card-category{color:var(--color-text-muted);font-size:var(--font-caption-size)}.badge-continue{background:var(--color-badge-continue-bg);color:var(--color-badge-continue-fg);align-self:flex-start}.empty-state{align-items:center;gap:var(--space-md);padding:var(--space-2xl);flex-direction:column;display:flex}.empty-state .button{width:auto}.detail-head{gap:var(--space-xs);flex-direction:column;display:flex}.detail-meta{gap:var(--space-md);color:var(--color-text-muted);font-size:var(--font-caption-size);margin:0;display:flex}.detail-description{white-space:pre-wrap;margin:0}.detail-section{gap:var(--space-sm);padding-top:var(--space-md);border-top:var(--border-width) solid var(--color-border);flex-direction:column;display:flex}.controls{font-family:var(--font-family-body);white-space:pre-wrap;color:var(--color-text-muted);margin:0}.slot-list{gap:var(--space-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.slot-row{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);flex-wrap:wrap;display:flex}.slot-body{align-items:center;gap:var(--space-md);min-width:0;display:flex}.slot-number{font-weight:var(--font-body-strong-weight);white-space:nowrap}.slot-empty{color:var(--color-text-muted)}.slot-detail{align-items:center;gap:var(--space-md);min-width:0;display:flex}.slot-thumbnail{aspect-ratio:16/9;border-radius:var(--radius-sm);object-fit:cover;width:96px}.slot-lines{gap:var(--space-2xs);flex-direction:column;min-width:0;display:flex}.slot-label{font-weight:var(--font-body-strong-weight);text-overflow:ellipsis;white-space:nowrap;max-width:40ch;margin:0;overflow:hidden}.slot-stats,.slot-caption{gap:var(--space-md);color:var(--color-text-muted);font-size:var(--font-caption-size);margin:0;display:flex}.progress{align-items:center;gap:var(--space-xs);display:inline-flex}.slot-actions{gap:var(--space-sm);align-items:center;display:flex}.slot-actions .button{background:var(--color-primary);width:auto;color:var(--color-on-primary);align-items:center;text-decoration:none;display:inline-flex}.slot-actions .button-danger{background:var(--color-danger);color:var(--color-on-danger)}.admin-section{gap:var(--space-sm);padding-top:var(--space-md);border-top:var(--border-width) solid var(--color-border);flex-direction:column;display:flex}.data-table .version-current{background:var(--color-surface-raised)}textarea{padding:var(--space-sm);border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-family:inherit;font-size:var(--font-body-size);resize:vertical}.total-size{text-align:right}.data-table .audit-failed{background:var(--color-badge-inactive-bg)}.data-table td .hint{color:var(--color-text-muted);font-size:var(--font-caption-size);display:block}.data-table .badge{margin-left:var(--space-xs)}.pager{justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-md) 0;display:flex}.pager .button{width:auto}.pager-status{color:var(--color-text-muted);font-size:var(--font-caption-size)}.thumbnail-editor{align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.thumbnail-small{aspect-ratio:16/9;width:160px}.thumbnail-editor .button{align-items:center;width:auto;display:inline-flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.data-table th.reorder-col,.data-table td.reorder-col{white-space:nowrap;width:1%;padding-right:var(--space-sm)}.reorder-controls{align-items:center;gap:var(--space-xs);display:flex}.reorder-handle{cursor:grab;color:var(--color-text-muted);-webkit-user-select:none;user-select:none;line-height:1}.reorder-handle.is-disabled{cursor:default;opacity:var(--opacity-row-dimmed)}.reorder-buttons{gap:var(--space-2xs);flex-direction:column;display:inline-flex}.reorder-step{width:auto;padding:0 var(--space-xs);line-height:1.2;font-size:var(--font-caption-size)}.data-table tr.row-dragging{opacity:var(--opacity-row-dimmed)}.reorder-hint{text-align:left;margin-top:var(--space-xs)}