Initial curated chimera source from a8ae5b1db07fb49926c94585e2718e5130330974

This commit is contained in:
Public Source Publisher committed 2026-10-01 01:38:08 +02:00
commit c737a37f71
531 files changed
+119270

No files matched your search

+1
View File
@@ -0,0 +1 @@
:root{--sidebar-w:210px;--titlebar-h:32px;--statusbar-h:26px}*,::after,::before{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}body,html{height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,'Segoe UI',system-ui,sans-serif;font-size:14px;overflow:hidden;user-select:none}#titlebar{position:fixed;top:0;left:0;right:0;height:var(--titlebar-h);background:#0d0d0d;border-bottom:1px solid #000;display:flex;align-items:center;justify-content:space-between;z-index:2000;-webkit-app-region:drag}#titlebar-drag{display:flex;align-items:center;gap:8px;padding-left:12px;font-size:12px;font-weight:600;color:var(--text-dim)}#mobile-nav-toggle{display:none;width:34px;height:34px;border:none;background:0 0;color:var(--text);font-size:20px;border-radius:8px;cursor:pointer;-webkit-app-region:no-drag}#mobile-nav-toggle:hover{background:rgba(255,255,255,.08)}.titlebar-icon{width:18px;height:18px}.titlebar-by{font-size:11px;font-weight:400;color:var(--text-dim);opacity:.5;letter-spacing:.04em;pointer-events:none}#titlebar-x-link{display:inline-flex;align-items:center;gap:5px;color:var(--text-dim);font-size:11px;text-decoration:none;padding:3px 10px;border-radius:16px;border:1px solid var(--border);transition:color .15s,border-color .15s;-webkit-app-region:no-drag;flex-shrink:0;margin:0 auto}#titlebar-x-link:hover{color:var(--text);border-color:var(--text-dim)}#titlebar-x-link svg{flex-shrink:0}#titlebar-controls{display:flex;-webkit-app-region:no-drag}#titlebar-controls button{width:44px;height:32px;background:0 0;border:none;color:var(--text-dim);font-size:12px;cursor:pointer;transition:background .15s,color .15s}#titlebar-controls button:hover{background:rgba(255,255,255,.1);color:var(--text)}#btn-cls:hover{background:var(--red)!important;color:#fff!important}body.web-mode #titlebar{-webkit-app-region:no-drag;justify-content:flex-start}body.web-mode #titlebar-controls,body.web-mode #titlebar-x-link{display:none}body.web-mode #titlebar-drag{width:100%;padding-right:12px}#app{position:fixed;top:var(--titlebar-h);left:0;right:0;bottom:var(--statusbar-h);display:flex}#sidebar{width:var(--sidebar-w);flex-shrink:0;background:#0d0d0d;border-right:1px solid #000;display:flex;flex-direction:column;padding:16px 0}#sidebar-scrim{display:none;position:fixed;top:var(--titlebar-h);left:0;right:0;bottom:var(--statusbar-h);background:rgba(0,0,0,.5);z-index:1840}.sidebar-brand{display:flex;align-items:center;gap:8px;padding:4px 16px 20px;font-size:16px;font-weight:700;color:var(--accent)}.brand-icon{width:26px;height:26px;flex-shrink:0}.nav-list{list-style:none;flex:1}.nav-link{display:flex;align-items:center;gap:10px;padding:10px 16px;color:var(--text-dim);text-decoration:none;font-size:12px;cursor:pointer;transition:.15s;border-left:3px solid transparent}.nav-link svg{width:17px;height:17px;flex-shrink:0}.nav-link:hover{color:var(--text);background:rgba(255,255,255,.05)}.nav-link.active{color:var(--accent);border-left-color:var(--accent);background:rgba(var(--accent-rgb),.08)}#sidebar-donate{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 16px 8px;background:0 0;border:none;border-top:1px solid var(--border);cursor:pointer;width:100%;transition:background .15s;-webkit-app-region:no-drag}#sidebar-donate:hover{background:rgba(187,134,252,.06)}#sidebar-donate:active{background:rgba(187,134,252,.12)}.donate-icon{width:30px;height:30px;border-radius:8px;filter:drop-shadow(0 0 6px rgba(187,134,252,.4));transition:filter .2s}#sidebar-donate:hover .donate-icon{filter:drop-shadow(0 0 10px rgba(187,134,252,.7))}.donate-label{font-size:11px;font-weight:600;color:var(--accent);letter-spacing:.06em;text-transform:uppercase}#sidebar-conn{display:flex;align-items:center;gap:8px;padding:12px 16px;font-size:12px;color:var(--text-dim);border-top:1px solid var(--border)}#server-logout{margin:0 12px;padding:7px 10px;color:var(--text-dim);background:rgba(255,255,255,.025);border:1px solid var(--border);border-radius:8px;font:inherit;font-size:11px;cursor:pointer}#server-logout:focus-visible,#server-logout:hover{color:var(--text);border-color:rgba(var(--accent-rgb),.45)}.dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot.red{background:var(--red)}.dot.green{background:var(--green)}#content{flex:1;min-width:0;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:20px}#content::-webkit-scrollbar{width:6px}#content::-webkit-scrollbar-track{background:0 0}#content::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}.page{display:none;flex-direction:column;gap:20px}.page.active{display:flex}.page-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.page-header h1{font-size:22px;font-weight:600;color:var(--text)}.header-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.stats-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat-card{background:var(--surface);border:1px solid varLine truncated
+442
View File
@@ -0,0 +1,442 @@
/* Chimera design system — corrections layer.
Loaded last on purpose: several component stylesheets are linked after
stitch.css, so token-level fixes have to sit downstream of all of them.
Tokens still live in stitch.css; this file only resolves conflicts. */
/* ============================================================================
Design-system corrections — 2026-08-23
One authoritative block. stitch.css owns the tokens; base.css owns the reset.
Ordered: type scale, elevation, surfaces, controls, forms, edges.
========================================================================== */
/* --- Type: one scale, sentence case above the label sizes ----------------- */
#chimera-route-title{
font-family:var(--display);
font-size:var(--fs-display);
font-weight:640;
letter-spacing:-.03em;
line-height:1.04;
text-transform:none;
text-wrap:balance;
}
.stat-num{font-family:var(--display);font-size:var(--fs-xl);font-weight:600;line-height:1;font-variant-numeric:tabular-nums}
.stat-lbl{font-size:var(--fs-xs)}
.page-header h1{font-family:var(--display);font-size:var(--fs-xl);font-weight:620;letter-spacing:-.025em;text-transform:none}
h2{font-size:var(--fs-lg)}
h3,h4{font-size:var(--fs-md)}
.game-card .s-tag{font-size:var(--fs-micro)}
#chimera-route-breadcrumb{font-size:var(--fs-micro);letter-spacing:.14em}
/* --- Elevation: three levels, nothing invented per component -------------- */
.card,.stat-card,.table-wrap,.chimera-home-panel{box-shadow:var(--shadow-panel)}
.modal,.modal-shell,.import-wizard,#toast-container .toast,.chimera-command-palette{box-shadow:var(--shadow-float)}
.btn,.chimera-toolbar-button,.chimera-route-link,.fbtn,.badge,.pill{box-shadow:var(--shadow-flat)}
/* --- Surfaces: inherit the radius scale, stop hand-rolling values --------- */
.card,.stat-card,.table-wrap,.backup-card,.progress-area,.chimera-home-panel,.catalog-health-strip{border-radius:var(--radius)}
.btn,.fbtn,input,select,textarea,.filter-select,.search-input,
.chimera-domain-button,.modal-workspace-links button{border-radius:var(--radius-sm)}
.modal,.modal-shell,.import-wizard{border-radius:var(--radius-lg)}
.badge,.pill,.s-tag,.bk-badge{border-radius:999px}
/* --- Controls: one filled button per view --------------------------------- */
/* Teal was acting as a second primary. It becomes an outlined action and the
accent fill stays the single call to action. */
.btn-teal{
background:transparent;
color:var(--teal);
border-color:rgba(34,199,232,.42);
font-weight:600;
}
.btn-teal:hover:not(:disabled){
background:rgba(34,199,232,.1);
border-color:var(--teal);
color:var(--teal);
}
.btn-accent{background:var(--accent-d);border-color:var(--accent-d);color:#fff}
.btn-accent:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:#1a1220}
.btn{min-height:36px;font-size:var(--fs-xs);display:inline-flex;align-items:center;justify-content:center;gap:7px}
/* --- Forms: label above field, one control height, full card width -------- */
.card .form-row,.card .form-grid{width:100%}
.card label{flex-direction:column;align-items:flex-start;gap:6px;font-size:var(--fs-xs)}
.card label.toggle-label,.card .toggle-row{flex-direction:row;align-items:center}
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),
select,textarea{min-height:40px;font-size:var(--fs-xs)}
/* The accent picker was a raw native colour input sitting outside the system. */
.color-swatch{
position:relative;width:40px;height:40px;flex:none;overflow:hidden;
border:1px solid var(--border);border-radius:var(--radius-sm);
background:var(--accent-d);
}
.color-picker-input{
position:absolute;inset:-4px;width:calc(100% + 8px);height:calc(100% + 8px);
padding:0;border:0;background:transparent;cursor:pointer;opacity:0;
}
.color-hex-label{
width:11ch;font-family:var(--mono);font-size:var(--fs-xs);
text-transform:uppercase;text-align:center;
}
/* --- Edges: error placement, toast clearance, orphaned rails -------------- */
/* The header banner and the toast reported the same failure twice. The banner
keeps it (state persists); the toast is suppressed for route-load errors. */
.chimera-route-availability{
max-width:52ch;padding:7px 11px;line-height:1.45;
background:rgba(228,173,85,.1);border:1px solid rgba(228,173,85,.3);
color:var(--yellow);white-space:normal;
}
/* Toast stack clears the floating import button instead of landing under it. */
#toast-container{bottom:calc(var(--statusbar-h) + 74px)}
/* The catalog health rail was floating in the grid with no container, and its
text values were rendered at the numeral display size. */
.catalog-health-strip{
background:var(--surface2);
border:1px solid var(--border-soft);
padding:6px 4px;
}
#game-catalog-health{font-size:var(--fs-xs)}
#game-catalog-health strong,#game-catalog-health b{
font-family:var(--display);font-size:var(--fs-lg);font-weight:600;
line-height:1.15;font-variant-numeric:tabular-nums;
}
/* Compact settings rows: a class, not 17 copies of the same inline style. */
.setting-label{
flex:none;
white-space:nowrap;
font-size:var(--fs-xs);
color:var(--text-dim);
}
.form-row>.setting-label,.color-picker-row>.setting-label{align-self:center}
/* Last two off-scale sizes: a button inheriting the UA default, and a glyph. */
#sidebar-donate{font-size:var(--fs-xs)}
.chimera-command-search-icon,.game-library-search>span[aria-hidden]{font-size:var(--fs-md);line-height:1}
/* ============================================================================
Library: poster-first cards
The grid is the artwork. Actions live on the art and only when reached;
the card itself opens the detail modal, so it carries no button stack.
========================================================================== */
#games-grid{
grid-template-columns:repeat(auto-fill,minmax(170px,1fr));
gap:20px 18px;
align-items:start;
}
.game-card{
display:flex;flex-direction:column;gap:0;
background:0 0;border:0;box-shadow:none;padding:0;
overflow:visible;
}
/* --- the poster ---------------------------------------------------------- */
.game-card-art{
position:relative;
aspect-ratio:var(--game-cover-ratio, 2 / 3);
overflow:hidden;
border-radius:var(--radius);
background:var(--surface2);
border:1px solid var(--border-soft);
box-shadow:0 12px 28px -14px rgba(0,0,0,.75);
transition:box-shadow .24s cubic-bezier(.2,.8,.2,1),border-color .24s;
}
.game-card:hover .game-card-art,
.game-card:focus-visible .game-card-art{
border-color:rgba(var(--accent-rgb),.5);
box-shadow:0 22px 46px -16px rgba(0,0,0,.85),0 0 0 1px rgba(var(--accent-rgb),.16);
}
.game-card-cover{width:100%;height:100%;object-fit:cover;display:block}
/* Coverless titles get a mark derived from their own title ID, so a grid with
no artwork still reads as a shelf of distinct things. */
.game-card-cover-fallback.is-visible{
position:absolute;inset:0;aspect-ratio:auto;
padding:14px;gap:4px;
background:
radial-gradient(circle at 74% 16%, hsl(var(--card-hue,265) 70% 46% / .42), transparent 46%),
radial-gradient(circle at 18% 88%, hsl(calc(var(--card-hue,265) + 46) 68% 40% / .34), transparent 50%),
linear-gradient(158deg,#1a1422,#0a0b11);
}
.game-card-cover-fallback.is-visible::before{
top:14%;right:-22%;width:86%;
border-color:hsl(var(--card-hue,265) 80% 78% / .22);
}
.game-card-cover-fallback strong{font-size:var(--fs-md);max-width:13ch;line-height:1.12}
.game-card-cover-fallback span{color:hsl(var(--card-hue,265) 85% 80% / .9)}
/* --- state marker: a corner chip, not a banner across the poster ---------- */
.game-card-sync{
position:absolute;top:10px;left:10px;right:auto;
display:inline-flex;align-items:center;gap:6px;
max-width:calc(100% - 20px);
padding:4px 9px;
font-size:var(--fs-micro);font-weight:600;letter-spacing:.02em;
color:var(--text);background:rgba(10,8,14,.72);
border:1px solid var(--border-soft);border-radius:999px;
backdrop-filter:blur(10px);
overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.game-card-sync.pending::before{
content:"";flex:none;width:6px;height:6px;border-radius:50%;
background:var(--yellow);box-shadow:0 0 0 3px rgba(228,173,85,.18);
}
/* --- actions: on the art, on reach --------------------------------------- */
.game-card-actions{
position:absolute;left:0;right:0;bottom:0;
display:flex;gap:6px;padding:10px;
background:linear-gradient(transparent,rgba(8,6,12,.82) 42%);
opacity:0;transform:translateY(6px);
z-index:4;
transition:opacity .2s,transform .2s cubic-bezier(.2,.8,.2,1);
}
.game-card:hover .game-card-actions,
.game-card:focus-within .game-card-actions{opacity:1;transform:none}
.game-card-actions .btn{flex:1;min-height:32px;padding-inline:8px;font-size:var(--fs-micro)}
/* Pointer-less and reduced-motion contexts never get hover, so pin them open. */
@media (hover:none){
.game-card-actions{position:static;opacity:1;transform:none;background:0 0;padding:8px 0 0}
}
@media (prefers-reduced-motion:reduce){
.game-card-art,.game-card-actions{transition:none}
}
/* --- caption ------------------------------------------------------------- */
.game-card-body{
display:flex;flex-direction:column;gap:3px;
padding:10px 2px 0;background:0 0;border:0;
}
.game-card-heading strong{
display:block;font-size:var(--fs-xs);font-weight:600;line-height:1.3;color:var(--text);
overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.game-card-meta{
font-family:var(--mono);font-size:var(--fs-micro);color:var(--text-muted);
overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.game-card .game-card-status{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
/* The sync chip was a full-width purple banner in uppercase mono across the
poster. It is a state marker, not a headline. */
.game-card-sync,
.game-card-sync.pending{
color:var(--text);
background:rgba(10,8,14,.72);
border-color:var(--border-soft);
font:600 var(--fs-micro)/1.2 var(--ui);
letter-spacing:.01em;
text-transform:none;
right:auto;
}
/* A coverless poster carries the title as its artwork, so the caption below it
would only repeat itself. Show the caption title when real cover art exists. */
/* Two art treatments already print the title onto the poster: the generated
fallback, and the "case" used when only a square icon exists. In both the
caption below would just repeat it. */
.game-card:has(.game-card-cover-fallback.is-visible) .game-card-heading,
.game-card:has(.game-card-cover-caption) .game-card-heading{display:none}
.game-card:has(.game-card-cover-fallback.is-visible) .game-card-body,
.game-card:has(.game-card-cover-caption) .game-card-body{padding-top:8px}
/* ============================================================================
Title detail: hero header
The dialog opened on a fifteen-row key/value table with an empty banner bar.
The header now carries the artwork, the name and the identity chips.
========================================================================== */
#modal-header{border-bottom:0}
#modal-banner{
filter:blur(18px) saturate(1.15);
transform:scale(1.25);
opacity:.55;
}
/* No artwork: a ground derived from the title's own ID, same seed as the card. */
#modal-header::before{
content:"";position:absolute;inset:0;
background:
radial-gradient(circle at 78% 8%, hsl(var(--modal-hue,265) 72% 48% / .40), transparent 52%),
radial-gradient(circle at 12% 96%, hsl(calc(var(--modal-hue,265) + 46) 66% 42% / .30), transparent 55%),
linear-gradient(160deg,#181322,#0b0910);
}
#modal-banner.has-art{opacity:.78}
/* Scrim so the title always holds against whatever artwork loads. */
#modal-header::after{
content:"";position:absolute;inset:0;pointer-events:none;
background:linear-gradient(180deg,rgba(10,8,14,.30),rgba(18,14,23,.86) 72%,var(--surface));
}
#modal-header-content{position:relative;z-index:2}
#modal-icon{
width:84px!important;height:84px!important;
border-radius:var(--radius-sm)!important;
border:1px solid rgba(255,255,255,.14);
box-shadow:0 16px 34px -12px rgba(0,0,0,.9)!important;
}
#modal-header h2#modal-title{text-wrap:balance}
#modal-subtitle{
margin-top:6px;
font-family:var(--mono);
font-size:var(--fs-micro);
color:var(--text-dim);
letter-spacing:.04em;
}
#modal-close{
position:relative;z-index:3;
width:36px;height:36px;display:grid;place-items:center;
border-radius:50%;
background:rgba(10,8,14,.55);border:1px solid var(--border-soft);
color:var(--text);backdrop-filter:blur(10px);
}
#modal-close:hover{background:rgba(10,8,14,.8);border-color:var(--accent)}
/* Workspace links read as destinations, not as a second toolbar. */
.modal-workspace-links{margin-top:12px;gap:6px}
.modal-workspace-links button{
background:rgba(10,8,14,.5)!important;
border-color:var(--border-soft)!important;
backdrop-filter:blur(10px);
}
/* --- metric tiles --------------------------------------------------------- */
.modal-metrics{
display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));
gap:1px;background:var(--border-soft);
border:1px solid var(--border-soft);border-radius:var(--radius);
overflow:hidden;margin-bottom:18px;
}
.modal-metric{
display:flex;flex-direction:column;gap:5px;
padding:14px 16px;background:var(--surface2);
}
.modal-metric span{
font-family:var(--mono);font-size:var(--fs-micro);
letter-spacing:.11em;text-transform:uppercase;color:var(--text-muted);
}
.modal-metric strong{
font-family:var(--display);font-size:var(--fs-md);font-weight:600;
color:var(--text);font-variant-numeric:tabular-nums;line-height:1.15;
}
.modal-metric.is-ok strong{color:var(--green)}
.modal-metric.is-warn strong{color:var(--yellow)}
.modal-metric.is-idle strong{color:var(--text-muted)}
/* --- tab strip: fade the overflow instead of showing a raw scrollbar ------- */
.modal-tabs{
position:relative;
scrollbar-width:none;
-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 44px),transparent);
mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 44px),transparent);
}
.modal-tabs::-webkit-scrollbar{height:0}
/* --- metadata table: let absent values recede ----------------------------- */
.detail-table th{
font-family:var(--ui);font-size:var(--fs-xs);font-weight:500;
letter-spacing:0;text-transform:none;color:var(--text-muted);
}
.detail-table td{font-size:var(--fs-xs)}
.detail-table td{color:var(--text)}
/* ============================================================================
Title detail: subsystem rail
Thirteen subsystems sat in a horizontal tab strip that overflowed and had to
be scrolled to be read. The same buttons become a vertical rail — every
destination scannable at once, no horizontal scroll, and room for the summary
to breathe. Structure is untouched: #modal already has exactly four children,
so this is a grid re-layout, not a rebuild.
Below 760px the original horizontal strip is kept; a rail costs too much width.
========================================================================== */
@media (min-width:760px){
#modal{
display:grid;
grid-template-columns:206px minmax(0,1fr);
grid-template-rows:auto minmax(0,1fr) auto;
}
#modal-header{grid-column:1/-1;grid-row:1}
#modal-body{grid-column:2;grid-row:2;min-height:0;overflow-y:auto}
#modal-footer{grid-column:1/-1;grid-row:3}
.modal-tabs{
grid-column:1;grid-row:2;
display:flex;flex-direction:column;align-items:stretch;
gap:2px;
min-height:0;
padding:14px 10px 18px;
overflow-x:hidden;overflow-y:auto;
border-bottom:0;
border-right:1px solid var(--border-soft);
background:rgba(10,8,14,.28);
/* cancel the horizontal overflow fade */
-webkit-mask-image:none;mask-image:none;
scrollbar-width:thin;
}
.modal-tabs::before{
content:"Subsystems";
padding:0 11px 9px;
font-family:var(--mono);font-size:var(--fs-micro);
letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);
}
.modal-tab{
flex:0 0 auto;
justify-content:flex-start;
min-height:34px;
margin-bottom:0;
padding:7px 11px;
text-align:left;
border-bottom:0;
border-left:2px solid transparent;
border-radius:var(--radius-sm);
font-size:var(--fs-xs);
}
.modal-tab:hover{background:rgba(255,255,255,.045)}
.modal-tab.active{
color:var(--text);
background:rgba(var(--accent-rgb),.16);
border-bottom-color:transparent;
border-left-color:var(--accent);
}
/* the count badge trails the label instead of crowding it */
.modal-tab .tab-badge{margin-left:auto}
}
/* ============================================================================
Utilities
index.html carried 275 inline style attributes. Inline styles beat every
stylesheet rule without !important, which is why the type scale could not
reach the settings labels no matter what the CSS said. These six recurring
declarations are now classes; the remaining ~220 are per-site layout and
dynamic values (progress widths) that need judgement, not a find-replace.
========================================================================== */
.u-flex-1{flex:1}
.u-push{margin-left:auto}
.u-row-8{align-items:center;gap:8px}
.u-fs-micro{font-size:var(--fs-micro)}
.u-field-md{min-width:150px}
.u-field-sm{width:140px}
/* <small> otherwise inherits the browser's 0.83em and compounds below the floor. */
small,.hint,.toggle-hint{font-size:var(--fs-xs)}
/* An unclassed <button> otherwise takes the UA default (13.33px) and sits off
the scale. Any class rule still wins, so styled buttons are unaffected. */
button{font-size:inherit}
/* Spacing utilities on the 4/8 scale the art direction specifies. These replace
56 ad-hoc inline margins that sat between steps (5, 6, 10, 14, 18px). */
.u-mt-4{margin-top:4px}
.u-mt-8{margin-top:8px}
.u-mt-12{margin-top:12px}
.u-mt-16{margin-top:16px}
.u-mb-4{margin-bottom:4px}
.u-mb-8{margin-bottom:8px}
.u-mb-12{margin-bottom:12px}
.u-mb-16{margin-bottom:16px}
+249
View File
@@ -0,0 +1,249 @@
#modal-overlay{position:fixed;inset:0;z-index:3000;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.7)}
#modal-overlay[hidden]{display:none}
#modal{display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border)}
#modal-header{position:relative;overflow:hidden;border-bottom:1px solid var(--border)}
#modal-banner{position:absolute;inset:0;background-position:center;background-size:cover;filter:blur(4px);transform:scale(1.12);transition:background-image .25s}
#modal-header-content{position:relative;display:flex;align-items:flex-start;justify-content:space-between}
#modal-header h2{color:#fff;font-size:18px;text-shadow:0 1px 4px rgba(0,0,0,.9)}
.modal-workspace-links{display:flex;flex-wrap:wrap}
.modal-workspace-links button{color:rgba(255,255,255,.86);font:inherit;cursor:pointer}
.modal-workspace-links button:hover,.modal-workspace-links button:focus-visible{color:#fff;border-color:var(--accent);outline:2px solid rgba(var(--accent-rgb),.25);outline-offset:1px}
#modal-close:hover{color:var(--red)}
#modal-body{display:flex;flex:1;flex-direction:column;gap:20px;overflow-y:auto}
#modal-footer{display:flex;gap:10px;border-top:1px solid var(--border)}
.detail-table{width:100%;border-collapse:collapse}
.detail-table tr{border-bottom:1px solid #1a1a1a}
.detail-table th{width:35%;padding:7px 0;color:var(--text-dim);font-size:12px;font-weight:500;text-align:left}
.detail-table td{padding:7px 0;font-size:12px}
#modal-backup-section h4{margin-bottom:10px;color:var(--text-dim);font-size:12px;font-weight:500}
#modal-backup-list{display:flex;flex-direction:column;gap:6px;list-style:none}
#modal-backup-list li{display:flex;justify-content:space-between;padding:8px 12px;color:var(--text-dim);font-size:12px;background:var(--surface2);border-radius:8px}
.modal-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--border)}
.modal-tab{display:flex;align-items:center;gap:6px;margin-bottom:-1px;color:var(--text-dim);background:none;border:0;border-bottom:2px solid transparent;cursor:pointer;transition:all .15s}
.modal-tab:hover{color:var(--text)}
.modal-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.tab-badge{display:inline-block;min-width:18px;height:18px;padding:0 4px;color:var(--accent);font-size:11px;font-weight:700;line-height:18px;text-align:center;background:rgba(var(--accent-rgb),.2);border-radius:12px}
.tab-badge:empty{display:none}
.modal-panel{display:none;flex-direction:column;gap:14px}
.modal-panel.active{display:flex}
.prospero-placeholder{padding:40px;color:var(--text-dim);font-size:12px;font-style:italic;text-align:center}
.patch-list,.dlc-list{display:flex;flex-direction:column;gap:8px;list-style:none}
.patch-item{display:flex;flex-direction:column;gap:6px;padding:10px 14px;background:var(--surface2);border-radius:8px}
.patch-item-latest{border-left:3px solid var(--teal);border-top-left-radius:0;border-bottom-left-radius:0}
.patch-header{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.patch-latest{flex-shrink:0;padding:2px 7px;color:var(--bg);font-size:11px;font-weight:700;background:var(--teal);border-radius:8px}
.patch-ver{color:var(--accent);font-size:12px;font-weight:700}
.patch-meta{display:flex;flex-wrap:wrap;gap:14px;margin-left:auto;color:var(--text-dim);font-size:12px}
.patch-changelog{padding-top:4px;color:var(--text-dim);font-size:12px;line-height:1.5;white-space:pre-wrap;border-top:1px solid rgba(255,255,255,.06)}
.dlc-item{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--surface2);border-radius:8px}
.dlc-icon{width:40px;height:40px;flex-shrink:0;object-fit:cover;background:var(--surface3);border-radius:8px}
.dlc-name{font-size:12px;font-weight:500}
.dlc-meta{color:var(--text-dim);font-size:12px}
.region-pills{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0}
.region-pill{display:flex;align-items:center;gap:6px;padding:6px 14px;color:var(--text);font-size:12px;background:var(--surface2);border:1.5px solid var(--border);border-radius:16px;cursor:pointer;transition:all .15s}
.region-pill:hover{color:var(--accent);border-color:var(--accent)}
.region-pill.owned{color:var(--teal);border-color:var(--teal)}
.region-pill.owned::after{font-size:11px;content:' ✓'}
.game-description{margin-top:6px;padding:12px 14px;color:var(--text-dim);font-size:12px;line-height:1.6;background:var(--surface2);border-radius:8px}
.backpork-list{display:flex;flex-direction:column;gap:12px}
.backpork-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.backpork-card-header{padding:14px 20px;display:flex;align-items:center;gap:16px}
.backpork-badge{padding:5px 14px;border-radius:16px;font-size:14px;font-weight:700;background:rgba(3,218,198,.15);color:var(--teal);border:1.5px solid var(--teal);flex-shrink:0;min-width:64px;text-align:center}
.backpork-info{flex:1;min-width:0}
.backpork-path{font-size:12px;color:var(--text-dim);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.backpork-count{font-size:12px;color:var(--text-dim);margin-top:2px}
.backpork-count strong{color:var(--accent)}
.backpork-actions{display:flex;gap:8px;flex-shrink:0}
.backpork-games{border-top:1px solid var(--border);display:flex;flex-direction:column}
.backpork-game-row{padding:9px 20px 9px 28px;display:flex;align-items:center;gap:12px;border-bottom:1px solid rgba(255,255,255,.04)}
.backpork-game-row:last-child{border-bottom:none}
.backpork-game-icon{width:32px;height:32px;border-radius:8px;object-fit:cover;background:var(--surface2);flex-shrink:0}
.backpork-game-info{flex:1;min-width:0}
.backpork-game-title{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.backpork-game-id{font-size:11px;color:var(--text-dim)}
.backpork-game-actions{display:flex;gap:6px;flex-shrink:0}
.backpork-porked-pill{font-size:11px;padding:2px 7px;border-radius:12px;background:rgba(3,218,198,.15);color:var(--teal);border:1px solid rgba(3,218,198,.35);white-space:nowrap}
/* ── Firmware label pills (in game rows) ─────────────────────────────────────── */
.fw-pill{display:inline-block;padding:1px 7px;border-radius:12px;font-size:11px;font-weight:700;background:rgba(3,218,198,.15);color:var(--teal);border:1px solid rgba(3,218,198,.35);margin-right:3px;white-space:nowrap}
.fw-pill.fw-pill-patched{background:rgba(132,204,22,.15);color:#84cc16;border-color:rgba(132,204,22,.35)}
.s-tag.s-patched{background:rgba(132,204,22,.13);color:#84cc16;border:1px solid rgba(132,204,22,.3)}
/* ── Manage panel ────────────────────────────────────────────────────────────── */
.manage-section{display:flex;flex-direction:column;gap:10px}
.manage-section-title{font-size:12px;color:var(--text-dim);font-weight:500;padding-bottom:8px;border-bottom:1px solid var(--border)}
#manage-backup-list{display:flex;flex-direction:column;gap:6px}
/* Backpork version entries in Manage tab */
#manage-backpork-list{display:flex;flex-direction:column;gap:6px}
.manage-backpork-entry{background:var(--surface2);border-radius:8px;padding:10px 14px;display:flex;align-items:center;gap:12px}
.manage-backpork-fw{padding:3px 10px;border-radius:16px;font-size:12px;font-weight:700;background:rgba(3,218,198,.15);color:var(--teal);border:1px solid rgba(3,218,198,.35);flex-shrink:0}
.manage-backpork-path{flex:1;font-size:11px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.manage-porked-status{font-size:12px;padding:7px 10px;border-radius:8px;background:rgba(3,218,198,.08);border:1px solid rgba(3,218,198,.25);color:var(--teal);display:flex;align-items:center;gap:8px}
.manage-porked-status .clear-pork{margin-left:auto;font-size:11px;cursor:pointer;color:var(--text-dim);background:none;border:none}
.manage-backup-item{background:var(--surface2);border-radius:8px;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border:1.5px solid transparent;transition:border-color .15s}
.manage-item-selected{border-color:var(--teal)}
.manage-backup-info{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.manage-filename{font-size:12px;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}
.manage-size{font-size:12px;color:var(--text-dim);white-space:nowrap}
.manage-backup-actions{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap}
#manage-upload-log{margin-top:6px;font-family:'Consolas',monospace;font-size:12px}
/* ── Hash verification ───────────────────────────────────────────────────────── */
#modal-hash-section{display:flex;flex-direction:column;gap:10px}
.hash-section-header{display:flex;align-items:center;gap:10px}
.hash-section-header h4{font-size:12px;color:var(--text-dim);font-weight:500}
#modal-hash-list{display:flex;flex-direction:column;gap:6px}
.hash-entry{background:var(--surface2);border-radius:8px;padding:8px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.hash-entry-info{display:flex;align-items:center;gap:10px;min-width:0}
.hash-entry-status{display:flex;align-items:center;gap:8px;flex-shrink:0}
.hash-filename{font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.hash-value{font-size:11px;color:var(--text-dim);font-family:'Consolas',monospace;white-space:nowrap}
.hash-badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600;white-space:nowrap}
.hash-none{background:rgba(158,158,158,.15);color:var(--text-dim)}
.hash-local{background:rgba(var(--accent-rgb),.2);color:var(--accent)}
.hash-community{background:rgba(3,218,198,.2);color:var(--teal);border:1px solid rgba(3,218,198,.35)}
.hash-mismatch{background:rgba(207,102,121,.18);color:var(--red);border:1px solid rgba(207,102,121,.35)}
/* Inline game-list hash status tags (s-tag variants) */
.s-tag.s-hash-fail{background:rgba(207,102,121,.18);color:var(--red);border-color:rgba(207,102,121,.35)}
.s-tag.s-hash-ok{background:rgba(3,218,198,.15);color:var(--teal);border-color:rgba(3,218,198,.3)}
.s-tag.s-hash-local{background:rgba(var(--accent-rgb),.15);color:var(--accent);border-color:rgba(var(--accent-rgb),.3)}
/* Backpork game-row hash pills */
.hash-pill-fail{background:rgba(207,102,121,.18);color:var(--red);border:1px solid rgba(207,102,121,.35);display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600}
.hash-pill-ok{background:rgba(3,218,198,.15);color:var(--teal);border:1px solid rgba(3,218,198,.3);display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600}
.hash-pill-local{background:rgba(var(--accent-rgb),.15);color:var(--accent);border:1px solid rgba(var(--accent-rgb),.3);display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600}
/* Hash Database tab card layout */
.hash-db-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:16px}
.hash-db-info-row{display:flex;gap:32px;flex-wrap:wrap;align-items:flex-start;margin-bottom:14px}
.hash-db-info-col{display:flex;flex-direction:column;gap:4px}
.hash-db-label{font-size:11px;color:var(--text-dim);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.hash-db-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
/* Progress bar */
.hash-progress-bar{height:4px;background:var(--surface3);border-radius:8px;overflow:hidden}
.hash-progress-fill{height:100%;background:var(--teal);border-radius:8px;width:0%;transition:width .2s}
.hash-progress-label{font-size:11px;color:var(--text-dim);margin-top:5px}
/* Inline confirm for re-verify */
.hash-confirm{display:flex;align-items:center;gap:6px}
.hash-confirm-msg{font-size:12px;color:var(--yellow);white-space:nowrap}
/* ── Color picker ────────────────────────────────────────────────────────────── */
/* ── System View Hotkey editor ───────────────────────────────────────────── */
.hotkey-grid{display:grid;grid-template-columns:1fr auto;gap:8px 20px;align-items:center;max-width:360px}
.hotkey-label{font-size:12px;color:var(--text-dim)}
.hotkey-input{width:72px;text-align:center;font-family:'Consolas','SF Mono',monospace;font-size:12px;background:#1a1a1a;border:1px solid var(--border);border-radius:8px;color:var(--text);padding:5px 8px;cursor:pointer;transition:border-color .15s}
.hotkey-input:focus{outline:none;border-color:var(--accent);background:#111}
.hotkey-input.capturing{border-color:var(--yellow);color:var(--yellow)}
.color-picker-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.color-picker-wrap{display:flex;align-items:center;gap:10px}
.color-swatch{width:36px;height:36px;border-radius:8px;border:2px solid var(--border);cursor:pointer;flex-shrink:0;transition:border-color .15s;position:relative;overflow:hidden}
.color-swatch:hover{border-color:var(--accent)}
/* Hide the native input but keep it functional and clickable */
input[type="color"].color-picker-input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;border:none;padding:0}
.color-hex-label{font-family:'Consolas',monospace;font-size:12px;color:var(--text);background:var(--bg);border:1.5px solid var(--border);border-radius:8px;padding:6px 10px;width:96px;text-transform:uppercase;outline:none;transition:border-color .2s}
.color-hex-label:focus{border-color:var(--accent)}
/* ── Firmware filter row ─────────────────────────────────────────────────────── */
.firmware-filter-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fw-filter-label{font-size:12px;color:var(--text-dim);white-space:nowrap}
.fwbtn{padding:4px 12px;border-radius:16px;border:1.5px solid rgba(3,218,198,.4);background:transparent;color:var(--teal);font-size:12px;cursor:pointer;transition:all .15s}
.fwbtn:hover{background:rgba(3,218,198,.1)}
.fwbtn.active{background:var(--teal);border-color:var(--teal);color:var(--bg);font-weight:700}
/* ── Confirm dialog ──────────────────────────────────────────────────────────── */
#confirm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:9000}
#confirm-overlay[hidden]{display:none}
#confirm-dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px 32px;max-width:400px;width:90%;box-shadow:0 8px 40px rgba(0,0,0,.6)}
#confirm-message{font-size:14px;line-height:1.6;color:var(--text);margin:0 0 20px;white-space:pre-wrap;word-break:break-word}
.confirm-buttons{display:flex;gap:10px;justify-content:flex-end}
/* ── Selective Clear dialog ─────────────────────────────────────────── */
#clear-select-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:9050}
#clear-select-overlay[hidden]{display:none}
#clear-select-dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px 32px;max-width:420px;width:90%;box-shadow:0 8px 40px rgba(0,0,0,.6)}
.clear-opt{display:flex;flex-direction:row;align-items:center;gap:10px;cursor:pointer;padding:8px 12px;border-radius:8px;background:var(--surface-2);transition:background .15s}
.clear-opt:hover{background:var(--surface-3,rgba(255,255,255,.08))}
.clear-opt input[type="checkbox"]{width:16px;height:16px;accent-color:var(--red,#f44);cursor:pointer;flex-shrink:0}
.clear-opt-label{font-size:12px;font-weight:600;color:var(--text);min-width:80px}
.clear-opt-hint{font-size:12px;color:var(--text-dim)}
/* ── DB row selection toolbar ──────────────────────────────────────── */
.db-row-toolbar{display:flex;align-items:center;gap:10px;padding:8px 12px;margin-bottom:6px;background:var(--surface-2);border-radius:8px;border:1px solid var(--border)}
.db-row-toolbar[hidden]{display:none}
.db-row-toolbar-count{font-size:12px;color:var(--accent);font-weight:600;margin-right:auto}
.db-pagebar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0 8px}
.db-pagebar > div{display:flex;gap:6px}
.db-row-cb{width:32px;text-align:center;padding:4px !important}
.db-row-cb input[type="checkbox"]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}
tr.db-row-selected{background:rgba(187,134,252,.1) !important}
tr.db-row-selected:hover{background:rgba(187,134,252,.18) !important}
/* ── Prompt (input) dialog ─────────────────────────────────────────── */
#prompt-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:9100}
#prompt-overlay[hidden]{display:none}
#prompt-dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px 32px;max-width:400px;width:90%;box-shadow:0 8px 40px rgba(0,0,0,.6)}
#prompt-message{font-size:14px;line-height:1.6;color:var(--text);margin:0 0 12px}
#prompt-input{width:100%;box-sizing:border-box;margin-bottom:16px}
/* ── Admin-required warning modal ────────────────────────────────────── */
#admin-warn-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:9100}
#admin-warn-overlay[hidden]{display:none}
#admin-warn-dialog{background:var(--surface);border:1px solid var(--red,#c0392b);border-radius:var(--radius);padding:28px 32px;max-width:420px;width:92%;box-shadow:0 8px 40px rgba(0,0,0,.7);text-align:center}
.admin-warn-icon{font-size:36px;margin-bottom:10px}
.admin-warn-title{font-size:16px;font-weight:700;color:var(--red,#e05);margin:0 0 14px}
.admin-warn-body{font-size:12px;line-height:1.6;color:var(--text);margin:0 0 12px;text-align:left}
.admin-warn-hint{font-size:12px;line-height:1.6;color:var(--text-dim);background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:8px;padding:8px 12px;margin:0 0 16px;text-align:left}
#admin-warn-overlay[hidden]{display:none !important}
.conv-admin-warn{color:var(--red,#e05);border-color:var(--red,#e05) !important;background:rgba(192,57,43,.12) !important}
/* ── Manage Jailbreak ────────────────────────────────────────────────────────── */
.jb-card{display:flex;flex-direction:column;gap:16px}
.jb-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:8px;letter-spacing:.5px;text-transform:uppercase}
.jb-badge-soon{background:rgba(255,255,255,.08);color:var(--text-dim)}
.jb-tool-body{display:flex;flex-direction:column;gap:12px}
.jb-section{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:8px;background:rgba(255,255,255,.03);border:1px solid var(--border)}
.jb-section-title{font-size:12px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.6px}
.jb-status-row{display:flex;align-items:center;gap:12px;font-size:12px}
.jb-label{color:var(--text-dim);min-width:160px;flex-shrink:0}
.jb-value{color:var(--text);font-weight:500}
.jb-actions{display:flex;gap:8px;flex-wrap:wrap}
.jb-list-placeholder{font-size:12px;font-style:italic;color:var(--text-dim);padding:12px;border-radius:8px;background:rgba(255,255,255,.02);text-align:center}
/* ── Auto-Backpork Generator panel ──────────────────────────────────────────── */
.bpgen-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}
.bpgen-summary{padding:12px 18px;cursor:pointer;user-select:none;display:flex;align-items:center;gap:8px;list-style:none;border-radius:var(--radius)}
.bpgen-summary::-webkit-details-marker{display:none}
.bpgen-summary::before{content:'▶';font-size:11px;color:var(--text-dim);transition:transform .15s;flex-shrink:0}
details[open] .bpgen-summary::before{transform:rotate(90deg)}
.bpgen-summary-icon{font-size:16px}
.bpgen-body{padding:0 18px 16px;display:flex;flex-direction:column;gap:8px}
.bpgen-row{align-items:center;gap:10px}
.bpgen-label{font-size:12px;color:var(--text-dim);min-width:140px;flex-shrink:0}
.bpgen-status{flex:1}
.bpgen-status.status-ok{color:var(--teal)}
.bpgen-status.status-error{color:var(--danger,#e74c3c)}
.bpgen-status.status-warn{color:#f0a500}
.bpgen-game-picker{border:1px solid var(--border);border-radius:8px;margin:0 0 4px;overflow:hidden}
.bpgen-picker-header{background:var(--surface2);padding:6px 10px;display:flex;align-items:center;gap:8px}
.bpgen-picker-header .hint{flex:1}
.bpgen-game-list{max-height:220px;overflow-y:auto}
.bpgen-game-row{display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.04);font-size:12px}
.bpgen-game-row:last-child{border-bottom:none}
.bpgen-game-row:hover{background:rgba(255,255,255,.04)}
.bpgen-game-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bpgen-game-id{font-size:11px;color:var(--text-dim);flex-shrink:0}
.bpgen-loading{padding:10px;color:var(--text-dim);font-size:12px}
.bpgen-progress-bar-wrap{height:6px;background:var(--surface2);border-radius:8px;overflow:hidden}
.bpgen-progress-bar{height:100%;background:var(--teal);border-radius:8px;transition:width .3s ease}
.bpgen-log{font-family:monospace;font-size:11px;color:var(--text-dim);max-height:180px;overflow-y:auto;margin-top:6px;background:var(--surface2);border-radius:8px;padding:6px 8px}
.bpgen-log-row{line-height:1.5}
.bpgen-log-error{color:var(--danger,#e74c3c)}
/* ── Fakelib Manager sub-panel ───────────────────────────────────────────────── */
.bpgen-fl-panel{border:1px solid var(--border);border-radius:8px;background:var(--surface2);margin-top:2px;overflow:hidden}
.bpgen-fl-summary{padding:8px 12px;cursor:pointer;user-select:none;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;list-style:none}
.bpgen-fl-summary::-webkit-details-marker{display:none}
.bpgen-fl-summary::before{content:'▶';font-size:11px;color:var(--text-dim);transition:transform .15s;flex-shrink:0}
details[open] .bpgen-fl-summary::before{transform:rotate(90deg)}
.bpgen-fl-body{padding:0 12px 12px;display:flex;flex-direction:column;gap:6px}
.bpgen-fl-badge{font-size:11px;font-weight:normal;padding:2px 7px;border-radius:12px;margin-left:auto}
.bpgen-fl-badge-ok{background:rgba(0,200,150,.15);color:var(--teal)}
.bpgen-fl-badge-warn{background:rgba(240,165,0,.15);color:#f0a500}
/* 10-pair grid */
.bpgen-fl-grid{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.bpgen-fl-pair{display:flex;flex-direction:column;align-items:center;gap:2px;width:62px;padding:6px 4px;border-radius:8px;cursor:pointer;border:1px solid var(--border);background:var(--surface);font-size:11px;transition:border-color .15s,background .15s}
.bpgen-fl-pair:hover{border-color:var(--teal);background:rgba(0,200,150,.06)}
.bpgen-fl-pair-active{border-color:var(--teal) !important;background:rgba(0,200,150,.12) !important}
.bpgen-fl-pair-ok{border-color:var(--teal)}
.bpgen-fl-pair-missing{border-color:var(--border);opacity:.75}
.bpgen-fl-pair-num{font-size:12px;font-weight:700}
.bpgen-fl-pair-icon{font-size:14px}
.bpgen-fl-pair-ok .bpgen-fl-pair-icon{color:var(--teal)}
.bpgen-fl-pair-missing .bpgen-fl-pair-icon{color:var(--text-dim)}
.bpgen-fl-pair-label{font-size:11px;color:var(--text-dim)}
+14
View File
@@ -0,0 +1,14 @@
.etahen-link-card { margin-bottom: 14px; border-color: color-mix(in srgb, var(--accent) 45%, var(--border)); }
.etahen-link-kicker { display: block; margin-bottom: 4px; color: var(--accent); font-size:11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.etahen-link-health { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.etahen-link-health-item { min-width: 0; padding: 12px; border: 1px solid var(--border); border-radius:12px; background: color-mix(in srgb, var(--card) 88%, transparent); }
.etahen-link-health-item span, .etahen-link-health-item strong { display: block; overflow-wrap: anywhere; }
.etahen-link-health-item span { color: var(--text-dim); font-size:11px; }
.etahen-link-health-item strong { margin-top: 4px; }
.etahen-link-health-item.state-online strong { color: var(--green); }
.etahen-link-health-item.state-offline strong { color: var(--red); }
.etahen-link-alert { margin-top: 10px; padding: 10px 12px; border-radius:8px; background: color-mix(in srgb, var(--accent) 10%, transparent); }
.etahen-link-alert.is-critical { border: 2px solid var(--red); background: color-mix(in srgb, var(--red) 14%, transparent); font-weight: 700; }
#etahen-link-root:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius:12px; }
@media (max-width: 700px) { .etahen-link-health { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .etahen-link-card *, .etahen-link-card *::before, .etahen-link-card *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
+576
View File
@@ -0,0 +1,576 @@
.payload-manager-connect-row{display:flex;align-items:center;gap:14px;margin:12px 0;flex-wrap:wrap}
.payload-manager-connect-row label{display:inline-flex;align-items:center;gap:8px;color:var(--text-dim);font-size:12px}
.payload-manager-connect-row input{width:88px}
.payload-manager-frame{width:100%;min-height:680px;border:1px solid var(--border);border-radius:12px;background:#080a0f}
.payload-workspace-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}
.payload-workspace-nav button{display:grid;grid-template-columns:26px minmax(0,1fr);gap:1px 8px;align-items:center;min-width:0;padding:10px;color:var(--text);text-align:left;border:1px solid var(--border);border-radius:12px;background:var(--surface);cursor:pointer}.payload-workspace-nav button:hover,.payload-workspace-nav button:focus-visible{border-color:color-mix(in srgb,var(--accent) 60%,var(--border));background:color-mix(in srgb,var(--accent) 7%,var(--surface))}
.payload-workspace-nav button>span{grid-row:1/3;display:grid;width:26px;height:26px;place-items:center;color:var(--accent);font-weight:700;border-radius:50%;background:color-mix(in srgb,var(--accent) 12%,transparent)}
.payload-workspace-nav strong{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.payload-workspace-nav small{overflow:hidden;color:var(--text-dim);font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.jb-card{scroll-margin-top:108px;transition:border-color .25s ease,box-shadow .25s ease}
.payload-workspace-highlight{border-color:var(--accent)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}
@media(max-width:900px){.payload-workspace-nav{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:520px){.payload-workspace-nav{grid-template-columns:1fr}
}
/* ── PSNotify log ─────────────────────────────────────────────────────────── */
.psn-history{display:flex;flex-direction:column;gap:4px}
.psn-entry{display:flex;align-items:baseline;gap:10px;padding:6px 10px;border-radius:8px;font-size:12px;background:rgba(255,255,255,.03)}
.psn-entry.psn-ok{border-left:2px solid var(--teal)}
.psn-entry.psn-fail{border-left:2px solid var(--red)}
.psn-entry-ts{color:var(--text-dim);white-space:nowrap;flex-shrink:0;font-family:monospace}
.psn-entry-msg{font-weight:600}
.psn-entry-sub{color:var(--text-dim)}
.psnotify-page-subtitle{flex:1 1 320px;margin-left:14px}
#psn-page-readiness{margin-left:auto}
.psnotify-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr);gap:12px;align-items:start}
.psnotify-side{display:grid;gap:12px}
.psnotify-templates{display:flex;gap:6px;margin:12px 0;flex-wrap:wrap}
.psnotify-compose-card label{position:relative}
.psnotify-counter{position:absolute;right:9px;bottom:8px;color:var(--text-dim);font-size:11px;pointer-events:none}
.psnotify-compose-card input{padding-right:54px}
.psnotify-preview{display:flex;flex-direction:column;gap:3px;margin-top:12px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border));border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 10%,var(--surface2)),var(--surface2))}
.psnotify-preview>span{color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.psnotify-preview>strong{font-size:14px}
.psnotify-preview>small{color:var(--text-dim)}
.psnotify-lab.collapsed>:not(.card-header){display:none !important}
.psnotify-lab .card-header{margin-bottom:0}
.psnotify-lab:not(.collapsed) .card-header{margin-bottom:12px}
.psnotify-history-card{margin-top:12px}
.psnotify-lab{margin-top:12px}
@media (max-width:880px){.psnotify-grid{grid-template-columns:1fr}
.psnotify-page-subtitle{order:3;flex-basis:100%;margin:4px 0 0}
}
.jb-placeholder-notice{font-size:12px;color:var(--text-dim);padding:8px 12px;border-radius:8px;background:rgba(255,255,255,.03);border:1px dashed var(--border);text-align:center}
/* ── Transfer Manager ────────────────────────────────────────────────────────── */
/* Nav badge — shows active+queued count beside the Transfers nav item */
.nav-badge{margin-left:auto;background:var(--teal);color:#000;border-radius:12px;font-size:11px;font-weight:700;padding:1px 6px;line-height:1.6}
/* Stats bar */
.transfer-stats-bar{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:10px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.tstat-group{display:flex;align-items:center;gap:8px;font-size:12px}
.tstat-label{color:var(--text-dim)}
.tstat-value{font-weight:700;color:var(--teal);min-width:24px}
.tstat-concurrent{margin-left:auto}
.concurrent-slider{-webkit-appearance:none;height:4px;width:90px;border-radius:8px;background:var(--surface3);accent-color:var(--teal);cursor:pointer}
.concurrent-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--teal);cursor:pointer}
/* Transfer list */
#transfers-list{display:flex;flex-direction:column;gap:8px}
/* Transfer item card */
.transfer-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:8px;transition:border-color .15s}
.transfer-item-active{border-color:var(--teal)}
.transfer-item-error{border-color:var(--red)}
.transfer-item-done{opacity:.5}
.transfer-item-cancelled{opacity:.4}
/* Header row */
.transfer-item-header{display:flex;align-items:center;gap:10px;min-width:0}
.transfer-label{flex:1;font-weight:600;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.transfer-type-badge{flex-shrink:0;font-size:11px;font-weight:700;padding:2px 7px;border-radius:8px;letter-spacing:.06em;text-transform:uppercase;background:rgba(3,218,198,.15);color:var(--teal)}
.transfer-type-badge.type-download{background:rgba(var(--accent-rgb),.15);color:var(--accent)}
.transfer-type-badge.type-pork{background:rgba(240,192,64,.15);color:var(--yellow)}
.transfer-status-text{flex-shrink:0;font-size:12px;color:var(--text-dim)}
/* Progress bar */
.transfer-progress-wrap{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.transfer-progress-bar{flex:1;height:4px;background:var(--surface3);border-radius:8px;overflow:hidden}
.transfer-progress-fill{height:100%;background:var(--teal);transition:width .3s linear}
.transfer-item-error .transfer-progress-fill{background:var(--red)}
.transfer-pct-label{flex-shrink:0;min-width:36px;text-align:right;font-size:11px;font-weight:600;color:var(--teal);font-variant-numeric:tabular-nums}
/* Meta row */
.transfer-meta{display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--text-dim)}
.transfer-speed{color:var(--teal);font-weight:600;flex-shrink:0}
.transfer-file{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace;font-size:11px}
.transfer-sizes{flex-shrink:0}
.transfer-error{color:var(--red);font-size:12px}
/* Cancel / action button inside card */
.btn-cancel-transfer{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:16px;line-height:1;padding:0 4px;transition:color .15s;flex-shrink:0}
.btn-cancel-transfer:hover{color:var(--red)}
/* ── Payload Manager ──────────────────────────────────────────────────────── */
.catalog-health-strip,.payload-catalog-stats{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:8px;margin:0 0 14px}
.catalog-health-strip > div,.payload-catalog-stats > div{display:flex;flex-direction:column;gap:2px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px}
.catalog-health-strip strong,.payload-catalog-stats strong{color:var(--teal);font-size:17px;line-height:1.15}
.catalog-health-strip span,.payload-catalog-stats span{color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.payload-catalog-stats{grid-template-columns:repeat(5,minmax(90px,1fr));margin-top:12px}
.payload-catalog-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0}
.payload-catalog-toolbar .search-input{min-width:220px;flex:1}
.payload-catalog-toolbar select{min-width:155px}
.payload-source-meta{display:flex;align-items:center;gap:6px;margin-left:auto}
.payload-trust-chip{font-size:11px;padding:2px 6px;border-radius:8px;text-transform:uppercase;letter-spacing:.05em}
.payload-trust-official{color:var(--teal);background:rgba(3,218,198,.12)}
.payload-trust-community{color:var(--yellow);background:rgba(240,192,64,.13)}
.payload-trust-custom{color:var(--text-dim);background:rgba(255,255,255,.06)}
.payload-source-description{margin:0 0 8px;font-size:11px;color:var(--text-dim)}
.payload-asset-meta{color:var(--text-dim);font-size:11px;white-space:nowrap}
.service-matrix-grid{display:grid;grid-template-columns:repeat(3,minmax(190px,1fr));gap:8px;margin-top:12px}
.service-matrix-item{padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface2)}
.service-matrix-head{display:flex;gap:8px;align-items:center;margin-bottom:5px}
.service-matrix-dot{width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:0 0 8px rgba(255,80,80,.35)}
.service-matrix-item.online .service-matrix-dot{background:var(--teal);box-shadow:0 0 8px rgba(3,218,198,.5)}
.service-matrix-name{font-weight:700;font-size:12px}
.service-matrix-port{margin-left:auto;color:var(--text-dim);font:11px monospace}
.service-matrix-item p{margin:0;color:var(--text-dim);font-size:11px;line-height:1.4}
@media (max-width:850px){.catalog-health-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
.payload-catalog-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
.service-matrix-grid{grid-template-columns:1fr}
}
/* Settings:source list rows */
.payload-settings-source-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px}
.payload-settings-source-row:last-child{border-bottom:none}
.payload-settings-source-name{font-weight:600;min-width:100px;flex-shrink:0}
.payload-settings-source-url{flex:1;color:var(--text-dim);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Jailbreak:update checker source block */
.payload-source-check-list{margin-top:8px}
.payload-check-source{padding:12px 0;border-bottom:1px solid var(--border)}
.payload-check-source:last-child{border-bottom:none}
.payload-check-source-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.payload-check-source-name{font-weight:700;font-size:12px}
.payload-tag-chip{font-size:11px;padding:2px 7px;border-radius:8px;background:rgba(3,218,198,.12);color:var(--teal);font-weight:600}
/* Asset table inside update checker */
.payload-asset-table{width:100%;border-collapse:collapse;font-size:12px}
.payload-asset-table td{padding:5px 8px;border-bottom:1px solid rgba(255,255,255,.04)}
.payload-asset-table tr:last-child td{border-bottom:none}
.payload-asset-name{font-family:monospace}
.payload-hash-snippet{font-family:monospace;font-size:11px;color:var(--text-dim)}
/* Extra badge variants */
.badge-yellow{background:rgba(240,192,64,.2);color:var(--yellow)}
.badge-dim{background:rgba(255,255,255,.06);color:var(--text-dim)}
/* Local payload list */
.payload-local-list,.payload-ps5-list{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.payload-local-row,.payload-ps5-row{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--surface2);border-radius:8px;font-size:12px}
.payload-row-name{flex:1;font-family:monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.payload-row-size{color:var(--text-dim);min-width:56px;text-align:right;flex-shrink:0}
.payload-row-actions{display:flex;gap:6px;flex-shrink:0}
/* Local payload list — card style (reuses al-file-card items inside a bordered scroll box) */
.payload-card-list{display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border);border-radius:8px;max-height:300px;overflow-y:auto;margin-top:6px}
.payload-card-list:empty{display:none}
/* Extra elements inside payload al-file-cards */
.payload-card-size{flex-shrink:0;font-size:11px;color:var(--text-dim);min-width:52px;text-align:right}
.payload-card-actions{display:flex;gap:5px;flex-shrink:0;margin-left:4px}
/* The push/delete buttons are very compact inside the card */
.payload-local-card .btn,.payload-sender-card .btn{font-size:11px;padding:3px 8px}
/* PS5 Payload Sender bar — port input + status */
.payload-sender-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:6px}
.payload-sender-port-label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);white-space:nowrap}
.payload-sender-port-input{width:72px;padding:4px 8px;border-radius:8px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:12px;text-align:center}
.payload-sender-status{flex:1;font-size:12px;transition:color .2s}
/* Save-to-local button on autoloader file cards */
.btn-al-save-local{background:none;border:1px solid var(--border);border-radius:8px;color:var(--text-dim);cursor:pointer;font-size:12px;line-height:1;padding:2px 5px;flex-shrink:0;transition:background .12s,color .12s,border-color .12s}
.btn-al-save-local:hover{background:var(--surface3);color:var(--teal);border-color:var(--teal)}
/* ── System View ──────────────────────────────────────────────────────────── */
.sv-bar-label{font-size:12px;color:var(--text-dim);white-space:nowrap;flex-shrink:0}
.sv-device-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;margin-bottom:16px}
.sv-viewer-wrap{position:relative;flex:1;min-height:300px;background:#000;border-radius:var(--radius) var(--radius) 0 0;overflow:hidden;display:flex;align-items:center;justify-content:center}
#page-system-view.active{display:flex;flex-direction:column;gap:0}
#page-system-view .page-header{margin-bottom:12px}
/* ── Integrated service pages ───────────────────────────────────────────────── */
#content.embed-page-active{overflow:auto}
#page-savemgr.active{display:flex;min-height:min(720px,calc(100dvh - 205px));flex-direction:column;gap:0;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}
body[data-chimera-route="protection/save-browser"] #page-savemgr .embed-page-title{display:none}
.embed-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;flex-shrink:0;padding:8px 16px;border-bottom:1px solid var(--border);background:var(--surface)}
.embed-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.embed-page-title{font-size:14px;font-weight:600;color:var(--text);flex-shrink:0;margin-right:4px}
.embed-empty-message{color:var(--text-dim);font-size:12px;text-align:center}
/* Install accordion — sits between toolbar and iframe,collapsed by default */
.install-accordion{flex-shrink:0;border-bottom:1px solid var(--border);background:var(--surface)}
.install-accordion > summary{list-style:none;display:flex;align-items:center;gap:6px;padding:6px 16px;cursor:pointer;font-size:12px;color:var(--text-dim);user-select:none}
.install-accordion > summary::-webkit-details-marker{display:none}
.install-accordion > summary::before{content:'▶';font-size:11px;transition:transform .15s}
.install-accordion[open] > summary::before{transform:rotate(90deg)}
.install-accordion > summary:hover{color:var(--text)}
.install-accordion-body{padding:12px 16px 14px;display:flex;flex-direction:column;gap:8px}
.install-accordion-body p{font-size:12px;color:var(--text-dim);margin:0;line-height:1.5}
#sv-video{width:100%;height:100%;max-height:70vh;object-fit:contain;display:block}
/* In-app fullscreen — CSS-based,works in Electron's frameless window */
.sv-viewer-wrap--fullscreen{position:fixed !important;inset:0 !important;z-index:9000 !important;border-radius:0 !important;min-height:0 !important}
.sv-viewer-wrap--fullscreen #sv-video{max-height:100vh !important}
.sv-viewer-wrap--fullscreen .sv-overlay-controls{opacity:1 !important;pointer-events:auto !important}
/* Overlay controls — bottom-right,fade in on hover */
.sv-overlay-controls{position:absolute;bottom:12px;right:12px;display:flex;gap:8px;opacity:0;transition:opacity .2s;pointer-events:none}
.sv-viewer-wrap:hover .sv-overlay-controls{opacity:1;pointer-events:auto}
.sv-overlay-btn{background:rgba(18,18,18,.85);border:1px solid #555;border-radius:8px;padding:6px 10px;font-size:16px;cursor:pointer;color:var(--text);transition:background .15s}
.sv-overlay-btn:hover{background:rgba(50,50,50,.95)}
/* No-signal placeholder */
.sv-no-signal{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--text-dim);font-size:12px;pointer-events:none}
.sv-no-signal.hidden{display:none}
/* ── System View — Recording indicator ─────────────────────────────────────── */
.sv-rec-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#ff5252;font-weight:500;flex-shrink:0}
.sv-rec-dot{width:8px;height:8px;border-radius:50%;background:#ff5252;animation:sv-pulse 1s ease-in-out infinite;flex-shrink:0}
@keyframes sv-pulse{0%,100%{opacity:1}
50%{opacity:0.3}
}
/* ── System View — toolbar separator ───────────────────────────────────────── */
.sv-tool-sep{width:1px;height:18px;background:var(--border);flex-shrink:0;margin:0 4px}
/* ── System View — video recording buttons ──────────────────────────────────── */
.btn-sv-vid-idle{border-color:#ff5252;color:#ff5252}
.btn-sv-vid-idle:hover:not(:disabled){background:rgba(255,82,82,.12)}
.btn-sv-vid-pause-btn{border-color:#ffb300;color:#ffb300}
.btn-sv-vid-pause-btn:hover:not(:disabled){background:rgba(255,179,0,.12)}
.btn-sv-vid-stop-btn{border-color:#4caf50;color:#4caf50}
.btn-sv-vid-stop-btn:hover:not(:disabled){background:rgba(76,175,80,.12)}
/* ── System View — video rec indicator ──────────────────────────────────────── */
.sv-vid-rec-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#ff5252;font-weight:500;flex-shrink:0}
.sv-vid-rec-status .sv-rec-dot{background:#ff5252}
.sv-vid-rec-status.paused{color:#ffb300}
.sv-vid-rec-status.paused .sv-rec-dot{background:#ffb300;animation-play-state:paused}
.sv-vid-rec-size{font-size:11px;opacity:.75}
/* ── System View — status bar ───────────────────────────────────────────────── */
.sv-status-bar{display:flex;align-items:center;gap:8px;padding:4px 10px;background:var(--surface);border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius) var(--radius);font-size:11px;color:var(--text-dim);flex-shrink:0}
.sv-status-dot{width:7px;height:7px;border-radius:50%;background:#444;flex-shrink:0}
.sv-status-dot.live{background:#4caf50;animation:sv-pulse 1.5s ease-in-out infinite}
.sv-status-dot.saving{background:#ffb300;animation:sv-pulse .6s ease-in-out infinite}
.sv-status-codec{margin-left:auto;font-family:monospace;font-size:11px;opacity:.55}
/* ── System View — right-click context menu ─────────────────────────────────── */
.sv-ctx-menu{position:fixed;z-index:9000;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 24px rgba(0,0,0,.7);padding:3px 0;min-width:150px}
.sv-ctx-menu[hidden]{display:none}
.sv-ctx-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 13px;font-size:12px;color:var(--text);background:none;border:none;cursor:pointer;text-align:left;white-space:nowrap}
.sv-ctx-item:hover:not(:disabled){background:rgba(187,134,252,.12);color:var(--accent)}
.sv-ctx-item:disabled{opacity:.35;cursor:default}
.sv-ctx-sep{height:1px;background:var(--border);margin:3px 0}
/* ── Destination picker ─────────────────────────────────────────────────────── */
#dest-picker-overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;z-index:8500}
#dest-picker-overlay[hidden]{display:none}
#dest-picker{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:440px;max-width:92vw;box-shadow:0 8px 40px rgba(0,0,0,.7);display:flex;flex-direction:column}
.dest-picker-title{padding:18px 18px 10px;font-size:14px;font-weight:600;color:var(--text);border-bottom:1px solid var(--border)}
.dest-picker-hint{padding:10px 18px 12px;font-size:12px;color:var(--text-dim);line-height:1.5}
.dest-picker-option{display:flex;flex-direction:column;gap:3px;text-align:left;padding:12px 18px;background:none;border:none;border-top:1px solid var(--border);cursor:pointer;transition:background .15s;width:100%}
.dest-picker-option:hover{background:rgba(var(--accent-rgb),.1)}
.dest-opt-label{font-size:12px;font-weight:600;color:var(--text)}
.dest-opt-path{font-size:11px;font-family:monospace;color:var(--text-dim)}
.dest-picker-footer{padding:12px 18px;display:flex;justify-content:flex-end;border-top:1px solid var(--border)}
/* ── Manage:install location display ───────────────────────────────────────── */
.manage-install-loc{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;margin-bottom:8px}
.manage-loc-label{font-size:11px;color:var(--text-dim);flex-shrink:0}
.manage-loc-path-wrap{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.manage-loc-path{font-size:11px;font-family:monospace;color:var(--teal);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* ── Remote Game Locations (Settings) ──────────────────────────────────────── */
.remote-path-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px}
.remote-path-row:last-child{border-bottom:none}
.remote-path-label{font-weight:600;min-width:120px;flex-shrink:0;color:var(--text)}
.remote-path-value{flex:1;color:var(--text-dim);font-size:12px;font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* ── FTP Browser modal ──────────────────────────────────────────────────────── */
#ftp-browser-overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;z-index:8000}
#ftp-browser-overlay[hidden]{display:none}
#ftp-browser{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:520px;max-width:92vw;display:flex;flex-direction:column;max-height:70vh;box-shadow:0 8px 40px rgba(0,0,0,.7)}
.ftp-browser-titlebar{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid var(--border);font-size:12px;font-weight:600;color:var(--text)}
.btn-icon-sm{background:none;border:none;color:var(--text-dim);font-size:14px;cursor:pointer;padding:2px 6px;border-radius:8px;transition:background .15s,color .15s}
.btn-icon-sm:hover{background:rgba(255,255,255,.1);color:var(--text)}
.ftp-browser-pathbar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface2)}
.ftp-browser-cwd{flex:1;font-family:monospace;font-size:12px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ftp-browser-body{flex:1;overflow-y:auto;padding:4px 0;min-height:200px}
.ftp-browser-loading{padding:24px 16px;text-align:center;color:var(--text-dim);font-size:12px}
.ftp-browser-entry{display:flex;align-items:center;gap:10px;padding:7px 14px;font-size:12px;cursor:default;transition:background .1s}
.ftp-entry-dir{cursor:pointer}
.ftp-entry-dir:hover{background:rgba(255,255,255,.06)}
.ftp-entry-file{color:var(--text-dim)}
.ftp-entry-icon{font-size:16px;flex-shrink:0}
.ftp-entry-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ftp-browser-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 14px;border-top:1px solid var(--border)}
/* ── Y2JB / Payload Manager settings modals ─────────────────────────────────── */
.jb-settings-overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;z-index:6000;padding:16px;backdrop-filter:blur(8px);overscroll-behavior:contain}
.jb-settings-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:480px;max-width:100%;max-height:calc(100dvh - 32px);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 8px 40px rgba(0,0,0,.7)}
.jb-settings-modal.install-dialog{width:560px}
.jb-settings-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}
.jb-settings-header h3{font-size:14px;font-weight:600}
.jb-settings-body{padding:16px 18px;display:flex;flex-direction:column;gap:14px;overflow-y:auto;overscroll-behavior:contain}
.jb-settings-footer{display:flex;gap:10px;padding:12px 18px;border-top:1px solid var(--border);justify-content:flex-end}
.jb-settings-overlay .btn-icon-sm:focus-visible,.jb-settings-overlay .btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (max-width:620px){.jb-settings-overlay{align-items:flex-end;padding:8px 8px 0}
.jb-settings-modal{width:100%;max-height:calc(100dvh - 8px);border-radius:18px 18px 0 0}
.jb-settings-header{position:sticky;top:0;z-index:2;background:var(--surface)}
.jb-settings-footer{padding-bottom:calc(12px + env(safe-area-inset-bottom));flex-wrap:wrap}
.jb-settings-footer .btn{flex:1 1 9rem}
.install-mode-tabs{overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.install-mode-tab{flex:0 0 auto}
}
/* ── System View mini-card (collapsible,embedded in Transfers / Jailbreak) ─── */
.sv-mini-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-top:16px;overflow:hidden}
.sv-mini-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;cursor:pointer;user-select:none;transition:background .15s}
.sv-mini-header:hover{background:rgba(255,255,255,.04)}
.sv-mini-title{font-size:12px;font-weight:600;color:var(--text-dim);display:flex;align-items:center;gap:8px}
.sv-mini-chevron{font-size:11px;color:var(--text-dim);transition:transform .2s}
.sv-mini-card.open .sv-mini-chevron{transform:rotate(180deg)}
.sv-mini-body{display:none;padding:12px 16px 14px;border-top:1px solid var(--border);flex-direction:column;gap:10px}
.sv-mini-card.open .sv-mini-body{display:flex}
/* ── Media page ──────────────────────────────────────────────────────────── */
#page-media.active{display:flex;flex-direction:column;gap:0}
.media-save-bar{display:flex;align-items:center;gap:10px;padding:6px 0 14px}
.media-save-label{font-size:12px;color:var(--text-dim);white-space:nowrap}
.media-scan-status{font-size:12px;color:var(--text-dim);padding:4px 0 10px;display:flex;align-items:center;gap:8px}
.media-scan-status::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;border:2px solid var(--accent);border-top-color:transparent;animation:spin .7s linear infinite;flex-shrink:0}
/* Thumbnail batch progress bar */
.media-thumb-status{font-size:11px;color:var(--text-dim);padding:2px 0 8px;display:flex;align-items:center;gap:8px}
.media-thumb-status::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;border:2px solid var(--accent);border-top-color:transparent;animation:spin .7s linear infinite;flex-shrink:0}
/* Per-card label shown during download/decode */
.thumb-label{position:absolute;bottom:6px;left:0;right:0;text-align:center;font-size:11px;color:rgba(255,255,255,.55);pointer-events:none;z-index:2;letter-spacing:.3px}
/* Retry button on failed cards */
.btn-thumb-retry{font-size:11px;padding:2px 8px;border-radius:12px;background:rgba(207,102,121,.18);border:1px solid var(--red);color:var(--red);cursor:pointer;margin-bottom:4px;width:100%}
@keyframes spin{to{transform:rotate(360deg)}
}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;overflow-y:auto}
.media-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:border-color .15s;cursor:pointer}
.media-card:hover{border-color:var(--accent)}
.media-card[data-type="clip"]{cursor:default}
.media-card[data-type="clip"]:hover{border-color:var(--border)}
/* ── Thumbnail area ── */
.media-card-thumb{height:120px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}
.media-card-thumb.type-screenshot{background:#0a0a0a}
.media-card-thumb.type-clip{background:rgba(187,134,252,.06)}
.media-thumb-wrap{padding:0}
/* Actual screenshot image */
.media-thumb-img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;opacity:0;transition:opacity .25s}
.media-thumb-img.thumb-loaded{opacity:1}
/* Spinner shown while thumb is loading */
.thumb-spin{width:20px;height:20px;border-radius:50%;border:2px solid var(--accent);border-top-color:transparent;animation:spin .7s linear infinite;flex-shrink:0;z-index:1}
/* Error state */
.media-card-thumb.thumb-error::after{content:'!';font-size:22px;color:var(--red);opacity:.6}
/* Video clip — play icon overlay on top of the thumbnail */
.clip-play-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;/* let card click-through */
opacity:0;transition:opacity .15s}
.media-card:hover .clip-play-overlay{opacity:1}
/* Always visible on clip cards (static WEBM badge,no thumbnail) */
.type-clip .clip-play-overlay{opacity:1}
/* WEBM type badge in top-right corner of clip cards */
.clip-type-badge{position:absolute;top:6px;right:6px;font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;background:rgba(0,0,0,.5);color:rgba(255,255,255,.7);padding:2px 6px;border-radius:8px;pointer-events:none;z-index:3}
/* ── Card body ── */
.media-card-body{padding:9px 11px;display:flex;flex-direction:column;gap:5px;flex:1}
.media-card-game{display:flex;align-items:center;gap:6px}
.media-card-game-icon{width:22px;height:22px;border-radius:8px;object-fit:cover;flex-shrink:0}
.media-card-game-icon-empty{width:22px;height:22px;border-radius:8px;flex-shrink:0;background:var(--surface2);border:1px solid var(--border)}
.media-card-game-id{font-size:11px;font-weight:700;color:var(--accent)}
.media-card-filename{font-size:11px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.media-card-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}
.media-cache-panel{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 12px;padding:12px 14px;background:rgba(34,199,232,.055);border:1px solid rgba(34,199,232,.2);border-radius:12px}
.media-cache-panel > div:first-child{display:grid;gap:3px}
.media-cache-panel span,.media-card-provenance{color:var(--text-dim);font:11px/1.4 var(--mono)}
.media-cache-actions,.media-card-provenance{display:flex;align-items:center;gap:8px}
.media-card-provenance{justify-content:space-between;min-width:0}
.media-card-provenance span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btn-cache-pin{flex:none;padding:2px 6px;color:var(--teal);background:transparent;border:1px solid rgba(34,199,232,.25);border-radius:8px;font:700 11px/1.4 var(--mono);cursor:pointer}
@media (max-width:680px){.media-cache-panel{align-items:stretch;flex-direction:column}
.media-cache-actions{display:grid;grid-template-columns:1fr 1fr}
}
.media-import-panel{display:grid;grid-template-columns:minmax(180px,1fr) repeat(3,minmax(120px,auto)) auto;gap:9px;align-items:center;margin-bottom:12px;padding:14px;background:var(--surface2);border:1px solid var(--border-soft);border-radius:12px}
.media-import-panel > div{display:grid;gap:3px}
.media-import-panel > div span,#media-import-status{color:var(--text-dim);font-size:11px}
.media-import-panel input[type=file]{grid-column:1/4}
.media-imported-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;margin-bottom:14px}
.media-imported-card{display:grid;grid-template-columns:84px minmax(0,1fr);gap:10px;min-height:84px;padding:9px;background:var(--surface2);border:1px solid var(--border-soft);border-radius:12px}
.media-imported-card img,.media-imported-card video{width:84px;height:84px;object-fit:cover;background:#08070a;border-radius:8px}
.media-imported-card > div{display:flex;min-width:0;flex-direction:column;gap:6px;align-items:flex-start}
.media-imported-card span{max-width:100%;overflow:hidden;color:var(--text-dim);font-size:11px;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:900px){.media-import-panel{grid-template-columns:1fr 1fr}
.media-import-panel > div,.media-import-panel input[type=file]{grid-column:1/-1}
}
.settings-identity-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;margin:0;overflow:hidden;background:var(--border-soft);border:1px solid var(--border-soft);border-radius:12px}
.settings-identity-grid > div{min-width:0;padding:12px;background:var(--surface2)}
.settings-identity-grid dt{color:var(--text-muted);font:700 11px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase}
.settings-identity-grid dd{margin:5px 0 0;overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:nowrap}
.settings-identity-guidance{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:12px;padding:12px 14px;background:rgba(34,199,232,.055);border:1px solid rgba(34,199,232,.18);border-radius:12px}
.settings-identity-guidance p{margin:3px 0 0;color:var(--text-dim);font-size:11px}
@media (max-width:900px){.settings-identity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:560px){.settings-identity-grid{grid-template-columns:1fr}
.settings-identity-guidance{align-items:stretch;flex-direction:column}
}
.media-card-size{font-size:11px;color:var(--text-dim)}
.media-card-date{font-size:11px;color:var(--text-dim);white-space:nowrap;font-variant-numeric:tabular-nums}
.media-card-actions{padding-top:6px;display:flex;gap:6px;flex-wrap:wrap}
/* ── Media Lightbox ── */
.media-lightbox{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center}
.media-lightbox[hidden]{display:none}
.media-lightbox-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.88);cursor:pointer}
.media-lightbox-frame{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:10px;max-width:calc(100vw - 60px);max-height:calc(100vh - 60px);padding:16px}
.media-lightbox-close{position:absolute;top:-8px;right:-8px;width:28px;height:28px;border-radius:50%;background:var(--surface2);border:1px solid var(--border);color:var(--text);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:background .15s}
.media-lightbox-close:hover{background:var(--red);color:#fff}
.media-lightbox-meta{font-size:12px;color:var(--text-dim);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:600px}
.media-lightbox-img{max-width:100%;max-height:calc(100vh - 140px);border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.6);object-fit:contain}
.media-lightbox-spinner{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-dim);font-size:12px;padding:40px}
.lightbox-spin-ring{width:36px;height:36px;border-radius:50%;border:3px solid var(--accent);border-top-color:transparent;animation:spin .7s linear infinite}
.media-lightbox-footer{display:flex;gap:8px}
body.lightbox-open{overflow:hidden}
/* Discord share button on media cards */
.btn-media-share{background:#4f56c7;border:none;color:#fff;font-size:11px;padding:4px 9px;border-radius:var(--radius);cursor:pointer;white-space:nowrap;transition:background .15s,opacity .15s}
.btn-media-share:hover{background:#5865F2}
.btn-media-share:disabled{opacity:.55;cursor:default}
/* Catbox upload progress fill — slides a translucent bar across the button */
.btn-media-share.uploading{position:relative;overflow:hidden;transition:none}
.btn-media-share.uploading::before{content:'';position:absolute;left:0;top:0;bottom:0;width:var(--upload-pct,0%);background:rgba(255,255,255,.22);transition:width .35s linear;pointer-events:none;border-radius:inherit}
/* Integrations card sections */
.integration-section{padding:4px 0}
.integration-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}
/* ── Cheats page ─────────────────────────────────────────────────────────── */
#page-cheats.active{display:flex;flex-direction:column;gap:0}
.cheats-stats-bar{display:flex;align-items:center;gap:16px;padding:8px 2px;font-size:12px;color:var(--text-dim);margin-bottom:10px}
/* Download progress panel */
.cheats-progress-bar-wrap{height:6px;background:#1a1a1a;border-radius:8px;overflow:hidden;margin:10px 0 8px}
.cheats-progress-bar{height:100%;background:var(--accent);border-radius:8px;transition:width .3s ease}
.cheats-dl-stats{display:flex;gap:18px;font-size:12px;color:var(--text-dim);flex-wrap:wrap}
.cheats-dl-stats span{white-space:nowrap}
#cheats-dl-pct{color:var(--accent);font-weight:600}
#cheats-dl-saved{color:var(--green)}
#cheats-dl-failed{color:var(--red)}
#cheats-dl-eta{color:var(--text)}
.cheats-dl-current{margin-top:6px;font-size:11px;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Cheat cards grid */
.cheats-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.cheat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;cursor:pointer;transition:border-color .15s}
.cheat-card:hover{border-color:var(--accent)}
.cheat-card-header{display:flex;align-items:center;gap:10px}
.cheat-card-icon{width:40px;height:40px;border-radius:8px;object-fit:cover;flex-shrink:0}
.cheat-card-icon-empty{width:40px;height:40px;border-radius:8px;flex-shrink:0;background:var(--surface2);border:1px solid var(--border)}
.cheat-card-info{display:flex;flex-direction:column;gap:3px;min-width:0}
.cheat-card-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cheat-card-id{font-size:11px;font-weight:700;color:var(--accent);background:rgba(var(--accent-rgb),.1);border-radius:8px;padding:2px 6px;white-space:nowrap;flex-shrink:0;margin-top:2px}
.cheat-card-title{font-size:12px;font-weight:600;color:var(--text);line-height:1.3}
.cheat-card-meta{font-size:11px;color:var(--text-dim);display:flex;gap:10px}
.cheat-card-files{color:var(--text-dim)}
.cheat-card-body{display:none;margin-top:10px;border-top:1px solid var(--border);padding-top:10px}
.cheat-card.open .cheat-card-body{display:block}
/* Individual cheat file block inside a card */
.cheat-file-block{margin-bottom:10px}
.cheat-file-block:last-child{margin-bottom:0}
.cheat-file-ver{font-size:11px;font-weight:600;color:var(--text-dim);margin-bottom:6px;display:flex;align-items:center;gap:6px}
.cheat-file-ver code{font-size:11px;background:#1a1a1a;border-radius:8px;padding:1px 5px;color:var(--text)}
.cheat-mod-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text);padding:3px 0;border-bottom:1px solid var(--border)}
.cheat-mod-row:last-child{border-bottom:none}
.cheat-mod-name{flex:1}
.cheat-mod-type{font-size:11px;color:var(--text-dim);background:var(--surface2);border-radius:8px;padding:1px 5px}
/* Modal cheats panel */
#mpanel-cheats{padding:4px 0}
.modal-cheat-fetch{display:flex;align-items:center;gap:12px;padding:16px;color:var(--text-dim);font-size:12px}
.cheat-mod-list{list-style:none;padding:0;margin:0}
.cheat-mod-list li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);font-size:12px;color:var(--text)}
.cheat-mod-list li:last-child{border-bottom:none}
/* Cheat count badge in games table */
.cheat-count-badge{display:inline-block;background:rgba(var(--accent-rgb),.15);color:var(--accent);border-radius:8px;font-size:11px;font-weight:600;padding:1px 7px}
/* Unmatched cheats section */
#cheats-unmatched-section{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
.cheats-unmatched-summary{padding:10px 14px;cursor:pointer;font-size:12px;font-weight:600;color:var(--text);list-style:none;display:flex;align-items:center;gap:6px;user-select:none}
.cheats-unmatched-summary::-webkit-details-marker{display:none}
.cheats-unmatched-summary::before{content:'▶';font-size:11px;color:var(--text-dim);transition:transform .15s;display:inline-block}
#cheats-unmatched-section[open] .cheats-unmatched-summary::before{transform:rotate(90deg)}
.cheats-unmatched-list{padding:4px 10px 10px;display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--border)}
.cheat-unmatched-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:8px 10px;background:var(--bg);border-radius:8px;border:1px solid var(--border)}
.cheat-unmatched-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.cheat-unmatched-title{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cheat-unmatched-file{font-size:11px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cheat-unmatched-assign{display:flex;gap:6px;align-items:center;flex-shrink:0}
.cheat-unmatched-assign input{width:110px;padding:4px 8px;font-size:12px;font-family:var(--mono);background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text);text-transform:uppercase}
.cheat-unmatched-assign input:focus{outline:none;border-color:var(--accent)}
.cheat-unmatched-assign input.input-error{border-color:var(--red);animation:shake .2s ease}
@keyframes shake{0%,100%{transform:translateX(0)}
25%{transform:translateX(-4px)}
75%{transform:translateX(4px)}
}
/* FTP install panel */
.cheats-ftp-instructions{padding:4px 0 6px}
.cheats-ftp-instructions ol{padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--text-dim);line-height:1.5}
.cheats-ftp-instructions code{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1px 5px;font-size:12px;color:var(--accent)}
/* ── Dashboard pinned cards ────────────────────────────────────────────────── */
/* ── Operations Center ─────────────────────────────────────────────────────── */
.nav-section-label{padding:13px 16px 5px;color:var(--text-dim);font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;opacity:.72;user-select:none}
.operations-header,.operations-header-actions,.operations-card-header,.operations-inline-actions,.operations-task-main,.operations-task,.operations-run,.operations-service,.operations-check,.operations-recovery-item,.operations-audit-row{display:flex;align-items:center}
.operations-header{justify-content:space-between;gap:20px}
.operations-header-actions,.operations-inline-actions{gap:8px;flex-wrap:wrap}
.operations-health{border:1px solid var(--border);border-radius:999px;padding:6px 10px;color:var(--text-dim);font-size:11px;font-weight:700;background:var(--surface)}
.operations-health.healthy{color:#8ee9b4;border-color:rgba(78,207,132,.35);background:rgba(78,207,132,.08)}
.operations-health.warning{color:#ffd17a;border-color:rgba(255,182,72,.38);background:rgba(255,182,72,.08)}
.operations-tabs{display:flex;gap:4px;overflow-x:auto;margin:0 0 16px;padding:4px;border:1px solid var(--border);border-radius:12px;background:rgba(0,0,0,.15)}
.operations-tab{flex:0 0 auto;border:0;border-radius:8px;padding:9px 13px;color:var(--text-dim);background:transparent;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.operations-tab:hover{color:var(--text);background:rgba(255,255,255,.04)}
.operations-tab.active{color:#fff;background:rgba(var(--accent-rgb),.26);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.38)}
.operations-panel{animation:operations-in .16s ease}
@keyframes operations-in{from{opacity:0;transform:translateY(3px)}
to{opacity:1;transform:none}
}
.operations-card-header{justify-content:space-between;gap:14px}
.operations-card-header h3{margin-bottom:3px}
.operations-task-list,.operations-run-list,.operations-recovery-list{display:flex;flex-direction:column;gap:8px}
.operations-task{display:grid;grid-template-columns:minmax(240px,1fr) auto auto auto auto;gap:10px;padding:10px;border:1px solid var(--border);border-radius:8px;background:rgba(0,0,0,.13)}
.operations-task-main{gap:10px;min-width:0}
.operations-task-main > div,.operations-service > div,.operations-check > div,.operations-recovery-info{display:flex;flex-direction:column;gap:3px;min-width:0}
.operations-task-main span,.operations-service span,.operations-check span,.operations-recovery-info span{color:var(--text-dim);font-size:11px}
.operations-task-indicator,.operations-service-dot{width:9px;height:9px;flex:0 0 auto;border-radius:50%;background:#68636e;box-shadow:0 0 0 3px rgba(104,99,110,.13)}
.operations-task-indicator.enabled,.operations-service-dot.online{background:#4ecf84;box-shadow:0 0 0 3px rgba(78,207,132,.14)}
.operations-task-indicator.running{background:#d6a7ff;box-shadow:0 0 0 3px rgba(var(--accent-rgb),.2);animation:operations-pulse 1s infinite alternate}
@keyframes operations-pulse{to{opacity:.45}
}
.operations-switch,.operations-interval{display:flex;align-items:center;gap:5px;color:var(--text-dim);font-size:11px}
.operations-switch{flex-direction:row}
.operations-interval input{width:78px}
.operations-run{display:grid;grid-template-columns:minmax(190px,1fr) 92px 70px minmax(120px,1.2fr);gap:10px;padding:8px 10px;border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim)}
.operations-run > div{display:flex;flex-direction:column;gap:2px}
.operations-run-message{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.operations-status{display:inline-flex;width:max-content;align-items:center;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800}
.operations-status-completed,.operations-status-compatible{background:rgba(78,207,132,.12);color:#8ee9b4}
.operations-status-failed,.operations-status-warning{background:rgba(255,116,116,.12);color:#ffadad}
.operations-status-running{background:rgba(var(--accent-rgb),.18);color:#d6a7ff}
.operations-status-unknown{background:rgba(255,255,255,.06);color:var(--text-dim)}
.operations-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:9px;margin:12px 0}
.operations-metric{padding:12px;border:1px solid var(--border);border-radius:8px;background:rgba(0,0,0,.14)}
.operations-metric strong{display:block;color:var(--text);font-size:18px;overflow-wrap:anywhere}
.operations-metric span{display:block;margin-top:3px;color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.operations-audit-section{margin-top:10px;padding:10px;border:1px solid var(--border);border-radius:8px}
.operations-audit-section h4{margin:0 0 8px}
.operations-audit-section summary{cursor:pointer;font-weight:700}
.operations-audit-section summary span{float:right;color:var(--text-dim)}
.operations-audit-row{justify-content:space-between;align-items:flex-start;gap:12px;padding:7px 0;border-bottom:1px solid var(--border);font-size:11px}
.operations-audit-row:last-child{border-bottom:0}
.operations-audit-row code{max-width:70%;overflow-wrap:anywhere;color:var(--text-dim)}
.operations-empty-ok,.operations-empty{padding:18px;border:1px dashed rgba(78,207,132,.35);border-radius:8px;color:#8ee9b4;text-align:center}
.operations-empty{display:flex;min-height:96px;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:var(--text);border-color:var(--border)}
.operations-empty span{color:var(--text-dim);font-size:11px}
.operations-recovery-item{gap:12px;padding:11px;border:1px solid var(--border);border-radius:8px;background:rgba(0,0,0,.12)}
.operations-recovery-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:12px;color:#d6a7ff;background:rgba(var(--accent-rgb),.13);font-size:20px}
.operations-recovery-info{flex:1}
.operations-recovery-info code{color:var(--text-dim);font-size:11px}
.operations-two-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
body[data-chimera-route="protection/replication"] #operations-replication-card{grid-column:1/-1}
.operations-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.operations-field{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:var(--text-dim);font-size:11px}
.operations-field textarea,.operations-code-editor{resize:vertical}
.operations-check{justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}
.operations-source-note{margin-top:12px}
.operations-warning-card{border-color:rgba(255,182,72,.35);background:rgba(255,182,72,.07);color:#ffd17a;line-height:1.5}
.operations-code-editor,.operations-log{width:100%;font-family:var(--mono);font-size:11px;line-height:1.55}
.operations-log{box-sizing:border-box;max-height:430px;overflow:auto;margin-top:12px;padding:12px;border:1px solid var(--border);border-radius:8px;background:#111015;color:#d9d5df;white-space:pre-wrap;overflow-wrap:anywhere}
.operations-service{gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}
.operations-service > div{flex:1}
.operations-service b{color:var(--text-dim);font-size:11px}
@media (max-width:1080px){.operations-task{grid-template-columns:minmax(220px,1fr) auto auto}
.operations-task-save,.operations-task-run{grid-row:2}
.operations-two-column{grid-template-columns:1fr}
}
@media (max-width:720px){.nav-section-label{padding-left:13px}
.operations-header{align-items:flex-start;flex-direction:column}
.operations-task{display:flex;align-items:stretch;flex-direction:column}
.operations-run{grid-template-columns:1fr auto}
.operations-run-message{grid-column:1 / -1}
.operations-recovery-item{align-items:flex-start;flex-wrap:wrap}
.operations-recovery-info{flex-basis:calc(100% - 50px)}
.operations-recovery-item .operations-inline-actions{width:100%}
.operations-profile-grid{grid-template-columns:1fr}
}
.payload-observability{margin:14px 0;display:grid;gap:12px}
.payload-observability-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.payload-observability-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.payload-observability-panel{min-width:0;padding:12px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--card) 88%,transparent)}
.card-header.compact{margin-bottom:8px}
.card-header.compact h4{margin:0}
.payload-process-list{display:grid;gap:5px;max-height:250px;margin-top:10px;overflow:auto}
.payload-process-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 9px;border:1px solid var(--border);border-radius:8px}
.payload-process-row div{min-width:0}
.payload-process-row strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.payload-process-row span{color:var(--text-dim);font-size:11px}
.payload-process-row b{white-space:nowrap;font-size:12px}
.payload-native-launch-heading{margin:14px 0 0}
.payload-log-output{box-sizing:border-box;width:100%;min-height:160px;max-height:280px;margin:0;padding:10px;overflow:auto;border:1px solid var(--border);border-radius:8px;background:#080b10;color:#c9d5e6;font:11px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap}
@media (max-width:760px){.payload-observability-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
.payload-observability-columns{grid-template-columns:1fr}
}
.shadowmount-entry code{display:block;margin-top:5px;overflow-wrap:anywhere;white-space:pre-wrap}
.shadowmount-entry small,.operations-detail-row.has-warning small{display:block;margin-top:5px;color:var(--warning,#f4bf5f)}
.transfer-policy-card{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px}
.transfer-policy-card>div{flex:1 1 320px}
.transfer-policy-card>div strong,.transfer-policy-card>div span{display:block}
.transfer-policy-card label{display:inline-flex;align-items:center;gap:5px}
.transfer-policy-card input{width:110px}
+1
View File
@@ -0,0 +1 @@
.game-card-cover-case{position:absolute;inset:9px;z-index:2;display:flex;flex-direction:column;overflow:hidden;background:linear-gradient(145deg,rgba(26,20,35,.98),rgba(11,9,15,.98));border:1px solid rgba(255,255,255,.17);border-radius:8px;box-shadow:0 15px 36px rgba(0,0,0,.48)}.game-card-cover-case.has-native-cover{inset:0;border:0;border-radius:inherit;background:#0e0b12;box-shadow:none}.game-card-cover-case.has-native-cover .game-card-cover{position:absolute;inset:0;display:block;width:100%;height:100%;flex:1 1 auto;margin:0;padding:0;object-fit:cover;object-position:center;border:0;border-radius:0;box-shadow:none;filter:none}.game-card:has(.game-card-cover-case.has-native-cover) .game-card-art{aspect-ratio:var(--game-cover-ratio,2 / 3)}.game-card-cover-platform{flex:0 0 auto;padding:6px 10px 5px;color:#fff;background:linear-gradient(90deg,#006fcd,#2b8fe5);font:700 11px/1 Space Grotesk,Inter,sans-serif;letter-spacing:.13em}.game-card-cover-case > .game-card-cover:not(.game-card-cover-empty){position:relative;width:calc(100% - 16px);height:auto;aspect-ratio:1;margin:8px;object-fit:contain;border-radius:8px;box-shadow:0 7px 18px rgba(0,0,0,.34)}.game-card-cover-case.has-native-cover > .game-card-cover:not(.game-card-cover-empty){position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;margin:0;padding:0;object-fit:cover;object-position:center;border:0;border-radius:0;box-shadow:none;filter:none}.game-card-cover-caption{display:flex;flex:1;min-height:0;flex-direction:column;justify-content:center;gap:4px;padding:7px 9px 9px;background:linear-gradient(180deg,rgba(16,12,21,.55),rgba(16,12,21,.98))}.game-card-cover-caption strong{display:-webkit-box;overflow:hidden;color:#fff;font:700 12px/1.16 Space Grotesk,Inter,sans-serif;-webkit-box-orient:vertical;-webkit-line-clamp:2}.game-card-cover-caption small{color:rgba(255,255,255,.58);font:600 11px/1.1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em}.game-card-cover-backdrop{position:absolute;inset:-12px;z-index:0;width:calc(100% + 24px);height:calc(100% + 24px);object-fit:cover;filter:blur(12px) saturate(.9) brightness(.43);transform:scale(1.08)}.game-card-art:has(.game-card-cover-backdrop)::after{position:absolute;inset:0;z-index:1;content:"";background:linear-gradient(180deg,rgba(12,9,16,.08),rgba(12,9,16,.42))}.game-card-art .game-card-sync{z-index:4}.game-row-icon.is-portrait{width:32px;height:44px;border-radius:8px;object-fit:cover;box-shadow:0 5px 12px rgba(0,0,0,.32)}@media (prefers-reduced-motion:no-preference){.game-card:hover .game-card-cover-case.has-native-cover .game-card-cover{transform:scale(1.025)}.game-card-cover-case.has-native-cover .game-card-cover{transition:transform 240ms cubic-bezier(.2,.8,.2,1)}}
+12
View File
@@ -0,0 +1,12 @@
.chimera-import-launcher{position:fixed;right:22px;bottom:22px;z-index:1150;display:flex;align-items:center;gap:9px;padding:11px 17px;color:#0b1110;font:700 12px/1.2 "Space Grotesk",sans-serif;background:linear-gradient(135deg,var(--teal),#8df3d8);border:0;border-radius:999px;box-shadow:0 12px 32px rgba(3,218,198,.22);cursor:pointer}
.chimera-import-launcher:focus-visible,.import-wizard button:focus-visible,.import-wizard input:focus-visible,.import-wizard select:focus-visible,.import-wizard textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.import-wizard-overlay{position:fixed;inset:0;z-index:4200;display:grid;place-items:center;padding:24px;background:rgba(5,7,9,.82);backdrop-filter:blur(8px)}
.import-wizard-overlay[hidden]{display:none}.import-wizard{width:min(980px,100%);max-height:min(820px,94vh);display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;overflow:hidden;color:var(--text);background:linear-gradient(155deg,#181d20,#0e1114 62%);border:1px solid rgba(141,243,216,.22);border-radius:16px;box-shadow:0 32px 90px rgba(0,0,0,.62)}
.import-wizard-head{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 24px 17px;border-bottom:1px solid var(--border)}.import-wizard-head h2{margin:3px 0 4px;font:700 24px/1.1 "Space Grotesk",sans-serif}.import-wizard-kicker{color:var(--teal);font:700 11px/1.2 monospace;letter-spacing:.16em;text-transform:uppercase}.import-wizard-head p{margin:0;color:var(--text-dim);font-size:12px}.import-wizard-close{width:36px;height:36px;color:var(--text);font-size:20px;background:var(--surface2);border:1px solid var(--border);border-radius:12px;cursor:pointer}
.import-wizard-steps{display:grid;grid-template-columns:repeat(5,1fr);padding:0 20px;border-bottom:1px solid var(--border)}.import-wizard-step{position:relative;padding:14px 7px;color:var(--text-dim);font-size:11px;text-align:center;border:0;border-bottom:2px solid transparent;background:none}.import-wizard-step::before{display:block;width:23px;height:23px;margin:0 auto 5px;line-height:23px;content:attr(data-number);background:var(--surface3);border-radius:50%}.import-wizard-step.active{color:var(--teal);border-color:var(--teal)}.import-wizard-step.complete::before{color:#07100e;background:var(--teal)}
.import-wizard-body{min-height:360px;padding:24px;overflow:auto}.import-wizard-drop{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:22px;background:radial-gradient(circle at 20% 10%,rgba(3,218,198,.12),transparent 52%),var(--surface2);border:1px dashed rgba(141,243,216,.35);border-radius:16px}.import-wizard-drop p{grid-column:1/-1;margin:0;color:var(--text-dim);line-height:1.55}.import-wizard-choice{padding:18px;color:var(--text);font-weight:700;background:#171f21;border:1px solid var(--border);border-radius:12px;cursor:pointer}.import-wizard-choice:hover{border-color:var(--teal)}
.import-wizard-resumes,.import-wizard-components{display:grid;gap:9px;margin-top:18px}.import-wizard-resume,.import-wizard-component{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:11px 13px;background:var(--surface2);border:1px solid var(--border);border-radius:12px}.import-wizard-resume small,.import-wizard-component small{display:block;color:var(--text-dim)}.import-wizard-component-controls{display:flex;gap:5px}.import-wizard-component-controls button{min-width:32px}.import-wizard-progress{height:9px;margin:16px 0 7px;overflow:hidden;background:#090b0d;border-radius:99px}.import-wizard-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--accent));transition:width .18s}.import-wizard-status{min-height:20px;margin-top:12px;color:var(--text-dim);font-size:12px}.import-wizard-status.error{color:var(--red)}
.import-wizard-issues{display:grid;gap:8px;padding:0;list-style:none}.import-wizard-issues li{padding:10px 12px;color:#ffd9c9;background:rgba(255,92,57,.1);border-left:3px solid #ff713f}.import-wizard-field{display:grid;gap:7px;margin-top:16px;color:var(--text-dim);font-size:12px}.import-wizard-field textarea,.import-wizard-field select{width:100%;padding:11px;color:var(--text);background:var(--surface2);border:1px solid var(--border);border-radius:12px}.import-wizard-field textarea{min-height:95px;resize:vertical}.import-wizard-attach{display:flex;align-items:center;gap:9px}.import-wizard-preview{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.import-wizard-preview div{padding:13px;background:var(--surface2);border-radius:12px}.import-wizard-preview span,.import-wizard-preview strong{display:block}.import-wizard-preview span{margin-bottom:5px;color:var(--text-dim);font-size:11px}.import-wizard-preview strong{overflow-wrap:anywhere}
.import-wizard-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;border-top:1px solid var(--border)}.import-wizard-footer-actions{display:flex;gap:8px}.import-wizard-footer button{padding:9px 14px}.import-wizard-confirm{display:flex;align-items:flex-start;gap:9px;max-width:500px;color:var(--text-dim);font-size:12px}.import-wizard-empty{padding:26px;color:var(--text-dim);text-align:center;border:1px dashed var(--border);border-radius:12px}
@media(max-width:640px){.chimera-import-launcher{right:14px;bottom:76px}.import-wizard-overlay{padding:0}.import-wizard{width:100%;height:100%;max-height:none;border-radius:0}.import-wizard-head{padding:17px}.import-wizard-head h2{font-size:20px}.import-wizard-steps{padding:0 5px}.import-wizard-step{font-size:0}.import-wizard-step::before{font-size:11px}.import-wizard-body{padding:16px}.import-wizard-drop,.import-wizard-preview{grid-template-columns:1fr}.import-wizard-drop p{grid-column:auto}.import-wizard-footer{align-items:stretch;flex-direction:column;padding:12px 16px}.import-wizard-footer-actions{justify-content:flex-end}.import-wizard-confirm{max-width:none}}
@media(prefers-reduced-motion:reduce){.import-wizard-progress span{transition:none}}
+1
View File
@@ -0,0 +1 @@
.install-destination-picker{display:grid;gap:9px;margin:12px 0;}.install-destination-picker select{width:100%;}.install-destination-status{border:1px solid var(--border);border-radius:12px;display:grid;gap:3px;padding:10px 12px;}.install-destination-status strong{font-size:12px;}.install-destination-status span{color:var(--text-dim);font-size:11px;}.install-destination-status.is-eligible{background:rgba(36,137,88,.11);border-color:rgba(114,214,162,.35);}.install-destination-status.is-ineligible{background:rgba(169,108,21,.11);border-color:rgba(240,190,99,.35);}.install-expert-destination{border-top:1px solid var(--border);margin-top:12px;padding-top:9px;}.install-expert-destination summary{color:var(--text-dim);cursor:pointer;font-size:11px;}.install-expert-destination[open] summary{color:#f0be63;margin-bottom:8px;}
+1
View File
@@ -0,0 +1 @@
.chimera-companion-dock{display:none}@media(max-width:700px){:root{--companion-dock-h:68px;--companion-gutter:14px}body,html{overscroll-behavior:none;background:radial-gradient(circle at 82% -5%,rgba(118,81,230,.22),transparent 24rem),#0d0a11}body.web-mode{--titlebar-h:0px}body.web-mode #titlebar{display:none}#statusbar{display:none}#app{bottom:calc(var(--companion-dock-h) + env(safe-area-inset-bottom))}#content{gap:14px;padding:0 var(--companion-gutter) 24px;scroll-padding-top:72px;overscroll-behavior-y:contain}#chimera-shell-toolbar{top:0;z-index:1500;min-height:58px;margin:0 calc(var(--companion-gutter) * -1);padding:8px var(--companion-gutter);gap:8px;background:linear-gradient(180deg,rgba(14,10,18,.98),rgba(14,10,18,.93)),radial-gradient(circle at 70% 0,rgba(118,81,230,.18),transparent 18rem);border-bottom:1px solid rgba(203,186,255,.12);box-shadow:0 10px 28px rgba(0,0,0,.26);backdrop-filter:blur(18px)}#mobile-nav-toggle,#chimera-command-open{width:42px;min-width:42px;flex:0 0 42px;min-height:42px;justify-content:center;padding:0;color:var(--text);background:rgba(255,255,255,.035);border:1px solid rgba(244,238,251,.11);border-radius:12px}#mobile-nav-toggle{display:inline-grid;place-items:center;font-size:21px}body.mobile-nav-open #mobile-nav-toggle{position:fixed;top:max(14px,env(safe-area-inset-top));left:calc(min(350px,92vw) - 56px);z-index:2400;background:rgba(25,18,32,.96);border-color:rgba(203,186,255,.24);box-shadow:0 10px 24px rgba(0,0,0,.34);pointer-events:auto}body.mobile-nav-open #chimera-shell-toolbar{z-index:2350;pointer-events:none;background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:none}body.mobile-nav-open #chimera-shell-toolbar>:not(#mobile-nav-toggle){visibility:hidden}#chimera-command-open::before{content:"⌕";font:500 25px/1 var(--display)}#chimera-command-open>span,#chimera-command-open>kbd,#chimera-jobs-open,.chimera-toolbar-spacer{display:none}.chimera-shell-health{min-width:0;min-height:42px;flex:1;justify-content:flex-start;gap:9px;padding:7px 11px;background:rgba(255,255,255,.025);border:1px solid rgba(244,238,251,.09);border-radius:12px}.chimera-shell-health-copy{min-width:0}.chimera-shell-health-copy small{display:none}.chimera-shell-health-copy strong{overflow:hidden;font:700 11px/1.25 var(--mono);letter-spacing:.055em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}#chimera-route-header{min-height:0;gap:10px;padding:18px 2px 16px;border-bottom:1px solid rgba(244,238,251,.09)}#chimera-breadcrumbs{min-height:16px;margin-bottom:7px;color:var(--teal);font-size:11px;letter-spacing:.13em}#chimera-breadcrumbs button{color:var(--teal)}#chimera-route-title{font-size:clamp(28px,9vw,36px);line-height:.98;letter-spacing:-.045em}#chimera-route-description{display:-webkit-box;max-width:34rem;margin-top:9px;overflow:hidden;color:var(--text-dim);font-size:12px;line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chimera-route-actions{width:100%;min-height:0;align-items:center;justify-content:flex-start}#chimera-route-refresh{width:42px;min-width:42px;min-height:42px;margin-left:auto;padding:0;border-radius:12px;font-size:0}#chimera-route-refresh::first-letter{font-size:18px}.chimera-route-risk,.chimera-route-availability{max-width:calc(100% - 52px);padding:7px 10px;border-radius:12px;font-size:11px}.page{gap:14px}.card{gap:13px;padding:16px;border-color:rgba(203,186,255,.12);border-radius:16px;box-shadow:0 12px 30px rgba(0,0,0,.14)}.card-header{min-width:0;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.card-header h2,.card-header h3{font-size:17px}.form-row,.form-grid{display:grid;grid-template-columns:1fr;align-items:stretch;gap:12px}.form-row>label,.form-grid>label,.form-row input,.form-row select,.form-row textarea,.form-grid input,.form-grid select,.form-grid textarea{width:100%!important;min-width:0;max-width:none}input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{min-height:46px;font-size:16px}.btn-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.btn-row>.btn{min-width:0;min-height:46px;white-space:normal}.btn-row>.btn:only-child{grid-column:1/-1}.hint{line-height:1.55}#sidebar{top:0;bottom:0;width:min(350px,92vw);padding:0 0 calc(18px + env(safe-area-inset-bottom));background:radial-gradient(circle at 0 0,rgba(118,81,230,.19),transparent 18rem),#100c15;border-right:1px solid rgba(203,186,255,.18);z-index:2300;box-shadow:28px 0 80px rgba(0,0,0,.66)}#sidebar-scrim{inset:0;z-index:2250;background:rgba(4,3,6,.76);backdrop-filter:blur(5px)}.sidebar-brand{position:sticky;top:0;z-index:2;min-height:76px;padding:14px 18px;background:linear-gradient(180deg,rgba(16,12,21,.98),rgba(16,12,21,.92));border-bottom:1px solid rgba(244,238,251,.08)}.sidebar-brand .brand-icon{width:36px;height:36px}.sidebar-brand-copy strong{font-size:18px}.sidebar-brand-copy small{font-size:11px}.chimera-nav-root{padding:10px 9px 16px;overflow-y:auto;scrollbar-width:thin}.chimera-domaLine truncated
+1
View File
@@ -0,0 +1 @@
:root{--sidebar-w:252px}body:not(.chimera-shell-v2) #sidebar .nav-list{visibility:hidden}body.chimera-shell-v2{--chimera-shell-surface:rgba(17, 18, 22, .92)}body.chimera-modal-open{overflow:hidden}body.chimera-shell-v2 #chimera-route-header,body.chimera-shell-v2 .page.active{width:min(100%,1680px);margin-inline:auto}body[data-density=compact] .page{gap:12px}body[data-density=compact] .card{gap:10px;padding:14px}body[data-density=compact] .stat-card{padding:14px}body[data-density=compact] .chimera-domain-button{min-height:36px;padding-block:6px}body[data-density=compact] .chimera-route-link{min-height:29px;padding-block:5px}.chimera-nav-root{min-height:0;overflow-x:hidden;overflow-y:auto;padding:4px 8px 12px;scrollbar-width:thin}.chimera-nav-root::-webkit-scrollbar{width:5px}.chimera-nav-root::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}.chimera-domain{list-style:none;margin:2px 0}.chimera-domain-button{width:100%;min-height:42px;display:flex;align-items:center;gap:11px;padding:9px 10px;color:var(--text-dim);background:0 0;border:1px solid transparent;border-radius:8px;text-decoration:none;font:inherit;font-size:12px;font-weight:650;text-align:left;cursor:pointer;transition:color .16s,background .16s,border-color .16s}.chimera-domain-button svg{width:18px;height:18px;flex:0 0 auto}.chimera-domain-button>span:nth-child(2){flex:1}.chimera-domain-button:focus-visible,.chimera-domain-button:hover{color:var(--text);background:rgba(255,255,255,.055)}.chimera-domain-button.active,.chimera-domain.active>.chimera-domain-button{color:var(--accent);background:rgba(var(--accent-rgb),.09);border-color:rgba(var(--accent-rgb),.16)}.chimera-domain-chevron{flex:0 0 auto!important;font-size:20px;line-height:1;transition:transform .18s}.chimera-domain.expanded .chimera-domain-chevron{transform:rotate(90deg)}.chimera-domain-routes{list-style:none;margin:3px 0 7px 18px;padding:2px 0 2px 12px;border-left:1px solid var(--border)}.chimera-route-link{min-height:33px;display:flex;align-items:center;gap:8px;padding:7px 9px;color:var(--text-dim);border-radius:8px;text-decoration:none;font-size:12px;transition:color .14s,background .14s}.chimera-route-link>span:first-child{flex:1;min-width:0}.chimera-route-link:focus-visible,.chimera-route-link:hover{color:var(--text);background:rgba(255,255,255,.05)}.chimera-route-link.active{color:var(--accent);background:rgba(var(--accent-rgb),.11);font-weight:650}.chimera-risk-dot{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;color:var(--yellow);border:1px solid currentColor;font-size:11px;font-weight:800}.chimera-expert-route{display:none}.chimera-expert-mode .chimera-expert-route,.chimera-expert-route.active{display:flex}.chimera-expert-toggle{list-style:none;margin:10px 2px 2px;padding-top:10px;border-top:1px solid var(--border)}.chimera-expert-toggle label{min-height:42px;display:flex;flex-direction:row;align-items:center;gap:10px;padding:7px 8px;color:var(--text-dim);cursor:pointer}.chimera-expert-toggle input{width:34px;height:19px;flex:0 0 34px;position:relative;appearance:none;margin:0;padding:0;background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:background .16s,border-color .16s}.chimera-expert-toggle input::before{content:"";position:absolute;width:13px;height:13px;top:2px;left:2px;background:var(--text-dim);border-radius:50%;transition:transform .16s,background .16s}.chimera-expert-toggle input:checked{background:rgba(var(--accent-rgb),.28);border-color:rgba(var(--accent-rgb),.7)}.chimera-expert-toggle input:checked::before{background:var(--accent);transform:translateX(15px)}.chimera-expert-toggle label:hover input{border-color:rgba(var(--accent-rgb),.6)}.chimera-expert-toggle small,.chimera-expert-toggle strong{display:block}.chimera-expert-toggle strong{color:var(--text);font-size:11px}.chimera-expert-toggle small{margin-top:2px;font-size:11px}#chimera-shell-toolbar{position:sticky;top:-24px;z-index:1200;display:flex;align-items:center;justify-content:flex-end;gap:8px;min-height:38px;margin:-24px -24px 0;padding:8px 24px;background:linear-gradient(180deg,rgba(11,12,15,.98),rgba(11,12,15,.88));border-bottom:1px solid rgba(255,255,255,.055);backdrop-filter:blur(16px)}.chimera-toolbar-button{min-height:30px;display:inline-flex;align-items:center;gap:8px;padding:5px 9px;color:var(--text-dim);background:rgba(255,255,255,.035);border:1px solid var(--border);border-radius:8px;font:inherit;font-size:11px;cursor:pointer}.chimera-toolbar-button:focus-visible,.chimera-toolbar-button:hover{color:var(--text);border-color:rgba(var(--accent-rgb),.45)}.chimera-command-dialog kbd,.chimera-toolbar-button kbd{min-width:21px;padding:2px 5px;color:var(--text-dim);background:rgba(255,255,255,.055);border:1px solid var(--border);border-bottom-color:rgba(255,255,255,.24);border-radius:8px;font:11px/1.25 ui-monospace,SFMono-Regular,Consolas,monospace;text-align:center}.chimera-jobs-pulse{width:7pxLine truncated
+6
View File
@@ -0,0 +1,6 @@
.package-library-toolbar{display:flex;align-items:end;justify-content:space-between;gap:20px;background:linear-gradient(120deg,var(--surface),color-mix(in srgb,var(--accent) 8%,var(--surface)))}
.package-library-toolbar label{min-width:min(520px,100%)}.package-library-toolbar input{width:100%}.package-library-stats{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--text-muted)}
.package-library-list{display:grid;gap:16px}.package-library-set{border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}.package-library-set>header{display:flex;justify-content:space-between;gap:20px;padding:18px 20px;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 10%,transparent),transparent)}
.package-library-set h3,.package-library-set h4{margin:0}.package-library-set header span,.package-library-set header small{display:block;color:var(--text-muted)}.package-library-set header>div:last-child{text-align:right}.package-library-columns{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,.8fr);gap:20px;padding:20px}
.package-component-list,.package-recipe-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}.package-component-list li,.package-recipe-list li{display:flex;justify-content:space-between;gap:16px;padding:11px 12px;border:1px solid var(--border);border-radius:12px}.package-component-list li>div:last-child{text-align:right}.package-component-list span,.package-recipe-list span{display:block;color:var(--text-muted);font-size:var(--fs-micro)}.package-component-list code{display:block;max-width:30ch;overflow:hidden;text-overflow:ellipsis;font-size:var(--fs-micro)}.package-library-empty{color:var(--text-muted)}
@media(max-width:760px){.package-library-toolbar,.package-library-set>header{align-items:stretch;flex-direction:column}.package-library-set header>div:last-child{text-align:left}.package-library-columns{grid-template-columns:1fr;padding:14px}.package-component-list li{flex-direction:column}.package-component-list li>div:last-child{text-align:left}.package-component-list code{max-width:100%}}
+603
View File
@@ -0,0 +1,603 @@
.page-subtitle{font-size:12px;color:var(--text-dim);margin-top:3px;font-weight:400}
.dash-pinned-section{display:flex;flex-direction:column;gap:8px}
.dash-pinned-header{display:flex;align-items:center;gap:10px}
.dash-pinned-label{font-size:11px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.07em}
.dash-pinned-grid{display:flex;flex-wrap:wrap;gap:10px}
.dash-pinned-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;min-width:170px;flex:1 1 170px;max-width:260px;display:flex;flex-direction:column;gap:5px;cursor:pointer;transition:border-color .15s,background .15s}
.dash-pinned-tile:hover{border-color:var(--accent);background:var(--surface2)}
.dash-pinned-tile-title{font-size:12px;font-weight:600;color:var(--text)}
.dash-pinned-tile-page{font-size:11px;color:var(--accent);font-weight:500}
.dash-pinned-tile-hint{font-size:11px;color:var(--text-dim);line-height:1.45;flex:1}
.dash-pinned-tile-open{margin-top:8px;align-self:flex-start;font-size:12px}
.dash-pinned-empty{font-size:12px;color:var(--text-dim);padding:4px 0}
/* Pin toggle button — appears in card-headers and header-tools */
.btn-pin{background:none;border:none;cursor:pointer;padding:2px 5px;font-size:14px;line-height:1;filter:grayscale(1) opacity(.38);transition:filter .15s;flex-shrink:0}
.btn-pin:hover{filter:grayscale(.4) opacity(.8)}
.btn-pin.pinned{filter:none}
/* ── PS5 Autoloader ─────────────────────────────────────────────────────────── */
.autoloader-path-hint{font-weight:400;text-transform:none;font-size:11px;color:var(--text-dim);margin-left:6px;font-family:var(--mono,monospace)}
.autoloader-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.autoloader-status-text{font-size:12px;color:var(--text-dim)}
.autoloader-layout{display:grid;grid-template-columns:240px 1fr;gap:14px}
@media (max-width:680px){.autoloader-layout{grid-template-columns:1fr}
}
.autoloader-col-header{font-size:11px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
/* Available files column */
.autoloader-file-list{background:var(--bg);border:1px solid var(--border);border-radius:8px;max-height:360px;overflow-y:auto}
.al-file-card{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s;user-select:none}
.al-file-card:last-child{border-bottom:none}
.al-file-card:hover{background:var(--surface3)}
.al-file-name{flex:1;font-size:12px;font-family:var(--mono,monospace);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.al-file-add{font-size:12px;color:var(--text-dim);flex-shrink:0;transition:color .12s}
.al-file-card:hover .al-file-add{color:var(--teal)}
/* Sequence editor column */
.autoloader-sequence{background:var(--bg);border:1px solid var(--border);border-radius:8px;max-height:360px;overflow-y:auto}
.autoloader-seq-footer{margin-top:8px}
/* Empty state */
.al-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 16px;gap:6px;color:var(--text-dim);text-align:center}
.al-empty-icon{font-size:26px;opacity:.45}
.al-empty-hint{font-size:12px;margin:0}
/* Sequence rows */
.al-row{display:flex;align-items:flex-start;gap:6px;padding:6px 8px;border-bottom:1px solid var(--border);transition:background .12s}
.al-row:last-child{border-bottom:none}
.al-row.al-dragging{opacity:.4}
.al-row.al-drag-over{background:rgba(0,180,160,.10);border-top:2px solid var(--teal)}
.al-payload{background:transparent}
.al-delay{background:rgba(187,134,252,.05)}
/* Drag handle */
.al-grip{cursor:grab;color:var(--text-dim);font-size:12px;padding:2px 2px 0;flex-shrink:0;opacity:.5;align-self:center}
.al-grip:active{cursor:grabbing}
/* Extension badge */
.al-ext{font-size:11px;font-weight:700;letter-spacing:.04em;padding:2px 5px;border-radius:8px;flex-shrink:0;text-transform:uppercase;align-self:center;background:var(--surface3);color:var(--text-dim)}
.al-ext-elf{background:rgba(0,180,160,.18);color:var(--teal)}
.al-ext-bin{background:rgba(255,167,38,.18);color:#ffa726}
.al-ext-js{background:rgba(255,214,0,.15);color:#e6c200}
/* Payload filename */
.al-name{flex:1;font-size:12px;font-family:var(--mono,monospace);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;align-self:center;min-width:0}
/* Insert delay after (payload row) */
.al-ins-delay{background:none;border:1px solid var(--border);border-radius:8px;color:var(--text-dim);cursor:pointer;font-size:11px;padding:2px 5px;line-height:1.4;flex-shrink:0;transition:background .12s,color .12s,border-color .12s;align-self:center;white-space:nowrap}
.al-ins-delay:hover{background:var(--surface3);color:var(--teal);border-color:var(--teal)}
/* Delete button */
.al-del{background:none;border:1px solid transparent;border-radius:8px;color:var(--text-dim);cursor:pointer;font-size:11px;padding:2px 5px;line-height:1.4;flex-shrink:0;transition:background .12s,color .12s,border-color .12s;align-self:center}
.al-del:hover{background:rgba(207,102,121,.15);color:var(--red);border-color:var(--red)}
/* Delay row body */
.al-delay-clock{font-size:14px;flex-shrink:0;align-self:flex-start;padding-top:3px}
.al-delay-body{flex:1;display:flex;flex-direction:column;gap:5px;min-width:0}
.al-delay-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.al-delay-lbl{font-size:11px;color:var(--text-dim);flex-shrink:0}
.al-delay-num{width:64px;padding:2px 6px;font-size:12px;text-align:right;background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text);outline:none;flex-shrink:0}
.al-delay-num:focus{border-color:var(--accent)}
.al-delay-ms{font-size:11px;color:var(--text-dim);flex-shrink:0}
.al-delay-secs{font-size:11px;color:var(--teal);flex-shrink:0;font-style:italic}
/* Preset buttons */
.al-presets{display:flex;gap:4px;flex-wrap:wrap}
.al-preset{background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text-dim);cursor:pointer;font-size:11px;padding:2px 6px;line-height:1.4;transition:background .12s,color .12s,border-color .12s;flex-shrink:0}
.al-preset:hover{background:var(--surface3);color:var(--text)}
.al-preset-active{background:var(--teal);border-color:var(--teal);color:#fff}
.al-preset-active:hover{background:var(--teal);color:#fff}
/* Range slider */
.al-slider{width:100%;accent-color:var(--teal);cursor:pointer}
/* ── Autoloader Snapshots ─────────────────────────────────────────────────────────────── */
.snapshot-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.snapshot-list{display:flex;flex-direction:column;gap:0}
.snapshot-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border-bottom:1px solid var(--border)}
.snapshot-card:last-child{border-bottom:none}
.snapshot-card:hover{background:var(--surface3);border-radius:8px}
.snapshot-card-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.snapshot-card-label{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.snapshot-card-meta{font-size:11px;color:var(--text-dim)}
.snapshot-card-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.btn-snap-delete{color:var(--text-dim);border-color:transparent}
.btn-snap-delete:hover{color:var(--red);border-color:var(--red);background:transparent}
/* ── PS Avatar ─────────────────────────────────────────────────────────────── */
.xavatar-drop-zone{border:2px dashed var(--border);border-radius:var(--radius);padding:36px 24px;display:flex;flex-direction:column;align-items:center;gap:12px;cursor:pointer;transition:border-color .15s,background .15s;color:var(--text-dim);text-align:center}
.xavatar-drop-zone:hover,.xavatar-drop-zone--over{border-color:var(--teal);background:rgba(0,180,160,.06)}
.xavatar-drop-zone--has-image{border-style:solid;border-color:var(--teal)}
.xavatar-drop-icon{color:var(--text-dim);flex-shrink:0}
.xavatar-drop-label{font-size:12px;margin:0}
.xavatar-preview{display:block;margin:16px auto 0;max-width:220px;max-height:220px;border-radius:var(--radius);border:1px solid var(--border);image-rendering:pixelated}
.xavatar-conv-progress{margin-top:12px;height:22px;background:var(--bg2);border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}
.xavatar-conv-progress[hidden]{display:none}
.xavatar-conv-bar{height:100%;min-width:2em;background:var(--teal);color:#fff;font-size:11px;font-weight:600;line-height:22px;padding:0 8px;border-radius:var(--radius);transition:width .35s ease;white-space:nowrap;overflow:hidden}
.xavatar-actions{display:flex;align-items:center;gap:14px;margin-top:14px}
.xavatar-status{font-size:12px;color:var(--text-dim)}
.link-btn{background:none;border:none;color:var(--teal);cursor:pointer;padding:0;font-size:inherit;text-decoration:underline}
/* ── XAvatar library ───────────────────────────────────────────────────────── */
.xavatar-lapy-notice{display:flex;align-items:center;justify-content:space-between;gap:16px;background:color-mix(in srgb,var(--teal) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--teal) 35%,var(--border));border-radius:var(--radius);padding:13px 14px;font-size:12px;color:var(--text);margin-bottom:12px}
.xavatar-lapy-notice > div:first-child{display:flex;min-width:0;flex-direction:column;gap:4px}
.xavatar-lapy-notice span,.xavatar-lapy-notice small{color:var(--text-dim);overflow-wrap:anywhere}
.xavatar-companion-actions{display:flex;flex:none;align-items:center;gap:10px}
.xavatar-lapy-notice a{color:var(--accent);text-decoration:none;cursor:pointer}
.xavatar-lapy-notice a:hover{color:#fff}
@media (max-width:700px){.xavatar-lapy-notice{align-items:stretch;flex-direction:column}
.xavatar-companion-actions{justify-content:space-between}
}
/* Card grid */
.xavatar-lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;padding:12px 14px}
.xavatar-lib-card{display:flex;flex-direction:column;align-items:center;gap:6px;border:1px solid var(--border);border-radius:var(--radius);padding:8px 6px;cursor:pointer;transition:border-color .15s,background .15s;position:relative}
.xavatar-lib-card:hover{border-color:var(--teal);background:rgba(0,180,160,.05)}
/* Thumbnail wrapper */
.xavatar-thumb-wrap{position:relative;width:80px;height:80px;flex-shrink:0;border-radius:calc(var(--radius) - 2px);overflow:hidden;background:var(--bg2);display:flex;align-items:center;justify-content:center}
.xavatar-thumb{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .25s}
.xavatar-thumb-loaded .xavatar-thumb{opacity:1}
.xavatar-thumb-placeholder{font-size:32px;color:var(--text-dim);pointer-events:none}
.xavatar-thumb-loaded .xavatar-thumb-placeholder{display:none}
.xavatar-thumb-error .xavatar-thumb-placeholder{display:none}
.xavatar-thumb-error .xavatar-thumb-wrap::after{content:'?';position:absolute;font-size:28px;color:var(--text-dim)}
/* Card info */
.xavatar-lib-card-info{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%;overflow:hidden}
.xavatar-lib-card-name{font-size:11px;font-family:var(--mono,monospace);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center}
.xavatar-lib-card-size{font-size:11px;color:var(--text-dim)}
/* Card action buttons row */
.xavatar-lib-card-actions{display:flex;gap:4px;margin-top:2px}
.btn-xs{font-size:11px;padding:2px 7px;line-height:1.4}
/* ── XAvatar full-size modal ─────────────────────────────────────────────── */
.xavatar-modal-box{background:var(--bg1);border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;align-items:center;gap:12px;max-width:500px;width:90vw;pointer-events:auto;max-height:calc(100dvh - 32px);overflow:auto}
.xavatar-modal-img{width:280px;height:280px;object-fit:contain;border-radius:var(--radius);background:var(--bg2);border:1px solid var(--border);image-rendering:pixelated}
.xavatar-modal-name{font-size:12px;font-family:var(--mono,monospace);color:var(--text-dim);text-align:center;word-break:break-all;margin:0}
.xavatar-modal-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
#xavatar-thumb-modal[hidden]{display:none !important}
#xavatar-thumb-modal{padding:16px;backdrop-filter:blur(8px)}
#xavatar-thumb-modal .btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (max-width:560px){.xavatar-modal-box{width:100%;padding:16px}
.xavatar-modal-img{width:min(280px,72vw);height:min(280px,72vw)}
.xavatar-modal-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
.xavatar-modal-actions .btn{min-width:0}
}
/* ── Game Conversion ─────────────────────────────────────────────────────── */
/* Extra badge colour */
.badge-blue{background:rgba(64,156,255,.2);color:#64b0ff;border-radius:8px;padding:2px 6px;font-size:11px;font-weight:600}
/* OS-restriction badge (shown inside button labels) */
.badge-os{display:inline-block;background:rgba(240,192,64,.18);color:var(--yellow);border-radius:8px;padding:1px 4px;font-size:11px;font-weight:700;vertical-align:middle;margin-left:3px}
/* ── Settings:radio mode-card selector ── */
.radio-card{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface2);cursor:pointer;min-width:140px;transition:border-color .15s,background .15s}
.radio-card:hover{border-color:var(--accent-d)}
.radio-card input[type="radio"]{display:none}
.radio-card-title{font-size:12px;font-weight:700;color:var(--text)}
.radio-card-desc{font-size:11px;color:var(--text-dim)}
.radio-card:has(input:checked){border-color:var(--accent);background:rgba(var(--accent-rgb),.08)}
.radio-card:has(input:checked) .radio-card-title{color:var(--accent)}
/* ── Settings:conv mode sections ── */
.conv-mode-section{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
#conv-shared-fields{margin-top:12px}
/* ── Small toggle row (for psnotify checkboxes) ── */
.toggle-row-sm{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:12px;color:var(--text-dim);cursor:pointer;margin-top:4px}
.toggle-row-sm input[type="checkbox"]{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}
.conv-psn-checkboxes{display:flex;flex-wrap:wrap;gap:0 18px;padding:8px 0 4px 8px}
/* Row-style labels must override the global vertical form-label layout. */
.ecosystem-check{flex-direction:row}
/* ── Conversion Queue Panel (shown on Games page) ── */
.conv-queue-panel{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;overflow:hidden}
.conv-queue-header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--surface3);border-bottom:1px solid var(--border);flex-wrap:wrap}
.conv-queue-title{font-size:12px;font-weight:700;color:var(--text-dim);white-space:nowrap}
.conv-queue-spacer{flex:1}
.conv-mode-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;border:1px solid var(--border);background:rgba(187,134,252,.12);color:var(--accent);font-size:11px;font-weight:700;white-space:nowrap}
.conv-queue-body{}
.conv-queue-list{}
.conv-queue-empty{padding:12px 16px;font-size:12px;color:var(--text-dim);text-align:center}
/* ── Individual conv job row ── */
.conv-job-row{padding:8px 12px;border-bottom:1px solid var(--border);font-size:12px}
.conv-job-row:last-child{border-bottom:none}
.conv-job-summary{display:flex;align-items:center;gap:10px}
.conv-log-box{margin:5px 0 0;padding:5px 8px;background:var(--surface3);border-radius:8px;font-family:var(--mono,monospace);font-size:10.5px;color:var(--text-dim);white-space:pre-wrap;word-break:break-all;max-height:160px;overflow-y:auto}
.conv-job-error{margin-top:4px;color:var(--red,#e05);font-size:11px;word-break:break-word;white-space:pre-wrap}
.conv-job-id{color:var(--text-dim);min-width:28px;font-family:var(--mono,monospace)}
.conv-job-game{font-weight:600;color:var(--text);min-width:100px}
.conv-job-mode{color:var(--accent);min-width:50px;font-size:11px}
.conv-job-phase{flex:1;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv-job-bar-wrap{width:80px;height:6px;background:var(--surface3);border-radius:8px;overflow:hidden;flex-shrink:0}
.conv-job-bar{height:100%;background:var(--accent);border-radius:8px;transition:width .3s}
.conv-job-bar.conv-bar-done{background:var(--green)}
.conv-job-bar.conv-bar-error{background:var(--red)}
.conv-job-bar.conv-bar-running{background:var(--teal)}
.conv-job-status{min-width:60px;text-align:right;font-size:11px}
.conv-status-queued{color:var(--text-dim)}
.conv-status-running{color:var(--teal)}
.conv-status-done{color:var(--green)}
.conv-status-error{color:var(--red)}
.conv-status-cancelled{color:var(--text-dim)}
.conv-job-actions{display:flex;gap:4px;flex-shrink:0}
@media (max-width:560px){.conv-queue-header{align-items:stretch}
.conv-queue-spacer{display:none}
.conv-queue-header > .btn{flex:1 1 calc(50% - 4px);min-width:0;white-space:normal}
.conv-mode-switcher{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin}
.conv-job-summary{flex-wrap:wrap}
.conv-job-phase{min-width:140px}
}
/* ── Install modal:mode tabs ── */
.install-mode-tab{border-radius:8px;font-size:11px;padding:4px 10px;border:1.5px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer;transition:all .15s}
.install-mode-tab:hover{border-color:var(--accent-d);color:var(--text)}
.install-mode-tab.active{border-color:var(--accent);background:rgba(var(--accent-rgb),.1);color:var(--accent);font-weight:600}
.install-mode-section{}
/* ── Conversion queue panel — mode switcher & warning ────────────────────── */
.conv-mode-switcher{display:flex;align-items:center;gap:6px;padding:6px 12px 2px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.conv-mode-switcher-label{font-size:11px;color:var(--text-muted);margin-right:2px;text-transform:uppercase;letter-spacing:.04em}
.conv-mode-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:16px;border:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:11px;font-weight:600;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}
.conv-mode-btn:hover{border-color:var(--accent);color:var(--text)}
.conv-mode-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}
.conv-mode-warn{display:flex;align-items:center;gap:10px;padding:7px 12px;background:rgba(255,140,0,.1);border-bottom:1px solid rgba(255,140,0,.3);font-size:12px;color:#ff8c00;flex-wrap:wrap}
.conv-mode-warn .btn{flex-shrink:0;padding:2px 10px;font-size:11px;border-color:#ff8c00;color:#ff8c00}
.conv-mode-warn .btn:hover{background:rgba(255,140,0,.2)}
/* ── GarlicSaves ─────────────────────────────────────────────────────────── */
.garlic-progress-area{display:flex;flex-direction:column;gap:6px;margin:10px 0 4px}
.garlic-progress-step{font-size:12px;color:var(--text-dim)}
.garlic-progress-bar-wrap{height:4px;border-radius:8px;background:var(--border);overflow:hidden}
.garlic-progress-bar{height:100%;border-radius:8px;background:var(--accent);transition:width .25s ease}
.garlic-config-pre{background:var(--bg-elevated,var(--surface2));border:1px solid var(--border);border-radius:8px;padding:10px 14px;font-size:12px;font-family:monospace;margin:8px 0 0;white-space:pre-wrap;word-break:break-all;color:var(--text);line-height:1.6}
.garlic-tips{padding-left:20px;margin:4px 0 0;display:flex;flex-direction:column;gap:7px}
.garlic-tips li{font-size:12px;color:var(--text);line-height:1.5}
.garlic-link{color:var(--accent);text-decoration:none}
.garlic-link:hover{text-decoration:underline}
.garlic-confirm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:9100}
.garlic-confirm-overlay[hidden]{display:none}
.garlic-confirm-dialog{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px 28px;max-width:420px;width:100%;box-shadow:0 8px 32px rgba(0,0,0,.6)}
.garlic-confirm-title{font-size:16px;font-weight:600;color:var(--text);margin:0 0 12px}
.garlic-confirm-dialog p{font-size:12px;color:var(--text-dim);line-height:1.5;margin:0}
.garlic-confirm-btns{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}
/* ── Native Save Manager (GarlicMgr) ─────────────────────────────────────── */
.sm-body{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
/* Sub-tabs */
.sm-tabs{display:flex;gap:4px;padding:7px 14px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--surface2)}
.sm-tab{padding:4px 14px;border-radius:16px;border:1.5px solid var(--border);background:transparent;color:var(--text-dim);font-size:11px;font-weight:700;cursor:pointer;transition:all .15s;text-transform:uppercase;letter-spacing:.6px}
.sm-tab:hover{border-color:var(--accent);color:var(--text)}
.sm-tab.active{background:var(--accent);border-color:var(--accent);color:var(--bg)}
/* Panes */
.sm-pane{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
/* Browse tab layout */
.sm-layout{display:flex;flex:1;min-height:0;overflow:hidden}
/* Left saves list */
.sm-left{width:220px;flex-shrink:0;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;background:var(--surface)}
.sm-section-label{padding:7px 14px;font-size:11px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--border);flex-shrink:0}
.sm-saves{flex:1;overflow-y:auto}
.sm-save-item{padding:9px 14px;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.04);transition:background .1s}
.sm-save-item:hover{background:rgba(255,255,255,.05)}
.sm-save-item.active{background:rgba(var(--accent-rgb),.12);border-left:2px solid var(--accent);padding-left:12px}
.sm-save-tid{font-size:11px;font-weight:700;color:var(--accent);font-family:monospace}
.sm-save-item.active .sm-save-tid{color:var(--text)}
.sm-save-name{font-size:11px;color:var(--text-dim);margin-top:2px;font-family:monospace;word-break:break-all}
.sm-empty-list{padding:20px 14px;font-size:12px;color:var(--text-dim);text-align:center}
/* Right panel */
.sm-right{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.sm-right.sm-drag-over{outline:2px dashed var(--accent);outline-offset:-2px;background:rgba(var(--accent-rgb),.04)}
/* Empty state */
.sm-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-dim);text-align:center;padding:32px}
.sm-empty p{margin:0;font-size:14px}
/* Mounted save header */
.sm-save-header{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--surface);flex-wrap:wrap}
.sm-game-icon{width:80px;height:45px;border-radius:8px;object-fit:cover;background:var(--surface2);flex-shrink:0}
.sm-save-meta-block{flex:1;min-width:0}
.sm-save-title-text{font-size:14px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sm-save-meta-row{font-size:11px;color:var(--text-dim);margin-top:3px}
.sm-save-ftp-row{font-size:11px;color:var(--text-dim);margin-top:2px;opacity:.5;font-family:monospace}
.sm-save-btns{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
/* File tree */
.sm-filetree{flex:1;overflow-y:auto;background:var(--bg)}
.sm-fi{display:flex;align-items:center;gap:5px;padding:5px 12px;cursor:pointer;user-select:none;font-size:12px;color:var(--text);transition:background .1s}
.sm-fi:hover{background:var(--surface2)}
.sm-fi.sm-fi-dir{color:var(--accent);font-weight:600}
.sm-fi-sz{margin-left:auto;font-size:11px;color:var(--text-dim);font-family:monospace}
.sm-tip{padding:6px 14px;font-size:11px;color:var(--text-dim);opacity:.5;text-align:center}
/* Context menu */
.sm-ctx{position:fixed;z-index:9999;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:3px 0;min-width:140px;box-shadow:0 4px 16px rgba(0,0,0,.6)}
.sm-ctx div{padding:7px 14px;font-size:12px;cursor:pointer;color:var(--text)}
.sm-ctx div:hover{background:var(--surface3)}
.sm-ctx .sm-ctx-del{color:var(--red)}
/* Single panes (decrypt / encrypt / resign) */
.sm-single{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:40px}
.sm-field-row{display:flex;align-items:center;gap:10px}
.sm-field-label{font-size:11px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}
.sm-field-row input{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:6px 10px;border-radius:8px;font-family:monospace;font-size:12px;width:180px}
.sm-drop{border:2px dashed var(--border);border-radius:var(--radius);padding:36px 60px;text-align:center;transition:border-color .15s,background .15s;display:flex;flex-direction:column;align-items:center;gap:14px;min-width:300px}
.sm-drop.sm-drag-over{border-color:var(--accent);background:rgba(var(--accent-rgb),.06)}
.sm-drop-label{font-size:12px;color:var(--text-dim);line-height:1.6}
.sm-drop-label strong{color:var(--text)}
/* Progress bars */
.sm-progress{padding:4px 14px;flex-shrink:0}
.sm-progress-bar{height:3px;background:var(--border);border-radius:8px;overflow:hidden}
.sm-progress-fill{height:100%;background:var(--accent);border-radius:8px;transition:width .1s}
.sm-progress-text{font-size:11px;color:var(--text-dim);margin-top:3px;font-family:monospace}
/* Terminal */
.sm-terminal{flex-shrink:0;height:90px;border-top:1px solid var(--border);background:#0a0a0a;display:flex;flex-direction:column}
.sm-terminal-header{padding:3px 12px;font-size:11px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid rgba(255,255,255,.05);flex-shrink:0}
.sm-log{flex:1;overflow-y:auto;padding:3px 8px}
.sm-ll{padding:1px 0;font-size:11px;color:var(--text-dim);display:flex;gap:8px;font-family:monospace}
.sm-lt{color:rgba(255,255,255,.25);flex-shrink:0}
.sm-ll.sm-ok{color:#4caf50}
.sm-ll.sm-err{color:var(--red)}
/* ── Dashboard interactive widget tiles ──────────────────────────────────────── */
.dash-pinned-tile--widget{cursor:default}
.dash-pinned-tile--widget:hover{border-color:var(--border);background:var(--surface)}
.dash-widget-hdr{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);margin-bottom:6px}
.dash-widget-input{width:100%;box-sizing:border-box;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:5px 8px;font-size:12px;outline:none;margin-bottom:4px;display:block}
.dash-widget-input:focus{border-color:var(--accent)}
.dash-widget-select{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:5px 8px;font-size:12px;cursor:pointer;margin-bottom:6px;display:block;outline:none}
.dash-widget-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:4px}
.dash-widget-status{font-size:11px;color:var(--text-dim);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-widget-port-input{width:62px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:4px 6px;font-size:12px;font-family:monospace;text-align:right;outline:none}
.dash-widget-port-lbl{font-size:11px;color:var(--text-dim);white-space:nowrap}
.dash-widget-log{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);font-family:monospace;font-size:11px;padding:6px 8px;max-height:110px;overflow-y:auto;color:var(--text-dim);flex:1;margin-bottom:4px;white-space:pre-wrap;word-break:break-all;min-height:50px}
.dash-widget-drop{background:var(--surface2);border:2px dashed var(--border);border-radius:var(--radius);padding:10px 8px;text-align:center;font-size:11px;color:var(--text-dim);cursor:pointer;margin-bottom:6px;transition:border-color .15s,color .15s}
.dash-widget-drop:hover,.dash-widget-drop.dw-drag-over{border-color:var(--accent);color:var(--accent)}
.dash-widget-savelist{font-size:11px;max-height:100px;overflow-y:auto;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:4px 0;margin-bottom:4px;color:var(--text-dim);padding-left:8px}
.dash-dw-save-row{display:flex;align-items:center;gap:6px;padding:3px 8px 3px 0;border-bottom:1px solid var(--border)}
.dash-dw-save-row:last-child{border-bottom:none}
.dash-dw-save-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:11px}
/* ── Chimera Hub ─────────────────────────────────────────────────────────── */
.ecosystem-header,.ecosystem-header-actions,.ecosystem-card-header,.ecosystem-inline-actions,.ecosystem-filter-row{display:flex;align-items:center;gap:10px}
.ecosystem-header,.ecosystem-card-header{justify-content:space-between}
.ecosystem-header-actions{flex-wrap:wrap}
.ecosystem-tabs{display:flex;gap:4px;overflow-x:auto;margin:0 0 16px;padding:4px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.ecosystem-tab{border:0;border-radius:8px;background:transparent;color:var(--text-dim);padding:9px 12px;white-space:nowrap;cursor:pointer;font:inherit}
.ecosystem-tab:hover{color:var(--text);background:var(--surface2)}
.ecosystem-tab.active{color:var(--text);background:color-mix(in srgb,var(--accent) 20%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)}
.ecosystem-panel{display:none}
.ecosystem-panel.active{display:block}
.ecosystem-two-column{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.ecosystem-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-bottom:16px}
.ecosystem-service-row,.ecosystem-source-row,.ecosystem-plugin-row,.ecosystem-save-row,.ecosystem-vault-row,.ecosystem-history-row,.ecosystem-cheat-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--border)}
.ecosystem-service-row:last-child,.ecosystem-source-row:last-child,.ecosystem-plugin-row:last-child,.ecosystem-save-row:last-child,.ecosystem-vault-row:last-child,.ecosystem-history-row:last-child{border-bottom:0}
.ecosystem-service-row>div,.ecosystem-source-row>div:first-child,.ecosystem-plugin-row>div:first-child,.ecosystem-save-row>div:first-child,.ecosystem-vault-row>div:first-child,.ecosystem-history-row>div:first-child,.ecosystem-cheat-row>div:first-child{display:flex;flex-direction:column;gap:3px;min-width:0}
.ecosystem-service-row span,.ecosystem-source-row span,.ecosystem-plugin-row span,.ecosystem-save-row span,.ecosystem-vault-row span,.ecosystem-history-row span,.ecosystem-cheat-row span,.ecosystem-cheat-row small{color:var(--text-dim);font-size:12px}
.ecosystem-source-row code,.ecosystem-plugin-row code,.ecosystem-vault-row code{font-size:11px;overflow-wrap:anywhere}
.ecosystem-safety{display:grid;gap:12px}
.ecosystem-safety p{display:flex;flex-direction:column;gap:3px;margin:0;padding:10px;border-left:3px solid var(--teal);background:color-mix(in srgb,var(--teal) 7%,transparent)}
.ecosystem-safety span{color:var(--text-dim);font-size:12px}
.ecosystem-component-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.ecosystem-component{display:grid;grid-template-columns:1fr auto;gap:8px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}
.ecosystem-component.expert{border-color:color-mix(in srgb,var(--red) 45%,var(--border))}
.ecosystem-component>div{display:flex;flex-direction:column;gap:3px}
.ecosystem-component>div:nth-child(2){align-items:flex-end}
.ecosystem-component span,.ecosystem-component p{color:var(--text-dim);font-size:11px}
.ecosystem-component p{grid-column:1/-1;margin:0;min-height:32px}
.ecosystem-component button{justify-self:start}
.ecosystem-component-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-bottom:14px}
.ecosystem-component-summary>div{display:flex;min-width:0;flex-direction:column;gap:2px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--surface2)}
.ecosystem-component-summary strong{overflow:hidden;color:var(--text);font-size:14px;text-overflow:ellipsis;white-space:nowrap}
.ecosystem-component-summary span{color:var(--text-dim);font-size:11px}
.ecosystem-component-group{margin-top:18px}
.ecosystem-component-group>header{display:flex;align-items:end;justify-content:space-between;margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid var(--border)}
.ecosystem-component-group>header h4{margin:0;font-size:12px}
.ecosystem-component-group>header span{color:var(--text-dim);font-size:11px}
.ecosystem-plugin-inspection{margin:0 0 8px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#080a0f;color:var(--text-dim);font:11px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}
.ecosystem-preset-row{margin-bottom:14px}
.ecosystem-preset-row label{min-width:180px}
.ecosystem-config-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.ecosystem-config-field{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface2)}
.ecosystem-config-field small{color:var(--yellow);text-transform:uppercase;font-size:11px}
.ecosystem-config-field.expert{border-color:color-mix(in srgb,var(--red) 40%,var(--border))}
.ecosystem-config-field input[type=number]{width:78px}
.ecosystem-raw-config{margin-top:14px}
.ecosystem-raw-config summary{cursor:pointer;color:var(--text-dim);margin-bottom:8px}
.ecosystem-diff-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px;border-bottom:1px solid var(--border)}
.ecosystem-diff-row.advanced,.ecosystem-diff-row.expert{border-left:3px solid var(--yellow)}
.ecosystem-history{margin-top:16px}
.ecosystem-homebrew-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}
.ecosystem-homebrew-card{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:11px;padding:11px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}
.ecosystem-homebrew-card img,.ecosystem-homebrew-placeholder{width:56px;height:56px;border-radius:12px;object-fit:cover}
.ecosystem-homebrew-placeholder{display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 20%,var(--bg));color:var(--accent);font-weight:800}
.ecosystem-homebrew-card>div:nth-child(2){display:flex;flex-direction:column;gap:3px;min-width:0}
.ecosystem-homebrew-card span{color:var(--text-dim);font-size:11px}
.ecosystem-homebrew-card code{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ecosystem-source-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ecosystem-source-form label{display:flex;flex-direction:column;gap:5px;color:var(--text-dim);font-size:12px}
.ecosystem-source-form button{align-self:end}
.ecosystem-plugin-row.conflict,.ecosystem-cheat-row.conflict{border-left:3px solid var(--yellow);padding-left:9px}
.ecosystem-filter-row{margin:12px 0;flex-wrap:wrap}
.ecosystem-filter-row .search-input{min-width:240px;flex:1}
.ecosystem-check{display:flex;align-items:center;gap:7px;color:var(--text-dim);font-size:12px}
.ecosystem-page-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.ecosystem-page-summary p{margin:0}
.ecosystem-cheat-list{max-height:65vh;overflow:auto;padding-right:4px}
.ecosystem-cheat-row{padding:10px}
.ecosystem-cheat-row small{display:block}
.ecosystem-log{max-height:62vh;overflow:auto;border:1px solid var(--border);border-radius:8px;background:#080a0f;font:12px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace}
.ecosystem-log-row{display:grid;grid-template-columns:70px 100px minmax(0,1fr);gap:10px;padding:5px 8px;border-bottom:1px solid rgba(255,255,255,.05)}
.ecosystem-log-row time{color:var(--text-dim)}
.ecosystem-log-row strong{color:var(--teal)}
.ecosystem-log-row.warning strong{color:var(--yellow)}
.ecosystem-log-row.error{background:rgba(255,70,70,.08)}
.ecosystem-log-row.error strong{color:var(--red)}
.game-updates-primary-form{grid-template-columns:minmax(0,1fr)}
.game-updates-primary-form select,.game-updates-primary-form button{max-width:none;width:100%}
.ecosystem-command-grid{margin-top:16px}
.ecosystem-alert{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--border)}
.ecosystem-alert:last-child{border-bottom:0}
.ecosystem-alert>div:first-child{display:flex;flex-direction:column;gap:4px;min-width:0}
.ecosystem-alert>div:first-child span{color:var(--text-dim);font-size:12px;line-height:1.45}
.ecosystem-alert-critical{border-left:3px solid var(--red);padding-left:10px}
.ecosystem-alert-warning{border-left:3px solid var(--yellow);padding-left:10px}
.ecosystem-alert.acknowledged{opacity:.58}
.ecosystem-activity{max-height:420px;overflow:auto}
.ecosystem-activity-row{display:grid;grid-template-columns:130px minmax(0,1fr);gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}
.ecosystem-activity-row:last-child{border-bottom:0}
.ecosystem-activity-row time{color:var(--text-dim);font-size:11px}
.ecosystem-activity-row>div{display:flex;flex-direction:column;gap:3px}
.ecosystem-activity-row span{color:var(--text-dim);font-size:12px}
.ecosystem-health-trend{height:96px;display:flex;align-items:flex-end;gap:4px;margin:0 0 12px;padding:10px 8px 20px;border:1px solid var(--border);border-radius:8px;background:linear-gradient(to top,color-mix(in srgb,var(--red) 5%,transparent),color-mix(in srgb,var(--teal) 5%,transparent))}
.ecosystem-health-trend>div{position:relative;display:flex;align-items:flex-end;flex:1;height:100%;min-width:5px}
.ecosystem-health-trend i{display:block;width:100%;min-height:3px;border-radius:3px 3px 0 0;background:linear-gradient(to top,var(--yellow),var(--teal));opacity:.8}
.ecosystem-health-trend span{position:absolute;top:calc(100% + 3px);left:50%;transform:translateX(-50%);color:var(--text-dim);font-size:11px}
.ecosystem-health-trend>div:not(:nth-last-child(-n+10)) span{display:none}
.ecosystem-plan-safety{display:flex;flex-direction:column;gap:4px;margin:4px 0 14px;padding:11px 13px;border-left:3px solid var(--teal);background:color-mix(in srgb,var(--teal) 7%,transparent)}
.ecosystem-plan-safety span{color:var(--text-dim);font-size:12px;overflow-wrap:anywhere}
.ecosystem-update-list{display:grid;gap:9px}
.ecosystem-update-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,auto);align-items:center;gap:14px;padding:13px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}
.ecosystem-update-row.expert{border-color:color-mix(in srgb,var(--red) 45%,var(--border))}
.ecosystem-update-main{display:flex;flex-direction:column;gap:4px;min-width:0}
.ecosystem-update-main>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ecosystem-update-main span,.ecosystem-update-main small{color:var(--text-dim);font-size:11px}
.ecosystem-update-controls{display:flex;align-items:flex-end;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.ecosystem-update-controls label{display:flex;flex-direction:column;gap:4px;color:var(--text-dim);font-size:11px}
.ecosystem-update-controls input{width:132px}
.ecosystem-update-controls select{max-width:230px}
.ecosystem-discovery{display:flex;flex-direction:column;gap:6px;margin:0 0 12px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--teal) 35%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--teal) 6%,transparent)}
.ecosystem-discovery>div{display:flex;gap:7px;flex-wrap:wrap}
.ecosystem-discovery span{font-size:11px;color:var(--text-dim);padding:4px 7px;border:1px solid var(--border);border-radius:8px}
.ecosystem-update-group{margin:0 0 18px}
.ecosystem-update-group>header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;padding:9px 11px;border-left:3px solid var(--border);background:var(--surface2)}
.ecosystem-update-group>header>div{display:flex;flex-direction:column;gap:2px}
.ecosystem-update-group>header h4{margin:0;font-size:12px}
.ecosystem-update-group>header span{color:var(--text-dim);font-size:11px}
.ecosystem-update-group>header b{display:grid;min-width:24px;height:24px;place-items:center;border-radius:12px;background:rgba(255,255,255,.06)}
.ecosystem-update-group-ready>header{border-color:var(--teal)}
.ecosystem-update-group-review>header{border-color:var(--yellow)}
.ecosystem-update-group-current>header{border-color:var(--green)}
.y2jb-catalog-picker{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(280px,1.5fr) auto;align-items:center;gap:12px;margin-top:14px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}
.y2jb-catalog-picker>div:first-child{display:flex;flex-direction:column;gap:3px}
.y2jb-catalog-picker span{color:var(--text-dim);font-size:11px}
.y2jb-catalog-picker select{width:100%;min-height:86px}
.y2jb-catalog-actions{display:flex;flex-direction:column;gap:7px}
.ea-native-status{font-size:12px;color:var(--text-dim)}
.ea-native-status.ok{color:var(--green)}
.ea-native-status.warning{color:var(--yellow)}
.ea-native-status.error{color:var(--red)}
.ea-native-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px}
.ea-native-card{padding-bottom:8px}
.ea-native-path{display:flex;align-items:center;gap:10px;margin:2px 0 10px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface2)}
.ea-native-path code{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ea-native-list{display:grid;gap:6px}
.ea-native-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--surface2)}
.ea-native-row>div:nth-child(2){display:flex;min-width:0;flex-direction:column;gap:3px}
.ea-native-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ea-native-row span{color:var(--text-dim);font-size:11px}
.ea-native-icon{font-size:16px;text-align:center}
.ecosystem-repository-bridge{display:grid;grid-template-columns:minmax(240px,1fr) minmax(260px,420px) auto auto;align-items:center;gap:8px;margin:0 0 14px;padding:12px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--accent) 6%,transparent)}
.ecosystem-repository-bridge>div{display:flex;flex-direction:column;gap:3px}
.ecosystem-repository-bridge span{color:var(--text-dim);font-size:11px;line-height:1.4}
.ecosystem-repository-bridge input{min-width:0;font:11px ui-monospace,SFMono-Regular,Consolas,monospace}
.ecosystem-readiness-card{margin-bottom:12px}
.ecosystem-readiness-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.ecosystem-readiness-step{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:9px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--surface2);color:var(--text);text-align:left}
.ecosystem-readiness-step:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}
.ecosystem-readiness-step>span:first-child{display:grid;place-items:center;width:24px;height:24px;border-radius:999px;background:var(--surface);color:var(--text-dim);font-weight:800}
.ecosystem-readiness-step>span:nth-child(2){display:flex;flex-direction:column;gap:3px;min-width:0}
.ecosystem-readiness-step small,.ecosystem-readiness-step em{color:var(--text-dim);line-height:1.35}
.ecosystem-readiness-step em{font-size:11px}
.ecosystem-readiness-step>b{color:var(--text-dim);font-size:11px;text-transform:uppercase}
.ecosystem-readiness-step.ready{border-color:color-mix(in srgb,var(--teal) 45%,var(--border))}
.ecosystem-readiness-step.ready>span:first-child{background:color-mix(in srgb,var(--teal) 18%,var(--surface));color:var(--teal)}
.ecosystem-readiness-step.attention>span:first-child{background:color-mix(in srgb,var(--yellow) 16%,var(--surface));color:var(--yellow)}
.ecosystem-readiness-step.not-configured,.ecosystem-readiness-step.optional{opacity:.78}
@media(max-width:1000px){.ecosystem-two-column{grid-template-columns:1fr}
.ecosystem-component-list{grid-template-columns:1fr}
.ecosystem-update-row,.ecosystem-repository-bridge{grid-template-columns:1fr}
.ecosystem-update-controls{justify-content:flex-start}
.ecosystem-readiness-flow{grid-template-columns:repeat(2,minmax(0,1fr))}
.y2jb-catalog-picker{grid-template-columns:1fr}
.y2jb-catalog-actions{flex-direction:row}
}
@media(max-width:700px){.ecosystem-header,.ecosystem-card-header{align-items:flex-start;flex-direction:column}
.ecosystem-source-form{grid-template-columns:1fr}
.ecosystem-service-row,.ecosystem-source-row,.ecosystem-plugin-row,.ecosystem-save-row,.ecosystem-vault-row,.ecosystem-cheat-row,.ecosystem-alert{align-items:flex-start;flex-direction:column}
.ecosystem-activity-row{grid-template-columns:1fr}
.ecosystem-update-controls{align-items:stretch;flex-direction:column}
.ecosystem-update-controls input,.ecosystem-update-controls select,.ecosystem-update-controls button,.ecosystem-repository-bridge input,.ecosystem-repository-bridge button{max-width:none;width:100%}
.ecosystem-homebrew-card{grid-template-columns:48px 1fr}
.ecosystem-homebrew-card img,.ecosystem-homebrew-placeholder{width:48px;height:48px}
.ecosystem-homebrew-card button{grid-column:1/-1;width:100%}
.ecosystem-log-row{grid-template-columns:60px 80px minmax(0,1fr)}
.ecosystem-readiness-flow{grid-template-columns:1fr}
.ecosystem-component-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
.ea-native-summary{grid-template-columns:1fr}
.ea-native-row{grid-template-columns:26px minmax(0,1fr)}
.ea-native-row>.ecosystem-inline-actions{grid-column:1/-1;justify-content:flex-end}
}
.remote-play-page{display:grid!important;grid-template-columns:minmax(0,1fr);gap:16px;min-width:0}
.remote-play-page[hidden]{display:none!important}
.remote-play-page>.card,.remote-play-page>.remote-play-columns,.remote-play-columns>.card{min-width:0}
.remote-play-hero{position:relative;overflow:hidden;background:radial-gradient(circle at 90% -30%,color-mix(in srgb,var(--teal) 24%,transparent),transparent 44%),linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--surface2) 92%,var(--teal)))}
.remote-play-hero:after{content:"";position:absolute;right:-70px;bottom:-110px;width:250px;height:250px;border:1px solid color-mix(in srgb,var(--teal) 22%,transparent);border-radius:50%;pointer-events:none}
.remote-play-kicker{display:block;margin-bottom:5px;color:var(--teal);font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.remote-play-readiness{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0}
.remote-play-check{display:flex;align-items:center;gap:10px;min-width:0;padding:12px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface2) 84%,transparent)}
.remote-play-check-dot{width:10px;height:10px;flex:0 0 auto;border-radius:50%;background:var(--text-dim);box-shadow:0 0 0 4px color-mix(in srgb,var(--text-dim) 12%,transparent)}
.remote-play-check.ready{border-color:color-mix(in srgb,var(--teal) 38%,var(--border))}
.remote-play-check.ready .remote-play-check-dot{background:var(--teal);box-shadow:0 0 0 4px color-mix(in srgb,var(--teal) 15%,transparent)}
.remote-play-check.standby .remote-play-check-dot{background:#f4a261;box-shadow:0 0 0 4px color-mix(in srgb,#f4a261 15%,transparent)}
.remote-play-check>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.remote-play-check small{overflow:hidden;color:var(--text-dim);font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.remote-play-primary-actions{position:relative;z-index:1;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.remote-play-primary-actions .hint{flex:1;min-width:220px;margin-left:4px}
.remote-play-columns{align-items:start}
.remote-play-profile-form{grid-template-columns:repeat(2,minmax(0,1fr))}
.remote-play-profile-form button{align-self:end}
.remote-play-workers{display:grid;gap:2px}
.remote-play-worker-row .ecosystem-inline-actions{align-items:center;flex-direction:row}
.remote-play-page code{font-size:11px}
@media(max-width:1000px){.remote-play-readiness{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){.remote-play-readiness,.remote-play-profile-form{grid-template-columns:1fr}
.remote-play-primary-actions{align-items:stretch;flex-direction:column}
.remote-play-primary-actions .btn{width:100%}
.remote-play-primary-actions .hint{min-width:0;margin-left:0}
.remote-play-page .ecosystem-inline-actions{flex-wrap:wrap}
.remote-play-worker-row .ecosystem-inline-actions{align-items:flex-start}
}
/* ── Games library ─────────────────────────────────────────────────────────── */
.view-switch{display:inline-flex;padding:2px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}
.view-switch-btn{width:30px;height:28px;border:0;border-radius:8px;background:transparent;color:var(--text-dim);cursor:pointer}
.view-switch-btn:hover,.view-switch-btn.active{background:var(--surface3);color:var(--accent)}
.game-platform-switch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:12px 0;padding:6px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface) 82%,transparent)}
.game-platform-btn{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;padding:10px 12px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-dim);font:600 12px/1.2 inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}
.game-platform-btn:hover{background:var(--surface2);color:var(--text)}
.game-platform-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.game-platform-btn.active{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:color-mix(in srgb,var(--accent) 12%,var(--surface2));color:var(--text)}
.game-platform-btn-ps4.active{border-color:rgba(91,147,226,.58);background:rgba(58,123,213,.12)}
.game-platform-btn-ps5.active{border-color:rgba(0,206,209,.48);background:rgba(0,206,209,.09)}
.game-platform-btn strong{display:grid;place-items:center;min-width:28px;height:22px;padding:0 7px;border-radius:999px;background:var(--surface3);color:var(--text-dim);font-size:11px}
.game-platform-btn.active strong{background:color-mix(in srgb,var(--accent) 18%,var(--surface3));color:var(--text)}
.game-platform-btn[hidden]{display:none}
.games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-top:14px}
.game-card{min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:0 4px 18px rgba(0,0,0,.12);transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.game-card:hover,.game-card:focus-visible{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 60%,var(--border));box-shadow:0 8px 24px rgba(0,0,0,.2)}
.game-card-art{aspect-ratio:1/1;overflow:hidden;background:linear-gradient(145deg,var(--surface2),var(--bg))}
.game-card-cover{display:block;width:100%;height:100%;object-fit:cover}
.game-card-cover-empty{display:grid;place-items:center;padding:18px;color:var(--text-dim);background:radial-gradient(circle at 25% 15%,rgba(164,112,255,.18),transparent 34%),linear-gradient(145deg,var(--surface3),var(--bg))}
.game-card-cover-empty span{font:600 12px/1.4 var(--mono,monospace);text-align:center;word-break:break-all}
.game-card-body{display:grid;gap:9px;padding:12px}
.game-card-heading{display:grid;gap:4px}
.game-card-heading strong{overflow:hidden;color:var(--text);font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.game-card-heading code,.game-card-meta{overflow:hidden;color:var(--text-dim);font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.game-card .game-status-col{min-height:22px}
.game-card-actions{display:flex;flex-wrap:wrap;gap:6px}
.game-card-actions .btn{flex:1 1 auto}
.library-empty{display:grid;justify-items:center;gap:8px;margin:28px 0;padding:38px 24px;border:1px dashed var(--border);border-radius:12px;color:var(--text-dim);text-align:center}
.library-empty[hidden]{display:none}
.library-empty strong{color:var(--text)}
.library-empty-icon{font-size:32px;color:var(--accent)}
.library-load-more{display:flex;align-items:center;justify-content:center;gap:10px;padding:16px 0}
body[data-density="compact"] .games-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
body[data-density="compact"] .game-card-body{gap:6px;padding:9px}
@media(max-width:640px){.game-platform-switch{grid-template-columns:repeat(2,minmax(0,1fr))}
.games-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.game-card-actions .btn{min-width:100%}
}
/* ── Payload catalog 2.0 ───────────────────────────────────────────────────── */
.payload-expert-filter{display:inline-flex;align-items:center;gap:7px;color:var(--text-dim);font-size:11px;white-space:nowrap}
.payload-source-check-list{display:grid;gap:11px;margin-top:12px}
.payload-catalog-group{overflow:hidden;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}
.payload-catalog-group>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;cursor:pointer;list-style:none}
.payload-catalog-group>summary::-webkit-details-marker,.payload-check-source>summary::-webkit-details-marker{display:none}
.payload-catalog-group>summary>span{display:grid;gap:2px}
.payload-catalog-group>summary small{color:var(--text-dim);font-size:11px;font-weight:400}
.payload-catalog-group>summary b{display:grid;place-items:center;min-width:28px;height:24px;border-radius:999px;background:var(--surface3);color:var(--text-dim);font-size:11px}
.payload-catalog-group-experimental{border-color:color-mix(in srgb,var(--yellow) 40%,var(--border))}
.payload-catalog-group-expert{border-color:color-mix(in srgb,var(--red) 46%,var(--border))}
.payload-catalog-group-body{display:grid;gap:8px;padding:0 10px 10px}
.payload-check-source{overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--surface)}
.payload-check-source-header{display:flex;align-items:center;gap:8px;padding:10px 11px;cursor:pointer;list-style:none}
.payload-check-source-header:before{content:"›";color:var(--text-dim);font-size:18px;line-height:1;transition:transform .15s}
.payload-check-source[open]>.payload-check-source-header:before{transform:rotate(90deg)}
.payload-check-source-name{min-width:120px;font-weight:650}
.payload-source-count{display:grid;place-items:center;min-width:22px;height:20px;border-radius:999px;background:var(--surface3);color:var(--text-dim);font-size:11px}
.payload-checked-at{margin-left:auto;font-size:11px}
.payload-source-meta{display:flex;gap:5px}
.payload-source-body{padding:0 12px 12px}
.payload-source-error{margin:4px 0;color:var(--red)}
.payload-asset-scroll{overflow-x:auto}
@media(max-width:760px){.payload-check-source-header{align-items:flex-start;flex-wrap:wrap}
.payload-checked-at{width:100%;margin-left:28px}
.payload-source-meta{margin-left:auto}
.payload-catalog-toolbar>*{max-width:none;width:100%}
.payload-expert-filter{width:auto}
}
+13
View File
@@ -0,0 +1,13 @@
:root{--premium-line:rgba(255, 255, 255, 0.085)}body::before{position:fixed;inset:var(--titlebar-h) 0 var(--statusbar-h) var(--sidebar-w);z-index:-1;pointer-events:none;content:"";background:radial-gradient(circle at 82% 4%,rgba(var(--accent-rgb),.1),transparent 28rem),radial-gradient(circle at 12% 92%,rgba(0,210,214,.055),transparent 24rem),linear-gradient(rgba(255,255,255,.011) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.009) 1px,transparent 1px);background-size:auto,auto,48px 48px,48px 48px;mask-image:linear-gradient(#000,rgba(0,0,0,0.35))}.card,.game-card,.stat-card,.table-wrap{border-color:var(--premium-line);box-shadow:inset 0 1px 0 rgba(255,255,255,.045),0 10px 34px rgba(0,0,0,.14)}.card,.stat-card{background-image:linear-gradient(145deg,rgba(255,255,255,.026),transparent 42%)}.btn,.chimera-route-link,.chimera-toolbar-button{box-shadow:inset 0 1px 0 rgba(255,255,255,.055)}.btn:focus-visible,.chimera-domain-button:focus-visible,.chimera-route-link:focus-visible,.game-card:focus-visible{outline:2px solid rgba(var(--accent-rgb),.9);outline-offset:3px;box-shadow:0 0 0 5px rgba(var(--accent-rgb),.1)}.game-card-cover-fallback{position:absolute;inset:0;display:flex;min-height:100%;flex-direction:column;justify-content:flex-end;gap:6px;padding:18px;color:#fff;background:radial-gradient(circle at 78% 18%,rgba(0,218,198,.3),transparent 38%),radial-gradient(circle at 16% 82%,rgba(var(--accent-rgb),.43),transparent 43%),linear-gradient(145deg,#17111f,#090b12)}.game-card-cover-fallback[hidden]{display:none}.game-card-cover-fallback.is-visible{position:relative;aspect-ratio:2/3}.game-card-cover-fallback::before{position:absolute;top:18%;right:-16%;width:80%;aspect-ratio:1;border:1px solid rgba(255,255,255,.14);border-radius:30%;content:"";transform:rotate(34deg)}.game-card-cover-fallback span{color:var(--teal);font:750 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase}.game-card-cover-fallback strong{position:relative;max-width:15ch;font-size:18px;line-height:1.08}.game-card-cover-fallback small{color:rgba(255,255,255,.6);font:650 11px/1 var(--mono);letter-spacing:.08em}.game-card-cover.is-fallback-artwork{object-fit:contain!important;padding:9%!important;background:radial-gradient(circle at 50% 35%,rgba(var(--accent-rgb),.22),transparent 55%),#0d0b12}.game-row-icon.is-fallback-artwork{width:36px;height:36px;padding:0!important;border-radius:8px;object-fit:cover!important}.game-card-sync{backdrop-filter:blur(12px);box-shadow:0 5px 18px rgba(0,0,0,.28)}.chimera-shell-v2 #chimera-route-title{letter-spacing:-.035em;text-wrap:balance}.chimera-shell-v2 #chimera-route-header{padding-bottom:18px;border-bottom-color:var(--premium-line)}body.chimera-shell-v2 #page-dashboard>.dashboard-connection-card,body.chimera-shell-v2 #page-trophies>.trophy-page-header{display:none}.chimera-import-launcher{position:static!important;right:auto!important;bottom:auto!important;width:calc(100% - 24px);min-height:42px;margin:8px 12px 2px;padding:8px 12px;border-color:rgba(203,186,255,.3);box-shadow:inset 0 1px rgba(255,255,255,.1)}@media (max-width:900px){body::before{left:0}}.premium-project-illustration{--project-color:var(--accent);--project-rgb:118,81,230;position:relative;isolation:isolate;width:min(360px,92%);height:190px;margin:0 auto 10px;overflow:hidden;contain:layout paint style;transform:rotateX(var(--illustration-y,0)) rotateY(var(--illustration-x,0));transition:transform .18s cubic-bezier(.2, .8, .2, 1)}.premium-project-illustration::before{position:absolute;inset:20px 9px;z-index:-1;content:"";background-image:linear-gradient(rgba(var(--project-rgb),.045) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--project-rgb),.045) 1px,transparent 1px);background-size:18px 18px;border:1px solid rgba(var(--project-rgb),.08);border-radius:50%;mask-image:radial-gradient(#000 25%,transparent 74%)}.premium-project-illustration[data-variant=transfer]{--project-color:var(--teal);--project-rgb:34,199,232}.premium-project-illustration[data-variant=protection]{--project-color:var(--green);--project-rgb:78,222,163}.premium-project-illustration[data-variant=media]{--project-color:#e4a4ff;--project-rgb:228,164,255}.premium-project-illustration[data-variant=trophies]{--project-color:var(--yellow);--project-rgb:228,173,85}.premium-project-illustration svg{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 18px 24px rgba(0, 0, 0, .26))}.premium-project-glow{position:absolute;inset:23% 27%;z-index:-1;background:rgba(var(--project-rgb),.16);border-radius:50%;filter:blur(30px)}.premium-project-path{fill:none;stroke:rgba(var(--project-rgb),0.32);stroke-width:1.15;stroke-dasharray:4 8;vector-effect:non-scaling-stroke}.premium-project-node>:first-child,.premium-project-source>:first-child,.premium-project-surface>:first-child{fill:rgba(15,11,20,0.92);stroke:rgba(var(--project-rgb),0.72);stroke-width:1.4}.premium-project-node>:not(:first-child),.premium-project-progress>*,.premium-project-shield>*,.premLine truncated
"M 37 95 H 114 C 135 95 142 65 163 65 H 190 C 214 65 219 96 239 96 H 288"
)}.premium-project-illustration[data-variant=protection] .packet-b{offset-path:path(
"M 67 131 H 132 C 150 131 157 110 174 110 H 209 C 226 110 232 131 252 131 H 288"
)}.premium-project-illustration[data-variant=transfer] .packet-a,.premium-project-illustration[data-variant=transfer] .packet-c{offset-path:path(
"M 70 87 H 135 C 156 87 161 60 182 60 H 210 C 232 60 237 87 257 87 H 285"
)}.premium-project-illustration[data-variant=transfer] .packet-b{offset-path:path(
"M 70 119 H 131 C 153 119 162 144 184 144 H 214 C 235 144 243 119 261 119 H 285"
)}.premium-project-illustration[data-variant=media] .packet-a,.premium-project-illustration[data-variant=media] .packet-c{offset-path:path(
"M 87 90 H 143 C 164 90 167 62 189 62 H 212 C 233 62 237 90 256 90 H 293"
)}.premium-project-illustration[data-variant=media] .packet-b{offset-path:path(
"M 86 120 H 141 C 163 120 168 142 188 142 H 214 C 234 142 239 120 258 120 H 293"
)}.premium-project-illustration[data-variant=trophies] .packet-a,.premium-project-illustration[data-variant=trophies] .packet-c{offset-path:path("M 50 126 C 89 54 130 46 169 81 S 234 121 280 56")}.premium-project-illustration[data-variant=trophies] .packet-b{offset-path:path("M 48 66 C 91 71 114 89 139 125 S 219 157 278 129")}.premium-project-illustration.is-active:not(.is-paused) .premium-project-path{animation:7s linear infinite project-flow}.premium-project-illustration.is-active:not(.is-paused) .premium-project-packet{animation:4.8s cubic-bezier(.4,0,.2,1) infinite project-packet}.premium-project-illustration.is-active:not(.is-paused) .packet-b{animation-delay:-1.6s}.premium-project-illustration.is-active:not(.is-paused) .packet-c{animation-delay:-3.2s}.premium-project-illustration.is-active:not(.is-paused) :is(.library-proof,.premium-project-shield,.media-play,.trophy-earned){animation:3.2s ease-in-out infinite project-confirm;transform-origin:center}.premium-project-illustration.is-active:not(.is-paused) .premium-project-progress path:last-child{animation:3.6s ease-in-out infinite project-progress;transform-origin:left}.premium-project-illustration.is-paused *,.premium-topology-motion.is-paused *{animation-play-state:paused!important}.premium-topology-motion.is-active:not(.is-paused) .chimera-home-map-lines path{animation:8s linear infinite topology-flow}.premium-topology-motion.is-active:not(.is-paused) .chimera-home-map-lines path:nth-child(2n){animation-direction:reverse;animation-duration:10s}@keyframes project-flow{to{stroke-dashoffset:-96}}@keyframes project-packet{0%{offset-distance:0;opacity:0}12%,86%{opacity:1}100%{offset-distance:100%;opacity:0}}@keyframes project-confirm{50%{filter:drop-shadow(0 0 7px rgba(var(--project-rgb), .82));transform:scale(1.04)}}@keyframes project-progress{0%,20%{transform:scaleX(.18)}100%,70%{transform:scaleX(1)}}@keyframes topology-flow{to{stroke-dashoffset:-120}}.empty-msg:has(.premium-project-illustration),.library-empty:has(.premium-project-illustration){min-height:430px}.library-empty:has(.premium-project-illustration)>.library-empty-icon{display:none}.trophy-library-empty:has(.premium-project-illustration){min-height:380px}.trophy-library-empty:has(.premium-project-illustration)>.trophy-library-empty-icon{display:none}.empty-msg .premium-project-illustration+*,.library-empty .premium-project-illustration+*{margin-top:0}@media (min-width:701px) and (max-height:820px){.premium-project-illustration{height:152px;margin-bottom:2px}.empty-msg:has(.premium-project-illustration),.library-empty:has(.premium-project-illustration){min-height:340px}.trophy-library-empty:has(.premium-project-illustration){min-height:320px}}@media (max-width:560px){body.chimera-shell-v2[data-chimera-route="protection/trophies"] #chimera-route-refresh{display:inline-flex}body.chimera-shell-v2[data-chimera-route="protection/trophies"] #chimera-route-refresh::before{content:"↻";font-size:18px;line-height:1}.premium-project-illustration{width:min(330px,100%);height:158px}.empty-msg:has(.premium-project-illustration),.library-empty:has(.premium-project-illustration){min-height:330px}.trophy-library-empty:has(.premium-project-illustration){min-height:330px}}@media (prefers-reduced-motion:reduce){.premium-project-illustration{transform:none;transition:none}.premium-project-illustration *,.premium-topology-motion *{animation:none!important}.premium-project-packet{offset-distance:72%;opacity:.7}}
+1
View File
@@ -0,0 +1 @@
.protection-copy-card{align-items:stretch;display:grid;gap:14px;grid-template-columns:minmax(190px,1.15fr) minmax(280px,1.85fr) auto;}.protection-copy-card.is-missing{border-color:rgba(240,190,99,.5);}.protection-copy-card.has-integrity-failure{border-color:rgba(239,140,131,.55);}.protection-copy-title{align-items:center;display:flex;gap:11px;min-width:0;}.protection-copy-title .backup-card-icon{flex:0 0 auto;}.protection-copy-title-copy{min-width:0;}.protection-copy-title-copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.protection-copy-title-copy code{color:var(--text-dim);font-size:11px;}.protection-copy-facts{display:grid;gap:7px 14px;grid-template-columns:repeat(2,minmax(0,1fr));}.protection-copy-fact{min-width:0;}.protection-copy-fact span{color:var(--text-dim);display:block;font-size:11px;letter-spacing:.06em;margin-bottom:2px;text-transform:uppercase;}.protection-copy-fact code,.protection-copy-fact strong{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.protection-device-label{max-width:100%;overflow:hidden;padding:0;color:var(--text);background:none;border:0;border-bottom:1px dashed var(--text-dim);font:inherit;font-size:12px;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;}.protection-device-label:hover,.protection-device-label:focus-visible{color:var(--teal);border-bottom-color:currentColor;}.protection-copy-actions{align-items:flex-end;display:flex;flex-direction:column;gap:8px;justify-content:center;}.protection-copy-policy{border-radius:999px;font-size:11px;font-weight:700;padding:5px 8px;white-space:nowrap;}.protection-copy-policy.is-healthy{background:rgba(36,137,88,.15);color:#72d6a2;}.protection-copy-policy.needs-diversity{background:rgba(169,108,21,.15);color:#f0be63;}.protection-copy-policy.is-degraded{background:rgba(167,54,48,.14);color:#ef8c83;}@media (max-width:860px){.protection-copy-card{grid-template-columns:1fr;}.protection-copy-actions{align-items:stretch;}}@media (max-width:520px){.protection-copy-facts{grid-template-columns:1fr;}}
+2
View File
@@ -0,0 +1,2 @@
.ps4-package-dialog{width:min(940px,calc(100vw - 32px));max-height:min(850px,calc(100vh - 32px));overflow:auto;background:linear-gradient(145deg,rgba(25,20,35,.98),rgba(12,10,18,.99));border:1px solid rgba(181,135,255,.26);box-shadow:0 32px 100px rgba(0,0,0,.62),0 0 80px rgba(117,66,220,.1)}
.ps4-package-header{position:relative;gap:16px;padding:22px 24px;border-bottom:1px solid rgba(255,255,255,.08);overflow:hidden}.ps4-package-header:after{content:"";position:absolute;inset:-80px -20% auto 42%;height:180px;background:radial-gradient(circle,rgba(128,75,235,.22),transparent 68%);pointer-events:none}.ps4-package-emblem{position:relative;display:grid;place-items:center;width:58px;height:58px;border:1px solid rgba(194,158,255,.42);border-radius:16px;background:linear-gradient(145deg,rgba(154,102,255,.2),rgba(57,37,86,.16));box-shadow:inset 0 1px rgba(255,255,255,.16),0 12px 34px rgba(93,51,174,.24)}.ps4-package-emblem span{font:700 27px/1 var(--font-display,inherit);color:#e8dcff}.ps4-package-emblem i{position:absolute;inset:7px;border:1px solid rgba(255,255,255,.09);border-radius:12px;transform:rotate(8deg)}.ps4-package-kicker{display:block;color:#af82ff;font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;margin-bottom:4px}.ps4-package-header h3{margin:0;font-size:22px}.ps4-package-header p{margin:4px 0 0}.ps4-package-body{padding:22px 24px}.ps4-package-phasebar{display:grid;grid-template-columns:repeat(4,1fr);margin:0 0 18px}.ps4-package-phasebar span{position:relative;display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.ps4-package-phasebar span:not(:last-child):after{content:"";height:1px;flex:1;background:linear-gradient(90deg,rgba(170,124,255,.55),rgba(255,255,255,.08));margin-right:10px}.ps4-package-phasebar b{display:grid;place-items:center;width:25px;height:25px;border:1px solid rgba(171,126,255,.36);border-radius:50%;color:#d8c1ff;background:rgba(137,85,233,.12)}.ps4-package-phasebar i{font-style:normal}.ps4-package-readiness{min-height:44px;padding:11px 14px;margin-bottom:16px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.025);color:var(--text-dim)}.ps4-package-readiness[data-state="ready"]{border-color:rgba(61,213,162,.28);color:#91e8c8;background:rgba(31,146,108,.08)}.ps4-package-readiness[data-state="blocked"]{border-color:rgba(244,162,97,.3);color:#ffc28f;background:rgba(174,94,32,.08)}.ps4-package-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.ps4-package-card{position:relative;padding:20px;border:1px solid rgba(255,255,255,.09);border-radius:15px;background:linear-gradient(155deg,rgba(255,255,255,.045),rgba(255,255,255,.015));overflow:hidden}.ps4-package-card:before{content:"";position:absolute;inset:0 auto 0 0;width:2px;background:linear-gradient(#ad79ff,transparent)}.ps4-package-card-index{position:absolute;right:16px;top:12px;color:rgba(213,188,255,.13);font-size:34px;font-weight:800}.ps4-package-card h4{position:relative;margin:0 0 8px;font-size:16px}.ps4-package-card p{min-height:54px;margin:0 0 16px;color:var(--text-dim);font-size:12px;line-height:1.55}.ps4-package-card label{display:block;margin:10px 0;color:var(--text-dim);font-size:11px;font-weight:700}.ps4-package-card input,.ps4-package-card select{width:100%;min-width:0;padding:9px 10px;color:var(--text);background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.1);border-radius:8px}.ps4-package-path{display:flex;gap:7px;margin-top:5px}.ps4-package-path input{flex:1}.ps4-package-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.ps4-package-jobs{margin-top:14px;padding:16px;border:1px solid rgba(255,255,255,.08);border-radius:13px;background:rgba(0,0,0,.13)}.ps4-package-jobs-head{display:flex;justify-content:space-between;align-items:center}.ps4-package-jobs h4{margin:0}.ps4-package-job{display:grid;grid-template-columns:1fr auto;gap:5px 16px;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.06)}.ps4-package-job:last-child{border:0}.ps4-package-job small{color:var(--text-dim)}.ps4-package-job-state{align-self:center;padding:4px 8px;border:1px solid rgba(171,126,255,.25);border-radius:999px;color:#d8c1ff;font-size:11px;font-weight:800;text-transform:uppercase}.ps4-package-dialog .jb-settings-footer{justify-content:space-between}.ps4-package-dialog .jb-settings-footer p{margin:0}@media(max-width:760px){.ps4-package-grid{grid-template-columns:1fr}.ps4-package-phasebar i{display:none}.ps4-package-card p{min-height:0}.ps4-package-dialog{width:calc(100vw - 16px)}}
+88
View File
@@ -0,0 +1,88 @@
.ps5-native-package-dialog {
background: radial-gradient(circle at 82% 8%, rgba(93, 214, 255, .12), transparent 32%), radial-gradient(circle at 8% 88%, rgba(154, 124, 255, .12), transparent 30%), linear-gradient(145deg, rgba(17, 22, 34, .99), rgba(10, 11, 19, .99));
border-color: rgba(93, 214, 255, .25);
}
.ps5-native-package-emblem { border-color: rgba(154, 124, 255, .62); box-shadow: 0 0 28px rgba(154, 124, 255, .2), inset 0 0 18px rgba(93, 214, 255, .08); }
.ps5-native-package-emblem i { border-color: rgba(93, 214, 255, .62); }
.ps5-native-truthbar { display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: center; padding: 12px 14px; margin-bottom: 16px; border: 1px solid rgba(93, 214, 255, .22); border-radius:12px; background: linear-gradient(90deg, rgba(93, 214, 255, .1), rgba(154, 124, 255, .08)); color: var(--text-dim); font-size:12px; }
.ps5-native-truthbar strong { color: #d8f6ff; letter-spacing: .04em; text-transform: uppercase; }
.ps5-native-settings-card { position: relative; overflow: hidden; }
.ps5-native-settings-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: linear-gradient(#5dd6ff, #9a7cff); }
.ps5-native-settings-truth { margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(154, 124, 255, .14); }
.ps5-fpkg-phasebar { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.ps5-fpkg-evidence-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0 0 18px; }
.ps5-fpkg-evidence-grid article { display: grid; gap: 7px; min-width: 0; padding: 13px 14px; border: 1px solid rgba(255,255,255,.09); border-radius: 13px; background: rgba(4,8,16,.34); }
.ps5-fpkg-evidence-grid small { color: var(--text-dim); font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.ps5-fpkg-evidence-grid strong { overflow-wrap: anywhere; color: #cbd5e6; font-size: 12px; line-height: 1.45; }
.ps5-fpkg-evidence-grid strong[data-state="safe"], .ps5-fpkg-evidence-grid strong[data-state="ready"], .ps5-fpkg-evidence-grid strong[data-state="qualified"] { color: #64e6bd; }
.ps5-fpkg-evidence-grid strong[data-state="pending"], .ps5-fpkg-evidence-grid strong[data-state="running"] { color: #8ce9ff; }
.ps5-fpkg-evidence-grid strong[data-state="blocked"], .ps5-fpkg-evidence-grid strong[data-state="failed"] { color: #ff9da7; }
.ps5-staging-workflow { position: relative; display: grid; grid-template-columns: minmax(230px, .8fr) minmax(300px, 1.2fr); gap: 18px 24px; padding: 20px; margin: 0 0 18px; overflow: hidden; border: 1px solid rgba(154, 124, 255, .24); border-radius:16px; background: linear-gradient(125deg, rgba(30, 39, 61, .86), rgba(13, 16, 28, .92)); box-shadow: inset 0 1px rgba(255,255,255,.04), 0 18px 55px rgba(0,0,0,.18); }
.ps5-staging-workflow::after { content: ""; position: absolute; width: 260px; height: 260px; right: -120px; top: -150px; border-radius: 50%; background: rgba(93, 214, 255, .07); filter: blur(3px); pointer-events: none; }
.ps5-staging-copy { position: relative; z-index: 1; }
.ps5-staging-copy h4 { margin: 5px 0 7px; color: #eefaff; }
.ps5-staging-copy p, .ps5-staging-limit { margin: 0; color: var(--text-dim); font-size:12px; line-height: 1.55; }
.ps5-staging-illustration { display: flex; align-items: center; min-height: 76px; padding: 8px 0; }
.ps5-stage-node { position: relative; display: grid; flex: 0 0 58px; height: 58px; place-items: center; border: 1px solid rgba(93,214,255,.38); border-radius:17px; background: radial-gradient(circle at 35% 25%, rgba(93,214,255,.2), rgba(12,18,31,.95)); box-shadow: 0 0 26px rgba(93,214,255,.11), inset 0 1px rgba(255,255,255,.08); }
.ps5-stage-node.vault { border-color: rgba(154,124,255,.52); transform: rotate(45deg); }
.ps5-stage-node.vault i { transform: rotate(-45deg); }
.ps5-stage-node.package { border-color: rgba(73,226,179,.45); }
.ps5-stage-node i { font: 700 11px/1 var(--font-mono, monospace); color: #d9f8ff; letter-spacing: .08em; font-style: normal; }
.ps5-stage-track { position: relative; flex: 1; height: 1px; overflow: visible; background: linear-gradient(90deg, rgba(93,214,255,.28), rgba(154,124,255,.5)); }
.ps5-stage-track.build { background: linear-gradient(90deg, rgba(154,124,255,.5), rgba(73,226,179,.35)); }
.ps5-stage-track i { position: absolute; width: 7px; height: 7px; top: -3px; border-radius: 50%; background: #8ce9ff; box-shadow: 0 0 12px #5dd6ff; animation: ps5-stage-pulse 2.2s ease-in-out infinite; }
.ps5-stage-track.build i { animation-delay: 1.1s; background: #a994ff; box-shadow: 0 0 12px #9a7cff; }
@keyframes ps5-stage-pulse { 0% { left: 0; opacity: 0; } 18% { opacity: 1; } 82% { opacity: 1; } 100% { left: calc(100% - 7px); opacity: 0; } }
.ps5-staging-controls { display: flex; gap: 9px; align-items: center; justify-content: flex-end; z-index: 1; }
.ps5-staging-components { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 9px; }
.ps5-staging-component { display: grid; grid-template-columns: auto 1fr auto; gap: 9px; align-items: center; min-width: 0; padding: 11px 12px; border: 1px solid rgba(255,255,255,.09); border-radius:12px; background: rgba(4,8,16,.34); }
.ps5-staging-component input { accent-color: #7cddff; }
.ps5-staging-component > span { display: grid; min-width: 0; gap: 4px; }
.ps5-staging-component strong { font-size:12px; text-transform: uppercase; letter-spacing: .06em; }
.ps5-staging-component small { overflow: hidden; color: var(--text-dim); text-overflow: ellipsis; white-space: nowrap; }
.ps5-staging-component em { padding: 3px 6px; border-radius:99px; background: rgba(93,214,255,.09); color: #bcefff; font-size:11px; font-style: normal; text-transform: uppercase; }
.ps5-staging-limit { grid-column: 1 / -1; padding-top: 12px; border-top: 1px solid rgba(255,255,255,.07); }
.ps5-package-comparison { display: grid; gap: 14px; margin: 0 0 18px; padding: 18px; border: 1px solid rgba(154,124,255,.24); border-radius:16px; background: linear-gradient(135deg, rgba(23,29,47,.86), rgba(10,13,23,.94)); }
.ps5-package-comparison h4 { margin: 5px 0 6px; }
.ps5-package-comparison p { margin: 0; color: var(--text-dim); font-size:12px; line-height: 1.5; }
.ps5-package-comparison-controls { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) auto; gap: 10px; align-items: end; }
.ps5-package-comparison-controls label { display: grid; min-width: 0; gap: 6px; color: var(--text-dim); font-size:11px; }
.ps5-package-comparison-controls select { width: 100%; min-width: 0; }
.ps5-package-comparison-controls .btn { white-space: nowrap; }
.ps5-package-comparison-result { min-height: 56px; padding: 13px; border: 1px solid rgba(93,214,255,.16); border-radius:12px; background: rgba(4,8,16,.34); }
.ps5-package-comparison-trust { display: grid; grid-template-columns: 1fr auto 1fr; gap: 12px; align-items: center; margin-bottom: 10px; }
.ps5-package-comparison-trust span { display: grid; gap: 3px; }
.ps5-package-comparison-trust span:last-child { text-align: right; }
.ps5-package-comparison-trust small { color: var(--text-dim); }
.ps5-package-comparison-trust strong[data-trust="post-scan-proven"] { color: #64e6bd; }
.ps5-package-comparison-trust strong[data-trust="appinst-rejected"] { color: #ff8f9b; }
.ps5-package-comparison-result ul { display: grid; gap: 6px; margin: 0 0 10px; padding: 0; list-style: none; }
.ps5-package-comparison-result li { display: flex; justify-content: space-between; gap: 12px; font-size:11px; }
.ps5-package-comparison-result li span { color: var(--text-dim); }
.ps5-upstream-control { position: relative; display: grid; gap: 15px; margin: 0 0 18px; padding: 19px; overflow: hidden; border: 1px solid rgba(73,226,179,.24); border-radius:16px; background: radial-gradient(circle at 92% 5%, rgba(73,226,179,.13), transparent 34%), linear-gradient(135deg, rgba(17,32,40,.88), rgba(9,14,24,.95)); box-shadow: inset 0 1px rgba(255,255,255,.04), 0 16px 48px rgba(0,0,0,.16); }
.ps5-upstream-control::after { content: "UPSTREAM / STOCK"; position: absolute; right: 18px; top: 17px; color: rgba(157,247,220,.24); font: 700 11px/1 var(--font-mono, monospace); letter-spacing: .14em; pointer-events: none; }
.ps5-upstream-control-copy { display: flex; gap: 12px; align-items: flex-start; }
.ps5-upstream-control-copy h4 { margin: 5px 0 6px; color: #ecfff9; }
.ps5-upstream-control-copy p { max-width: 720px; margin: 0; color: var(--text-dim); font-size:12px; line-height: 1.55; }
.ps5-upstream-control-proof { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 9px; }
.ps5-upstream-control-proof span { display: grid; gap: 4px; padding: 11px 12px; border: 1px solid rgba(73,226,179,.13); border-radius:12px; background: rgba(3,12,17,.38); }
.ps5-upstream-control-proof small { color: var(--text-dim); font-size:11px; letter-spacing: .08em; text-transform: uppercase; }
.ps5-upstream-control-proof strong { overflow: hidden; color: #dffbf3; font: 600 11px/1.3 var(--font-mono, monospace); text-overflow: ellipsis; white-space: nowrap; }
.ps5-upstream-control-proof strong[data-trust="post-scan-proven"] { color: #64e6bd; }
.ps5-upstream-control-status { min-height: 20px; color: #bceee0; font-size:11px; }
.ps5-upstream-control-actions { display: flex; flex-wrap: wrap; gap: 9px; }
.ps5-p15-r2-qualification::after { content: "R4 / READ ONLY"; }
.ps5-p15-r2-matrix { width: 100%; border-collapse: collapse; color: var(--text-dim); font-size: 11px; }
.ps5-p15-r2-matrix th, .ps5-p15-r2-matrix td { padding: 7px 9px; border-bottom: 1px solid rgba(73,226,179,.12); text-align: left; }
.ps5-p15-r2-matrix td[data-result="PASS"] { color: #64e6bd; font-weight: 700; }
.ps5-p15-r2-matrix td[data-result="FAIL"] { color: #ff8f9b; font-weight: 700; }
.ps5-p15-r2-kstuff-evidence { display: block; max-width: 72ch; color: inherit; overflow-wrap: anywhere; white-space: normal; }
.ps5-launch-reference { border-color: rgba(93,214,255,.28); background: radial-gradient(circle at 92% 5%, rgba(93,214,255,.14), transparent 34%), linear-gradient(135deg, rgba(17,27,44,.9), rgba(9,14,24,.95)); }
.ps5-launch-reference::after { content: "LAUNCH / REFERENCE"; color: rgba(157,225,247,.28); }
.ps5-launch-reference .ps5-upstream-control-proof span { border-color: rgba(93,214,255,.15); }
@media (prefers-reduced-motion: reduce) { .ps5-stage-track i { animation: none; left: 50%; } }
@media (max-width: 760px) { .ps5-staging-workflow { grid-template-columns: 1fr; } .ps5-staging-controls { justify-content: flex-start; } .ps5-staging-components { grid-template-columns: 1fr; } }
@media (max-width: 760px) { .ps5-package-comparison-controls { grid-template-columns: 1fr; } }
@media (max-width: 760px) { .ps5-fpkg-phasebar { grid-template-columns: repeat(3, minmax(0, 1fr)); } .ps5-fpkg-evidence-grid { grid-template-columns: 1fr; } }
@media (max-width: 620px) { .ps5-upstream-control-proof { grid-template-columns: 1fr; } }
@media (max-width: 620px) { .ps5-native-truthbar { grid-template-columns: 1fr; } }
+12
View File
@@ -0,0 +1,12 @@
.ps5-profile-workspace{position:relative;margin-bottom:16px;overflow:hidden;border:1px solid rgba(var(--accent-rgb),.26);border-radius:16px;background:linear-gradient(145deg,rgba(var(--accent-rgb),.09),rgba(9,10,17,.78) 38%,rgba(0,203,190,.04));box-shadow:0 26px 70px rgba(0,0,0,.28),inset 0 1px rgba(255,255,255,.06)}
.ps5-profile-workspace::before{position:absolute;inset:0;pointer-events:none;content:"";background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.014) 1px,transparent 1px);background-size:38px 38px;mask-image:linear-gradient(#000,transparent 75%)}
.ps5-profile-hero{position:relative;display:grid;grid-template-columns:130px minmax(0,1fr) auto;align-items:center;gap:24px;padding:26px 28px;border-bottom:1px solid rgba(255,255,255,.07)}
.ps5-profile-orbit{position:relative;width:112px;aspect-ratio:1;border:1px solid rgba(var(--accent-rgb),.35);border-radius:50%;box-shadow:inset 0 0 35px rgba(var(--accent-rgb),.12),0 0 40px rgba(var(--accent-rgb),.1)}
.ps5-profile-orbit::before,.ps5-profile-orbit::after{position:absolute;inset:15px;border:1px solid rgba(0,210,214,.25);border-radius:42% 58% 55% 45%;content:"";animation:profile-orbit 12s linear infinite}.ps5-profile-orbit::after{inset:31px;animation-direction:reverse;animation-duration:8s}.ps5-profile-orbit span{position:absolute;inset:0;display:grid;place-items:center;color:var(--teal);font-size:28px;text-shadow:0 0 18px var(--teal)}.ps5-profile-orbit i{position:absolute;z-index:1;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent)}.ps5-profile-orbit i:nth-child(1){top:8px;left:51px}.ps5-profile-orbit i:nth-child(2){right:9px;bottom:27px;background:var(--teal)}.ps5-profile-orbit i:nth-child(3){bottom:9px;left:28px}
@keyframes profile-orbit{to{transform:rotate(1turn)}}
.ps5-profile-kicker,.ps5-profile-panel-head span,.ps5-profile-recovery>div:first-child>span{color:var(--teal);font:750 11px/1.2 var(--mono);letter-spacing:.16em;text-transform:uppercase}.ps5-profile-hero h2{margin:5px 0 7px;font-size:25px;letter-spacing:-.035em}.ps5-profile-hero p{max-width:720px;margin:0;color:var(--text-dim);font-size:12px;line-height:1.55}.ps5-profile-boundary{display:flex;gap:7px;align-items:center;margin-top:11px;color:var(--green);font-size:11px}.ps5-profile-provider-state{max-width:200px;padding:9px 12px;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);background:rgba(0,0,0,.22);font-size:11px;text-align:center}.ps5-profile-provider-state.is-ready{border-color:rgba(70,220,160,.42);color:var(--green)}.ps5-profile-provider-state.is-blocked{border-color:rgba(240,175,70,.38);color:var(--yellow)}
.ps5-profile-runtime{position:relative;display:grid;grid-template-columns:50px minmax(0,1fr) auto;align-items:center;gap:15px;padding:13px 28px;border-bottom:1px solid rgba(255,255,255,.07);background:linear-gradient(90deg,rgba(0,210,214,.075),rgba(var(--accent-rgb),.045))}.ps5-profile-runtime-mark{display:grid;place-items:center;width:38px;aspect-ratio:1;border:1px solid rgba(0,210,214,.38);border-radius:12px;background:rgba(0,210,214,.08);box-shadow:inset 0 0 18px rgba(0,210,214,.12)}.ps5-profile-runtime-mark span{width:9px;aspect-ratio:1;border-radius:50%;background:var(--yellow);box-shadow:0 0 13px currentColor}.ps5-profile-runtime.is-ready .ps5-profile-runtime-mark span{color:var(--green);background:var(--green)}.ps5-profile-runtime h3{margin:2px 0;font-size:12px}.ps5-profile-runtime p{margin:0;color:var(--text-dim);font-size:11px}.ps5-profile-runtime-actions{display:flex;align-items:center;gap:10px}.ps5-profile-runtime-actions>span{color:var(--yellow);font:700 11px var(--mono);text-transform:uppercase}.ps5-profile-runtime.is-ready .ps5-profile-runtime-actions>span{color:var(--green)}
.ps5-profile-grid{position:relative;display:grid;grid-template-columns:minmax(260px,.72fr) minmax(380px,1.28fr);gap:1px;background:rgba(255,255,255,.07)}.ps5-profile-panel{min-width:0;padding:22px;background:rgba(12,12,20,.9)}.ps5-profile-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.ps5-profile-panel h3,.ps5-profile-recovery h3{margin:3px 0 0;font-size:16px}.ps5-profile-users{display:grid;gap:8px}.ps5-profile-user{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:11px;width:100%;padding:10px;border:1px solid var(--border);border-radius:12px;color:var(--text);background:rgba(255,255,255,.025);text-align:left;cursor:pointer;transition:.18s ease}.ps5-profile-user:hover,.ps5-profile-user.is-selected{border-color:rgba(var(--accent-rgb),.62);background:rgba(var(--accent-rgb),.1);transform:translateX(3px)}.ps5-profile-user-avatar{display:grid;place-items:center;width:42px;aspect-ratio:1;border-radius:13px;color:#fff;background:linear-gradient(145deg,var(--accent),var(--teal));font-weight:800}.ps5-profile-user strong,.ps5-profile-user small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ps5-profile-user small{margin-top:3px;color:var(--text-dim);font:11px var(--mono)}.ps5-profile-user em{color:var(--green);font:700 11px var(--mono);font-style:normal;text-transform:uppercase}.ps5-profile-uid{color:var(--text-dim);font:11px var(--mono)}
.ps5-profile-avatar-stage{display:grid;grid-template-columns:132px 1fr;align-items:center;gap:20px;padding:17px;border:1px solid var(--border);border-radius:16px;background:linear-gradient(120deg,rgba(var(--accent-rgb),.08),rgba(255,255,255,.015))}.ps5-profile-avatar-shell{position:relative;width:116px;aspect-ratio:1;overflow:hidden;border:1px solid rgba(var(--accent-rgb),.46);border-radius:32%;background:radial-gradient(circle at 65% 20%,rgba(0,210,214,.36),transparent 42%),#17131f;box-shadow:0 15px 30px rgba(0,0,0,.26)}.ps5-profile-avatar-shell canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0}.ps5-profile-avatar-shell.has-preview canvas{opacity:1}.ps5-profile-avatar-shell.has-preview span{opacity:0}.ps5-profile-avatar-shell span{position:absolute;inset:0;display:grid;place-items:center;color:white;font-size:38px;font-weight:800}.ps5-profile-avatar-stage strong{font-size:14px}.ps5-profile-avatar-stage p{margin:5px 0 12px;color:var(--text-dim);font-size:11px;line-height:1.5}.ps5-profile-name-field{display:block;margin-top:16px;color:var(--text);font-size:11px;font-weight:700}.ps5-profile-name-field>div{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:7px}.ps5-profile-name-field input{min-width:0;padding:9px 11px;border:1px solid var(--border);border-radius:8px;color:var(--text);background:var(--bg2);font:600 12px inherit}.ps5-profile-name-field small{display:block;margin-top:7px;color:var(--text-dim);font-weight:400}.ps5-profile-action-state{min-height:18px;margin-top:11px;color:var(--text-dim);font-size:11px}.ps5-profile-action-state.is-error{color:var(--red)}.ps5-profile-action-state.is-ok{color:var(--green)}
.ps5-profile-recovery{position:relative;display:grid;grid-template-columns:minmax(220px,.55fr) minmax(360px,1.45fr);gap:24px;padding:22px 28px;background:rgba(8,9,15,.82)}.ps5-profile-recovery p{max-width:340px;margin:7px 0 0;color:var(--text-dim);font-size:11px;line-height:1.5}.ps5-profile-operations{display:grid;gap:7px}.ps5-profile-operation{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.025)}.ps5-profile-operation strong,.ps5-profile-operation small{display:block}.ps5-profile-operation small{margin-top:3px;color:var(--text-dim);font-size:11px}.ps5-profile-operation-status{color:var(--teal);font:700 11px var(--mono);text-transform:uppercase}.ps5-profile-empty{padding:16px;border:1px dashed var(--border);border-radius:12px;color:var(--text-dim);font-size:11px;text-align:center}
@media(max-width:900px){.ps5-profile-hero{grid-template-columns:90px 1fr}.ps5-profile-orbit{width:82px}.ps5-profile-provider-state{grid-column:1/-1;max-width:none}.ps5-profile-runtime{grid-template-columns:42px 1fr}.ps5-profile-runtime-actions{grid-column:1/-1;justify-content:space-between}.ps5-profile-grid,.ps5-profile-recovery{grid-template-columns:1fr}}@media(max-width:560px){.ps5-profile-hero{grid-template-columns:1fr;padding:20px}.ps5-profile-orbit{display:none}.ps5-profile-runtime{grid-template-columns:1fr;padding:16px 20px}.ps5-profile-runtime-mark{display:none}.ps5-profile-runtime-actions{flex-direction:column;align-items:stretch}.ps5-profile-panel,.ps5-profile-recovery{padding:18px}.ps5-profile-avatar-stage{grid-template-columns:1fr}.ps5-profile-name-field>div{grid-template-columns:1fr}.ps5-profile-operation{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.ps5-profile-orbit::before,.ps5-profile-orbit::after{animation:none}.ps5-profile-user{transition:none}.ps5-profile-user:hover,.ps5-profile-user.is-selected{transform:none}}
+13
View File
@@ -0,0 +1,13 @@
:root{--fs-micro:11px}
:root { color-scheme: dark; font: 16px/1.5 Inter, ui-sans-serif, system-ui, sans-serif; background: #0e0d12; color: #f7f3ff; }
* { box-sizing: border-box; } [hidden] { display: none !important; } body { margin: 0; min-height: 100vh; background: radial-gradient(circle at top, #302248 0, #121018 42%, #09090c 100%); }
.auth-shell { min-height: 100vh; display: grid; place-items: center; padding: 32px 16px; }
.auth-card { width: min(820px, 100%); padding: clamp(24px, 5vw, 48px); border: 1px solid #554567; border-radius:24px; background: rgba(20,18,27,.96); box-shadow: 0 24px 80px #0009; }
.logo { width: 72px; height: 72px; object-fit: contain; float: right; } .eyebrow, .step { color: #c9a7ff; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; font-size: var(--fs-micro); }
h1 { margin: 0; font-size: clamp(2rem, 6vw, 3.6rem); } h2 { margin-top: 2rem; } form { display: grid; gap: 18px; margin-top: 28px; }
label { display: grid; gap: 7px; font-weight: 650; } input, select, button { min-height: 46px; border-radius:12px; border: 1px solid #625574; padding: 10px 12px; font: inherit; }
input, select { color: #fff; background: #0d0c11; } button { border: 0; color: #170d22; background: #c79aff; font-weight: 850; cursor: pointer; }
button.secondary { color: #eadcff; background: #30263d; border: 1px solid #67547c; } .grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; } .grid.three { grid-template-columns: 2fr 1fr 1fr; }
.panel, fieldset { padding: 14px; border: 1px solid #493c58; border-radius:12px; background: #0e0d12; white-space: pre-line; } .check { display: flex; align-items: flex-start; gap: 8px; font-weight: 500; } .check input { min-height: auto; margin-top: 5px; }
#message { min-height: 24px; color: #d9c7ef; } #message.error { color: #ff9fa9; } #message.success { color: #93e5b1; } small { color: #aa9cb7; font-weight: 400; }
@media (max-width: 680px) { .grid, .grid.three { grid-template-columns: 1fr; } .auth-card { padding: 24px 18px; border-radius:16px; } .logo { width: 52px; height: 52px; } }
+1
View File
@@ -0,0 +1 @@
@font-face{font-family:Inter;src:url("../assets/fonts/inter-latin.woff2") format("woff2");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:"Space Grotesk";src:url("../assets/fonts/space-grotesk-latin.woff2") format("woff2");font-style:normal;font-weight:300 700;font-display:swap}:root{color-scheme:dark;--bg:#0d0a11;--surface:#120e17;--surface2:#18131e;--surface3:#211a29;--surface4:#2b2334;--border:#342b3d;--border-soft:rgba(244,238,251,.09);--accent:#cbbaff;--accent-d:#7651e6;--accent-rgb:118,81,230;--teal:#22c7e8;--teal-d:#159db9;--green:#2ed39a;--yellow:#e4ad55;--red:#ee6d75;--text:#f4eefb;--text-dim:#c6bbd2;--text-muted:#978ca3;--mono:"Cascadia Code","SFMono-Regular",Consolas,monospace;--ui:Inter,"Segoe UI",system-ui,sans-serif;--display:"Space Grotesk",Inter,"Segoe UI",sans-serif;--fs-micro:11px;--fs-xs:12px;--fs-sm:14px;--fs-md:16px;--fs-lg:20px;--fs-xl:28px;--fs-display:34px;--shadow-flat:none;--sidebar-w:232px;--titlebar-h:34px;--statusbar-h:28px;--radius-sm:8px;--radius:12px;--radius-lg:16px;--shadow-panel:0 16px 40px rgba(0,0,0,.22);--shadow-float:0 28px 80px rgba(0,0,0,.48);--focus-ring:0 0 0 3px rgba(118,81,230,.28)}body,html{background:radial-gradient(circle at 78% -15%,rgba(94,53,177,.13),transparent 34rem),var(--bg);color:var(--text);font-family:Inter,"Segoe UI",system-ui,sans-serif;font-size:14px;line-height:1.45;background:radial-gradient(circle at 78% -12%,rgba(94,53,177,.17),transparent 32rem),#120e17}body,button,input,select,textarea{font-family:Inter,"Segoe UI",system-ui,sans-serif}#chimera-route-title,.sidebar-brand-copy strong,.stat-num,h1,h2,h3,h4{font-family:"Space Grotesk",Inter,sans-serif;letter-spacing:-.025em}::selection{color:#fff;background:rgba(94,53,177,.72)}:where(button,a,input,textarea,select,summary):focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:var(--focus-ring)}input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{min-height:40px;padding:9px 12px;color:var(--text);background:rgba(22,18,28,.82);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px;line-height:20px;transition:border-color .16s,background .16s,box-shadow .16s}.search-input,input[type=search]{height:40px;min-height:40px!important;padding-block:9px!important;line-height:20px!important}input::placeholder,textarea::placeholder{color:var(--text-muted);opacity:1}input:hover,select:hover,textarea:hover{border-color:#625c6c}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--accent);background:#1a1620;box-shadow:var(--focus-ring)}input[type=checkbox],input[type=radio]{accent-color:var(--accent-d)}#titlebar{background:rgba(12,9,15,.97);border-bottom-color:var(--border-soft)}#titlebar-drag{font-family:"Space Grotesk",sans-serif;color:var(--text-dim);letter-spacing:.02em}#titlebar-x-link{color:var(--text-muted);border-color:var(--border-soft)}#app{background:0 0}#sidebar{position:relative;padding:18px 0 14px;border-right:1px solid var(--border-soft);background:linear-gradient(180deg,rgba(94,53,177,.1),transparent 15rem),#0d0a11}#sidebar::after{content:"";position:absolute;top:0;right:-1px;bottom:0;width:1px;pointer-events:none;background:linear-gradient(transparent,rgba(209,188,255,.18),transparent)}.sidebar-brand{gap:11px;color:var(--text)}.sidebar-brand-copy{display:flex;min-width:0;flex-direction:column;gap:1px}.sidebar-brand-copy strong{color:var(--text);line-height:1.1}.sidebar-brand-copy small{color:var(--text-muted);font-weight:650;letter-spacing:.12em;text-transform:uppercase}.chimera-nav-root{padding-inline:10px}.chimera-domain-button{font-size:12px}.chimera-domain-button svg{width:19px;height:19px}.chimera-domain-button:focus-visible,.chimera-domain-button:hover{color:var(--text);background:rgba(232,223,238,.055)}.chimera-domain-button.active,.chimera-domain.active>.chimera-domain-button{color:var(--accent);border-color:rgba(209,188,255,.16)}.chimera-domain-routes{border-left-color:rgba(209,188,255,.12)}.chimera-route-link{padding:7px 10px}#sidebar-donate{margin-top:auto;border-top-color:var(--border-soft)}body.chimera-shell-v2 #dash-conn-badge,body.chimera-shell-v2 #sidebar-conn{display:none}#content{padding:24px 28px 34px;gap:22px;scrollbar-gutter:stable;position:relative;background-image:linear-gradient(rgba(209,188,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(209,188,255,.018) 1px,transparent 1px);background-size:32px 32px}body.chimera-shell-v2 #chimera-route-header,body.chimera-shell-v2 .page.active{width:min(100%,1600px)}#chimera-shell-toolbar{flex:0 0 auto;top:-24px;margin:-24px -28px 0;padding:8px 28px;justify-content:flex-start;gap:10px;border-bottom-color:var(--border-soft);box-shadow:0 12px 24px rgba(0,0,0,.08)}.chimera-toolbar-spacer{flex:1}.chimera-shell-health{display:inline-grid;grid-template-columns:9px auto;align-items:center;gap:10px;min-height:38px;padding:6px 11px;color:var(--text);border:1px solid var(--border-soft)}.chimera-shell-health-dot{width:8pLine truncated
+1
View File
@@ -0,0 +1 @@
.title-derived-badges{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 18px}.title-badge{border:1px solid currentColor;border-radius:999px;font-size:11px;font-weight:700;padding:5px 9px}.title-workspace-grid,.title-fact-grid{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.title-location-card,.title-evidence-row,.title-fact-grid>div,.title-workspace-empty{border:1px solid var(--border);border-radius:12px;padding:13px 14px}.title-location-card{display:grid;gap:7px;grid-template-columns:minmax(0,1fr) auto}.title-location-card.is-missing{border-color:#f0be63}.title-location-card h4{margin:3px 0 0;overflow-wrap:anywhere}.title-location-card p{color:var(--text-dim);font-size:12px;grid-column:1/-1;margin:0;overflow-wrap:anywhere}.title-location-kind,.title-location-state,.title-evidence-row span,.title-evidence-row time,.title-fact-grid dt{color:var(--text-dim);font-size:11px}.title-location-state{text-align:right}.title-evidence-list{display:grid;gap:9px}.title-evidence-row{display:flex;gap:14px;justify-content:space-between}.title-workspace-empty{color:var(--text-dim);text-align:center}.title-fact-grid{margin:0}.title-fact-grid dt{margin-bottom:6px}.title-fact-grid dd{margin:0}@media(max-width:680px){.title-workspace-grid,.title-fact-grid{grid-template-columns:1fr}.title-location-card{grid-template-columns:1fr}.title-location-state,.title-evidence-row span,.title-evidence-row time{text-align:left}.title-evidence-row{align-items:flex-start;flex-direction:column;gap:5px}}
+11
View File
@@ -0,0 +1,11 @@
.trophy-definition-import{margin-top:6px;padding:12px;border:1px dashed var(--border);border-radius:8px}.trophy-definition-import>summary{cursor:pointer;font-weight:700}.trophy-definition-import label,.trophy-definition-import textarea{display:block;width:100%;margin-top:10px}.trophy-definition-import textarea{box-sizing:border-box;resize:vertical;font:11px var(--mono);color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px}.trophy-definition-import .btn{margin-top:10px}
.trophy-history-auth,.trophy-history-search,.trophy-history-selection{display:grid;gap:.75rem;margin-top:1rem}
.trophy-history-auth,.trophy-history-search{grid-template-columns:minmax(12rem,1fr) auto;align-items:end}
.trophy-history-auth summary{grid-column:1/-1;cursor:pointer;font-weight:700}
.trophy-history-auth label,.trophy-history-search label{grid-column:1/-1}
.trophy-history-games{display:grid;gap:.5rem;max-height:30rem;overflow:auto;padding:.25rem}
.trophy-history-game{display:flex;gap:.75rem;align-items:center;padding:.7rem;border:1px solid var(--border-color,rgba(255,255,255,.12));border-radius:.5rem}
.trophy-history-game span{display:grid;gap:.2rem}.trophy-history-game small{opacity:.72}
.trophy-history-selection>div:first-child,.trophy-history-selection>div:last-child{display:flex;gap:.75rem;align-items:center;justify-content:space-between;flex-wrap:wrap}
.trophy-history-snapshots{display:grid;grid-template-columns:auto minmax(12rem,1fr);gap:.75rem;align-items:center;margin-top:1rem}.trophy-history-detail{display:grid;gap:.5rem;margin-top:.75rem}.trophy-history-detail details{border:1px solid var(--border-color,rgba(255,255,255,.12));border-radius:.5rem;padding:.6rem}.trophy-history-detail summary{display:flex;justify-content:space-between;gap:1rem;cursor:pointer}
@media(max-width:700px){.trophy-history-auth,.trophy-history-search{grid-template-columns:1fr}}
+1
View File
@@ -0,0 +1 @@
.trophy-installed{display:grid;gap:10px}.trophy-installed-game{border:1px solid var(--border);border-radius:8px;overflow:hidden}.trophy-installed-game>summary{display:flex;justify-content:space-between;gap:12px;padding:12px;cursor:pointer;background:rgba(255,255,255,.025)}.trophy-installed-game>summary span{color:var(--text-dim);font-size:11px}.trophy-installed-game>.trophy-active-list{padding:8px}
+11
View File
@@ -0,0 +1,11 @@
.trophy-library-shell{display:grid;gap:22px;overflow:hidden;padding:22px;background:radial-gradient(circle at 8% 0%,rgba(118,81,230,.14),transparent 32%),radial-gradient(circle at 92% 18%,rgba(0,188,212,.09),transparent 28%),var(--surface)}
.trophy-library-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:22px}.trophy-library-heading>div>span,.trophy-library-unlock-review>div>span{color:var(--accent);font:700 11px var(--mono);letter-spacing:.14em;text-transform:uppercase}.trophy-library-heading h2{margin:5px 0 6px;font-size:clamp(22px,3vw,30px);letter-spacing:-.03em}.trophy-library-heading p,.trophy-library-detail-header p{max-width:650px;margin:0;color:var(--text-dim);font-size:11px;line-height:1.6}.trophy-library-totals{display:grid;grid-template-columns:auto auto;align-items:baseline;gap:2px 8px;min-width:126px;padding:12px 15px;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:rgba(8,7,14,.46);box-shadow:inset 0 1px rgba(255,255,255,.04)}.trophy-library-totals strong{color:var(--teal);font-size:17px}.trophy-library-totals span{color:var(--text-dim);font-size:11px}
.trophy-library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.trophy-library-game-card{position:relative;display:grid;grid-template-columns:74px minmax(0,1fr);align-items:center;gap:12px;min-height:118px;padding:10px;text-align:left;color:var(--text);background:linear-gradient(145deg,rgba(255,255,255,.055),rgba(255,255,255,.018));border:1px solid var(--border);border-radius:13px;cursor:pointer;overflow:hidden;transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease}.trophy-library-game-card::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 25%,rgba(255,255,255,.06),transparent 70%);transform:translateX(-120%);transition:transform .5s ease}.trophy-library-game-card:hover,.trophy-library-game-card:focus-visible{border-color:rgba(118,81,230,.58);transform:translateY(-2px);box-shadow:0 16px 28px rgba(0,0,0,.2)}.trophy-library-game-card:hover::after{transform:translateX(120%)}.trophy-library-game-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 1px rgba(118,81,230,.25),0 16px 32px rgba(39,23,77,.25)}.trophy-library-game-card.is-live::before{content:"";position:absolute;top:9px;right:9px;width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 12px var(--green)}
.trophy-library-cover{--tone:hsl(var(--trophy-tone),68%,56%);position:relative;display:grid;place-items:center;width:68px;height:96px;border-radius:12px;overflow:hidden;background:radial-gradient(circle at 62% 28%,hsla(var(--trophy-tone),80%,68%,.6),transparent 32%),linear-gradient(155deg,hsl(var(--trophy-tone),52%,26%),#0b0910 72%);box-shadow:0 10px 20px rgba(0,0,0,.28),inset 0 1px rgba(255,255,255,.16)}.trophy-library-cover::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(120deg,transparent 0 11px,rgba(255,255,255,.035) 12px 13px)}.trophy-library-cover-mark{position:relative;z-index:1;color:#fff;font:800 21px var(--mono);letter-spacing:-.08em;text-shadow:0 4px 12px #000}.trophy-library-cover-orbit{position:absolute;width:58px;height:58px;border:1px solid hsla(var(--trophy-tone),82%,72%,.38);border-radius:50%;transform:rotateX(63deg)}.trophy-library-cover-progress{position:absolute;right:5px;bottom:5px;z-index:1;padding:3px 5px;color:#fff;background:rgba(0,0,0,.55);border-radius:999px;font:700 7px var(--mono)}.trophy-library-card-copy{display:grid;gap:6px;min-width:0}.trophy-library-card-copy>strong{display:-webkit-box;overflow:hidden;font-size:12px;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2}.trophy-library-card-copy>small{color:var(--text-dim);font-size:11px}.trophy-library-card-meta{display:flex;align-items:center;gap:5px}.trophy-library-card-meta b,.trophy-library-card-meta i{padding:3px 5px;border-radius:999px;font:700 7px var(--mono);font-style:normal}.trophy-library-card-meta b{color:#b9a9ff;background:rgba(118,81,230,.15)}.trophy-library-card-meta i{color:var(--green);background:rgba(76,175,80,.1)}.trophy-library-card-track{height:3px;overflow:hidden;background:rgba(255,255,255,.07);border-radius:999px}.trophy-library-card-track i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--teal));border-radius:inherit}
.trophy-library-detail{display:grid;gap:14px;padding:18px;border:1px solid rgba(255,255,255,.09);border-radius:16px;background:rgba(7,6,12,.44);box-shadow:inset 0 1px rgba(255,255,255,.035)}.trophy-library-detail-header{display:grid;grid-template-columns:82px minmax(0,1fr) auto;align-items:center;gap:16px}.trophy-library-detail-header h3{margin:3px 0 5px;font-size:21px;letter-spacing:-.02em}.trophy-library-platform{color:#b9a9ff;font:700 11px var(--mono);letter-spacing:.12em;text-transform:uppercase}.trophy-library-detail-header dl{display:flex;gap:8px;margin:0}.trophy-library-detail-header dl div{min-width:62px;padding:9px;border:1px solid var(--border);border-radius:12px;text-align:center;background:rgba(255,255,255,.025)}.trophy-library-detail-header dt{color:var(--text-dim);font-size:11px}.trophy-library-detail-header dd{margin:3px 0 0;font-size:16px;font-weight:800}.trophy-library-progress-ring{--ring-color:var(--teal);display:grid;place-items:center;width:74px;height:74px;border-radius:50%;background:radial-gradient(circle at center,#11101a 56%,transparent 58%),conic-gradient(var(--ring-color) var(--trophy-progress),rgba(255,255,255,.08) 0);box-shadow:0 0 24px rgba(0,188,212,.1)}.trophy-library-progress-ring strong{font:800 16px var(--mono)}
.trophy-library-toolbar{display:grid;grid-template-columns:auto minmax(170px,1fr) 126px auto;gap:9px;align-items:center}.trophy-library-segments{display:flex;padding:3px;background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:12px}.trophy-library-segments button{padding:7px 10px;color:var(--text-dim);background:transparent;border:0;border-radius:8px;font-size:11px;cursor:pointer}.trophy-library-segments button.is-active{color:var(--text);background:rgba(118,81,230,.2);box-shadow:0 1px 5px rgba(0,0,0,.25)}.trophy-library-search input,.trophy-library-grade select{width:100%;min-height:34px;box-sizing:border-box;color:var(--text);background:rgba(0,0,0,.22);border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:11px}.trophy-library-hidden{display:flex;align-items:center;gap:6px;color:var(--text-dim);font-size:11px;white-space:nowrap}.trophy-library-hidden input{width:16px;height:16px}.trophy-library-list{display:grid;gap:7px}.trophy-library-row{display:grid;grid-template-columns:42px minmax(0,1fr) 150px;align-items:center;gap:11px;min-height:62px;padding:9px 11px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(110deg,rgba(255,255,255,.025),rgba(255,255,255,.01));transition:border-color .16s ease,background .16s ease}.trophy-library-row:hover{border-color:rgba(255,255,255,.17);background:rgba(255,255,255,.035)}.trophy-library-row.is-earned{border-color:rgba(76,175,80,.25);background:linear-gradient(110deg,rgba(76,175,80,.06),rgba(255,255,255,.01))}.trophy-library-medal{position:relative;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:linear-gradient(145deg,#9b672f,#4d2d18);box-shadow:inset 0 1px rgba(255,255,255,.34),0 5px 10px rgba(0,0,0,.25)}.trophy-library-medal::before{content:"";position:absolute;top:-4px;width:12px;height:10px;background:#7651e6;clip-path:polygon(0 0,100% 0,75% 100%,25% 100%)}.trophy-library-medal i{width:15px;height:15px;border:1px solid rgba(255,255,255,.5);border-radius:50%}.trophy-library-medal[data-grade=gold]{background:linear-gradient(145deg,#f4cc69,#8b5e15)}.trophy-library-medal[data-grade=silver]{background:linear-gradient(145deg,#d5dbe3,#667281)}.trophy-library-medal[data-grade=platinum]{background:linear-gradient(145deg,#b7f4ff,#7067b8)}.trophy-library-row-copy{display:grid;gap:3px;min-width:0}.trophy-library-row-copy strong{font-size:11px}.trophy-library-row-copy small{color:var(--text-dim);font-size:11px;line-height:1.45}.trophy-library-row-copy em{color:var(--text-dim);font:normal 7px var(--mono);text-transform:capitalize}.trophy-library-row-state{display:grid;justify-items:end;gap:4px;text-align:right}.trophy-library-row-state>b{color:var(--text-dim);font-size:11px}.trophy-library-row.is-earned .trophy-library-row-state>b{color:var(--green)}.trophy-library-row-state time{color:var(--text-dim);font-size:7px}.trophy-library-unlock{color:#ffd7d5;border-color:rgba(239,83,80,.35);background:rgba(239,83,80,.09)}
.trophy-library-unlock-review{display:grid;grid-template-columns:44px minmax(200px,1fr) minmax(260px,.9fr) auto auto;align-items:center;gap:8px 10px;padding:13px;border:1px solid rgba(239,83,80,.35);border-radius:12px;background:radial-gradient(circle at 0 50%,rgba(239,83,80,.12),transparent 30%),rgba(239,83,80,.035)}.trophy-library-review-icon{grid-row:1/3;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;color:#ffd7d5;background:rgba(239,83,80,.15);font:800 11px var(--mono)}.trophy-library-unlock-review>div:not(.trophy-library-review-icon){grid-row:1/3}.trophy-library-unlock-review h3{margin:3px 0;font-size:14px}.trophy-library-unlock-review p{margin:0;color:var(--text-dim);font-size:11px}.trophy-library-unlock-review code{grid-column:3/-1;padding:6px 8px;overflow-wrap:anywhere;color:var(--amber);background:rgba(255,193,7,.055);border-radius:8px;font-size:11px}.trophy-library-unlock-review input{grid-column:3;min-width:0;color:var(--text);background:rgba(0,0,0,.25);border:1px solid var(--border);border-radius:8px;padding:8px}.trophy-library-unlock-review>p{grid-column:2/-1;min-height:12px}.trophy-library-result{margin:0;padding:10px;color:var(--green);border:1px solid rgba(76,175,80,.24);border-radius:12px;background:rgba(76,175,80,.06);font-size:11px}.trophy-library-no-results,.trophy-library-empty{display:grid;place-items:center;gap:6px;min-height:150px;text-align:center;color:var(--text-dim)}.trophy-library-no-results strong,.trophy-library-empty h2{color:var(--text)}.trophy-library-empty-icon{font-size:45px;color:var(--accent)}
.trophy-advanced-workspace{border:1px solid var(--border);border-radius:13px;background:rgba(255,255,255,.015);overflow:hidden}.trophy-advanced-workspace>summary{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:14px 16px;cursor:pointer;list-style:none}.trophy-advanced-workspace>summary::-webkit-details-marker{display:none}.trophy-advanced-workspace>summary::before{content:"+";display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--border);border-radius:50%;color:var(--accent);font:700 12px var(--mono)}.trophy-advanced-workspace[open]>summary::before{content:"−"}.trophy-advanced-workspace>summary span{grid-column:2;color:var(--accent);font:700 11px var(--mono);letter-spacing:.12em;text-transform:uppercase}.trophy-advanced-workspace>summary strong{grid-column:2}.trophy-advanced-workspace>summary small{grid-column:3;grid-row:1/3;color:var(--text-dim);font-size:11px}.trophy-advanced-content{display:grid;gap:16px;padding:0 14px 14px}
@media(max-width:900px){.trophy-library-detail-header{grid-template-columns:74px minmax(0,1fr)}.trophy-library-detail-header dl{grid-column:1/-1}.trophy-library-toolbar{grid-template-columns:1fr 1fr}.trophy-library-segments{grid-column:1/-1}.trophy-library-unlock-review{grid-template-columns:40px 1fr}.trophy-library-review-icon,.trophy-library-unlock-review>div:not(.trophy-library-review-icon){grid-row:auto}.trophy-library-unlock-review code,.trophy-library-unlock-review input,.trophy-library-unlock-review button,.trophy-library-unlock-review>p{grid-column:1/-1}.trophy-library-unlock-review button{width:100%}}
@media(max-width:600px){.trophy-library-shell{padding:15px}.trophy-library-heading{display:grid}.trophy-library-totals{width:max-content}.trophy-library-grid{display:flex;margin-inline:-15px;padding-inline:15px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.trophy-library-grid::-webkit-scrollbar{display:none}.trophy-library-game-card{min-width:230px;scroll-snap-align:start}.trophy-library-detail{padding:12px}.trophy-library-toolbar{grid-template-columns:1fr}.trophy-library-search,.trophy-library-grade{grid-column:1}.trophy-library-row{grid-template-columns:36px minmax(0,1fr)}.trophy-library-row-state{grid-column:2;justify-items:start;text-align:left}.trophy-library-detail-header dl{display:grid;grid-template-columns:repeat(3,1fr);width:100%}.trophy-advanced-workspace>summary small{display:none}}
@media(prefers-reduced-motion:reduce){.trophy-library-game-card,.trophy-library-game-card::after,.trophy-library-row{transition:none}.trophy-library-game-card:hover{transform:none}}
+1
View File
@@ -0,0 +1 @@
.trophy-active{display:grid;gap:14px;overflow:hidden}.trophy-active-summary{display:flex;align-items:baseline;gap:8px}.trophy-active-summary strong{font-size:24px;color:var(--teal)}.trophy-active-summary span{color:var(--text-dim);font-size:11px}.trophy-active-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.trophy-active-row{display:grid;grid-template-columns:34px minmax(0,1fr) 72px 78px;align-items:center;gap:10px;padding:10px;border:1px solid var(--border);border-radius:8px;background:rgba(255,255,255,.018)}.trophy-active-row.is-unlocked{border-color:rgba(76,175,80,.3);background:rgba(76,175,80,.045)}.trophy-active-row strong,.trophy-active-row small{display:block}.trophy-active-row small{margin-top:3px;color:var(--text-dim);font-size:11px}.trophy-active-id{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.055);font:700 11px var(--mono)}.trophy-active-grade,.trophy-active-state{text-transform:capitalize;color:var(--text-dim);font-size:11px}.trophy-active-row.is-unlocked .trophy-active-state{color:var(--green)}@media(max-width:700px){.trophy-active-row{grid-template-columns:32px minmax(0,1fr)}.trophy-active-grade,.trophy-active-state{grid-column:2}}
+4
View File
@@ -0,0 +1,4 @@
.trophy-progression{display:grid;gap:1rem}.trophy-progression-controls{display:grid;grid-template-columns:repeat(3,minmax(12rem,1fr));gap:.75rem}.trophy-progression-controls label{display:grid;gap:.35rem;font-size:var(--fs-xs);font-weight:700}.trophy-progression-controls input,.trophy-progression-controls select{min-width:0;padding:.65rem;border:1px solid var(--border-color,rgba(255,255,255,.14));border-radius:.5rem;background:var(--bg);color:var(--text)}
.trophy-progression-actions{display:flex;gap:.75rem;align-items:center;justify-content:space-between}.trophy-progression-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;max-height:28rem;overflow:auto}.trophy-progression-choice{display:flex;gap:.7rem;align-items:center;padding:.7rem;border:1px solid var(--border-color,rgba(255,255,255,.12));border-radius:.5rem}.trophy-progression-choice span{display:grid;gap:.2rem}.trophy-progression-choice small{opacity:.72}
.trophy-progression-preview{display:grid;gap:.75rem;padding-top:.75rem;border-top:1px solid var(--border-color,rgba(255,255,255,.12))}.trophy-synthetic-warning{display:grid;gap:.25rem;padding:.8rem;border:1px solid rgba(245,158,11,.45);border-radius:.55rem;background:rgba(245,158,11,.08)}.trophy-progression-preview ol{display:grid;gap:.5rem;list-style:none;padding:0;margin:0}.trophy-progression-preview li{display:grid;grid-template-columns:minmax(11rem,auto) 1fr;gap:1rem;align-items:center;padding:.65rem;border-left:3px solid var(--accent,#7c3aed)}.trophy-progression-preview li div{display:grid;gap:.15rem}.trophy-progression-preview small{opacity:.72}.trophy-progression-preview code{overflow-wrap:anywhere}
@media(max-width:900px){.trophy-progression-controls{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.trophy-progression-controls,.trophy-progression-choices{grid-template-columns:1fr}.trophy-progression-preview li{grid-template-columns:1fr;gap:.25rem}}
+1
View File
@@ -0,0 +1 @@
.trophy-active-state{display:grid;gap:5px}.trophy-unlock-panel{display:grid;gap:8px;padding:12px;border:1px solid rgba(239,83,80,.3);border-radius:8px}.trophy-unlock-panel code{overflow-wrap:anywhere;color:var(--amber)}.trophy-unlock-panel input{width:100%;box-sizing:border-box;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:9px}.trophy-hidden-controls{display:flex;align-items:center;justify-content:space-between;gap:18px}.trophy-hidden-controls h2{margin:0}.trophy-hidden-controls p{margin:5px 0 0;color:var(--muted)}.trophy-hidden-toggle{display:flex;align-items:center;gap:9px;white-space:nowrap}.trophy-hidden-toggle input{width:18px;height:18px}@media(max-width:720px){.trophy-hidden-controls{align-items:flex-start;flex-direction:column}.trophy-hidden-toggle{white-space:normal}}
+1
View File
@@ -0,0 +1 @@
.trophy-workspace{display:grid;gap:16px}.trophy-evidence,.trophy-expert{display:grid;gap:16px;overflow:hidden}.trophy-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.trophy-section-heading span{color:var(--accent);font:700 11px var(--mono);letter-spacing:.12em;text-transform:uppercase}.trophy-section-heading h2{margin:4px 0 0;font-size:20px}.trophy-readonly-badge,.trophy-local-only{padding:6px 9px;color:var(--teal);background:rgba(0,188,212,.08);border:1px solid rgba(0,188,212,.25);border-radius:999px;font-size:11px}.trophy-local-only{color:var(--yellow);background:rgba(255,193,7,.07);border-color:rgba(255,193,7,.28)}.trophy-snapshot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.trophy-snapshot-grid article{display:grid;gap:5px;padding:14px;background:linear-gradient(145deg,rgba(255,255,255,.04),rgba(255,255,255,.015));border:1px solid var(--border);border-radius:12px}.trophy-snapshot-grid article.has-difference{border-color:rgba(255,193,7,.34)}.trophy-snapshot-grid span,.trophy-snapshot-grid small{color:var(--text-dim);font-size:11px}.trophy-snapshot-grid strong{font-size:12px}.trophy-diff-list{display:grid;gap:7px}.trophy-diff-row{display:grid;grid-template-columns:130px minmax(150px,1fr) minmax(210px,.8fr);align-items:center;gap:12px;padding:11px;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.018)}.trophy-diff-row strong,.trophy-diff-row small,.trophy-times span{display:block}.trophy-diff-row small,.trophy-times{color:var(--text-dim);font-size:11px}.trophy-state{width:max-content;padding:4px 7px;border-radius:999px;background:rgba(255,255,255,.06);font-size:11px;font-weight:700}.trophy-state-psn_only{color:var(--yellow);background:rgba(255,193,7,.09)}.trophy-state-both{color:var(--green);background:rgba(76,175,80,.09)}.trophy-state-metadata_mismatch,.trophy-state-unmappable{color:var(--red);background:rgba(244,67,54,.08)}.trophy-preconditions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0}.trophy-preconditions div{padding:11px;background:rgba(255,255,255,.025);border:1px solid var(--border);border-radius:8px}.trophy-preconditions dt{color:var(--text-dim);font-size:11px}.trophy-preconditions dd{margin:5px 0 0;font-size:11px;overflow-wrap:anywhere}.trophy-plan-list{display:grid;gap:7px;margin:0;padding:0;list-style:none}.trophy-plan-item{display:grid;grid-template-columns:28px minmax(0,1fr);gap:9px;padding:11px;border:1px solid var(--border);border-radius:8px}.trophy-plan-item>span{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;font-weight:800}.trophy-plan-item.is-eligible>span{color:var(--green);background:rgba(76,175,80,.1)}.trophy-plan-item.is-ineligible>span{color:var(--red);background:rgba(244,67,54,.1)}.trophy-plan-item small,.trophy-plan-item p{display:block;margin:3px 0 0;color:var(--text-dim);font-size:11px}.trophy-plan-item ul{margin:7px 0 0;padding-left:18px;color:var(--yellow);font-size:11px}.trophy-confirmation{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:8px;align-items:end;padding:14px;background:rgba(244,67,54,.045);border:1px solid rgba(244,67,54,.22);border-radius:12px}.trophy-confirmation label,.trophy-confirmation small{grid-column:1/-1}.trophy-confirmation label span,.trophy-confirmation label code{display:block}.trophy-confirmation label code{margin-top:5px;color:var(--yellow)}.trophy-confirmation input{min-height:38px}.trophy-confirmation small,.trophy-action-status,.trophy-empty,.trophy-warning{color:var(--text-dim);font-size:11px}.trophy-action-status{min-height:34px;padding:10px;background:rgba(255,255,255,.025);border-radius:8px}@media(max-width:900px){.trophy-snapshot-grid{grid-template-columns:1fr}.trophy-preconditions{grid-template-columns:repeat(2,minmax(0,1fr))}.trophy-diff-row{grid-template-columns:1fr}.trophy-times{display:flex;gap:12px;flex-wrap:wrap}}@media(max-width:560px){.trophy-section-heading{flex-direction:column}.trophy-preconditions{grid-template-columns:1fr}.trophy-confirmation{grid-template-columns:1fr}.trophy-confirmation .btn{width:100%;min-height:44px}}