604 lines
56 KiB
CSS
604 lines
56 KiB
CSS
.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}
|
||
}
|