.patcher-page{max-width:1240px;margin:2rem auto;font:16px system-ui,sans-serif;color:#e5e7eb;padding:0 1rem}.local-note{color:#a78bfa}.file-drop{border:2px dashed #34383f;border-radius:10px;padding:1rem;margin:1rem 0;min-height:100px;background:#202328}.file-drop strong{margin-right:1rem}.file-drop input{display:none}.file-drop button,.apply,.success button,.choose-patch{padding:.55rem .85rem;cursor:pointer;border:none;border-radius:8px;background:#7529f1;color:#fff;font-weight:600}.file-drop button:hover,.apply:not(:disabled):hover,.success button:hover,.choose-patch:hover{background:#8b3ff7}.file-drop p{color:#9ca3af}.apply{margin:1rem 0}.apply:disabled{cursor:not-allowed;opacity:.55}.error{border-left:4px solid #f87171;background:#2a1517;padding:1rem;color:#fca5a5;border-radius:8px}.success{margin-top:1rem;padding:1rem;background:#14231a;border:1px solid #2f7a4f;border-radius:8px}.compatible{margin:1rem 0;padding:1rem;border:1px solid #6d3fc9;background:#241a38;border-radius:8px}.compatible h2{margin-top:0;color:#e5e7eb}.compatible small{color:#9ca3af}.choose-patch{display:block;margin-top:.5rem;padding:.4rem .65rem;cursor:pointer;border:none;border-radius:8px;background:#7529f1;color:#fff;font-weight:600}.choose-patch:hover{background:#8b3ff7}.rom-signatures{margin:1rem 0;padding:1rem;background:#202328;border:1px solid #34383f;border-radius:8px}.rom-signatures h2{margin-top:0;color:#e5e7eb}.rom-signatures dl{display:grid;grid-template-columns:max-content 1fr;gap:.35rem 1rem;margin:0}.rom-signatures dt{font-weight:700;color:#d1d5db}.rom-signatures dd{margin:0;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:#e5e7eb}.patcher-layout{display:grid;grid-template-columns:minmax(0,420px) 1fr;gap:1.5rem;align-items:start}.patcher-left{padding-bottom:96px}.patcher-right{border:1px solid #34383f;border-radius:10px;padding:1rem;background:#202328;max-height:85vh;overflow-y:auto}.patcher-right h2{margin-top:0;color:#e5e7eb}.catalog-groups{display:flex;flex-direction:column;gap:1.25rem}.catalog-group h3{margin:0 0 .5rem;color:#f8fafc;border-bottom:1px solid #34383f;padding-bottom:.3rem}.catalog-card{border:1px solid #34383f;background:#24272c;border-radius:8px;padding:.7rem;margin-bottom:.6rem}.catalog-card.selected{border-color:#7529f1;box-shadow:0 0 0 1px #7529f1}.catalog-card.grayed{opacity:.55;background:#1f2227}.catalog-card.grayed img{filter:grayscale(1)}.catalog-card-head{display:flex;gap:.75rem}.catalog-card-head img{width:96px;height:72px;object-fit:cover;border:1px solid #34383f;border-radius:4px;background:#2a2d33;flex:0 0 auto}.catalog-no-image{width:96px;height:72px;border:1px dashed #6b7280;border-radius:4px;display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:.75rem;text-align:center}.catalog-card h4{margin:0 0 .2rem;font-size:.95rem;color:#f8fafc}.catalog-meta{margin:0;color:#9ca3af;font-size:.8rem}.catalog-desc{color:#d1d5db;font-size:.85rem;margin:.5rem 0 0;white-space:pre-line}.catalog-required{color:#fbbf24;font-size:.8rem;margin:.5rem 0 0;border-top:1px dashed #b45309;padding-top:.4rem}@media(max-width:900px){.patcher-layout{grid-template-columns:1fr}}.iso-progress-track{width:100%;height:10px;overflow:hidden;border-radius:999px;background:#111827;border:1px solid #4b5563}.xdelta-status{margin:10px 0 6px;color:#fbbf24;font-size:.92rem}.xdelta-status.ready{color:#86efac}.iso-progress-fill{height:100%;min-width:0;border-radius:inherit;background:linear-gradient(90deg,#f59e0b,#f97316,#a855f7);transition:width .18s ease-out}.iso-progress-fill.indeterminate{width:35%;animation:iso-progress-slide 1.1s ease-in-out infinite alternate}@keyframes iso-progress-slide{0%{transform:translate(-100%)}to{transform:translate(290%)}}.site-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:28px;padding:18px clamp(20px,4vw,56px);background:#111827;border-bottom:3px solid #7529F1;color:#f8fafc;font-family:system-ui,sans-serif}.site-brand{color:#f8fafc;text-decoration:none;font-weight:800;letter-spacing:.02em}.brand-name{font-size:1.3rem;color:#f8fafc}.brand-patch{color:#a78bfa}.site-header nav{display:flex;flex-wrap:wrap;gap:8px}.site-header nav a{padding:10px 15px;border-radius:8px;color:#e2e8f0;text-decoration:none}.site-header nav a:hover{background:#334155}.site-header nav a[aria-current=page]{color:#fff;background:#7529f1;font-weight:700}.lang-switch{display:inline-flex;border:1px solid #34383f;border-radius:8px;overflow:hidden}.lang-switch button{background:#1b1d21;color:#9ca3af;border:none;padding:7px 12px;cursor:pointer;font-weight:700;font-size:.85rem}.lang-switch button.active{background:#7529f1;color:#fff}.lang-switch button+button{border-left:1px solid #34383f}.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:18px;flex-wrap:wrap}.account-actions{display:flex;align-items:center;gap:12px;padding-left:18px;border-left:1px solid #34383f}.profile-link{color:#e5e7eb;text-decoration:none;font-weight:700;font-size:.88rem;display:inline-flex;align-items:center;gap:7px}.profile-link img{width:30px;height:30px;border-radius:50%}.admin-link{color:#fbbf24;text-decoration:none;font-weight:800;font-size:.86rem;padding:8px 10px;border-radius:8px;background:#fbbf241a;display:inline-flex;align-items:center;gap:7px}.admin-badge{min-width:18px;height:18px;padding:0 5px;border-radius:999px;display:inline-grid;place-items:center;background:#ef4444;color:#fff;font-size:.7rem;line-height:1}.account-actions button{color:#9ca3af;background:none;border:none;cursor:pointer;font-size:.82rem;padding:8px}.google-signin{display:inline-flex;align-items:center;gap:9px;padding:10px 15px;border:1px solid #596273;color:#f8fafc;text-decoration:none;border-radius:9px;font-weight:700;font-size:.86rem;white-space:nowrap}.google-signin span{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#fff;color:#4285f4;font-weight:900}.site-header a:focus-visible{outline:3px solid #facc15;outline-offset:3px}.site-skip{position:absolute;left:16px;top:-100px;padding:12px;background:#fff;color:#111827;z-index:10}.site-skip:focus{top:8px}@media(max-width:540px){.site-header{padding:16px 14px;gap:14px}.site-header nav{width:100%}.site-header nav a{padding:10px}.header-actions{width:100%;justify-content:space-between;gap:10px}.account-actions{padding-left:0;border-left:0}}:root{color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;background:#050509;color:#e5e7eb;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}body{background-image:radial-gradient(ellipse 52% 48% at -4% -8%,rgba(100,36,224,.46),transparent 72%),radial-gradient(ellipse 47% 48% at -8% 94%,rgba(91,25,214,.54),transparent 74%),radial-gradient(ellipse 54% 52% at 104% 96%,rgba(91,25,214,.48),transparent 74%),radial-gradient(ellipse 38% 45% at 98% 2%,rgba(45,12,111,.24),transparent 75%);background-attachment:fixed}#root{min-height:100vh;background:radial-gradient(ellipse 58% 42% at 50% 48%,rgba(0,0,0,.58),transparent 78%)}a{color:#a78bfa}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:#2a2d33;padding:1px 5px;border-radius:4px}.chip{display:inline-block;background:#24272c;border:1px solid #34383f;border-radius:999px;padding:4px 12px;font-size:.8rem;color:#d1d5db}.kofi-button{display:inline-flex;align-items:center;padding:10px 18px;border-radius:8px;background:#7529f1;color:#fff;font-weight:700;text-decoration:none}.kofi-button:hover{background:#8b3ff7}label:has(input[multiple][accept*=".jpg"]):after{content:"Tip: select multiple files at once to upload several screenshots or GIFs.";display:block;margin-top:.35rem;color:#9ca3af;font-size:.8rem}form:has(input[name=romCrc32]) label:has(input[name=author]){display:none}form:has(input[name=romCrc32]) label:has(select[name=patchFormat]){display:none}.community-upload{max-width:920px;margin:0 auto;padding:2.25rem 1.25rem 3rem;color:#e5e7eb}.community-back{display:inline-block;margin-bottom:1.25rem}.community-upload-heading{margin-bottom:1.35rem}.community-upload-heading>span{color:#a78bfa;font-size:.75rem;font-weight:800;letter-spacing:.08em}.community-upload-heading h1{margin:.25rem 0 .35rem;font-size:clamp(1.75rem,4vw,2.35rem)}.community-upload-heading p,.community-help{color:#aab2c0;margin:0;line-height:1.55}.community-upload-form{display:grid;gap:16px}.community-upload-rules{display:none}.community-upload-card{padding:20px;border:1px solid #383d46;border-radius:14px;background:linear-gradient(145deg,#22262c,#1d2025);box-shadow:0 14px 34px #00000029}.community-upload-card h2{margin:0 0 16px;font-size:1.15rem}.community-upload-card summary{cursor:pointer;font-weight:800;font-size:1.1rem}.community-upload-card summary small{margin-left:8px;color:#9ca3af;font-size:.8rem;font-weight:400}.community-upload-card label{display:grid;gap:6px;color:#e5e7eb;font-size:.9rem;font-weight:650}.community-upload-card label>small,.community-file-label small{color:#9ca3af;font-size:.78rem;font-weight:400}.community-upload-card input:not([type=file]),.community-upload-card textarea,.community-upload-card select{width:100%;box-sizing:border-box;padding:10px 12px;background:#14161a;color:#f8fafc;border:1px solid #414752;border-radius:8px;font:inherit}.community-upload-card textarea{resize:vertical;min-height:105px}.community-upload-card input:focus,.community-upload-card textarea:focus,.community-upload-card select:focus{outline:2px solid #8546f7;outline-offset:1px;border-color:transparent}.community-upload-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:14px}.community-upload-wide{grid-column:span 2}.community-local-rom{margin:14px 0;padding:12px;border-radius:9px;border:1px dashed #535b68;background:#191b20}.community-file-label{padding:13px;border:1px dashed #566071;border-radius:10px;background:#181a1f}.community-file-label+.community-file-label{margin-top:14px}.community-upload-status{margin:14px 0;padding:12px 14px;border-radius:9px;border-left:4px solid #64748b;background:#171b22;line-height:1.45}.community-upload-status.success{border-left-color:#34d399;background:#10251f;color:#bbf7d0}.community-upload-status.error{border-left-color:#fb7185;background:#30171c;color:#fecdd3;font-weight:700}.community-gallery-order{display:grid;gap:8px;margin-top:14px}.community-gallery-order>div{display:flex;gap:9px;align-items:center;padding:8px;border-radius:9px;background:#17191d;border:1px solid #343943}.community-gallery-order img{width:82px;height:56px;object-fit:cover;border-radius:5px}.community-gallery-order span{min-width:0;flex:1;display:grid;gap:3px}.community-gallery-order small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#aab2c0}.community-gallery-order button{padding:5px 8px}.community-publish{width:100%;min-height:46px;font-size:1rem}.community-terms-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px;background:#000000bf}.community-terms-modal{width:min(580px,100%);padding:24px;border:1px solid #7040d5;border-radius:14px;background:#202328;box-shadow:0 25px 80px #000000a6;color:#e5e7eb}.community-terms-modal h2{margin-top:0}.community-terms-modal p{color:#cbd5e1;line-height:1.55}.community-terms-modal label{display:flex;gap:9px;align-items:flex-start;margin:18px 0;font-weight:700}.community-terms-modal label input{margin-top:3px}.community-terms-modal>div{display:flex;justify-content:flex-end;gap:10px}.community-terms-modal>div button{width:auto;min-height:42px;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}.community-terms-modal .apply{min-height:42px}.community-manage-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px}.community-manage-actions button{width:auto;height:42px;min-height:42px;margin:0;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;cursor:pointer;white-space:nowrap}.community-manage-actions .apply,.community-version-form .apply{width:auto;min-height:42px}.community-manage-actions .apply{margin:0}.community-danger{border:1px solid #dc2626;color:#fecaca;background:#45171a}.community-danger:hover{background:#651d22}.community-version-form{display:grid;gap:12px}.community-version-history{margin-top:20px;padding-top:14px;border-top:1px solid #343943}.community-version-history h3{margin:0 0 8px;font-size:1rem}.community-version-history p{margin:7px 0;color:#d1d5db}.community-maintainers{display:grid;gap:8px;margin-top:16px}.community-maintainers p{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:10px 12px;border:1px solid #343943;border-radius:8px;background:#17191d}@media(min-width:881px){.community-upload{max-width:1180px}.community-upload-form{grid-template-columns:minmax(230px,.68fr) minmax(0,1fr);align-items:start}.community-upload-form:before{content:"UPLOAD RULES\a\a• Upload patches only. Commercial ROM files are never accepted.\a\a• Original ROM information is mandatory: CRC32, MD5, SHA-1, file size, region, and revision. Use ‘Choose original ROM locally’ to fill it safely; your ROM never leaves your browser.\a\a• A hack without valid ROM signatures cannot be used in the Patcher. It may remain in the ROM hack list, at the bottom, until valid information is supplied.\a\a• Incorrect or misleading ROM information can result in the ROM hack being removed. Repeated intentional false submissions may result in upload access being restricted.";white-space:pre-line;grid-column:1;grid-row:1 / span 4;position:sticky;top:18px;padding:18px;border:1px solid #92400e;border-left:4px solid #f59e0b;border-radius:12px;background:#2b2115;color:#fde68a;font-size:.88rem;line-height:1.55}.community-upload-form>.community-upload-card,.community-upload-form>.community-publish{grid-column:2}}@media(max-width:880px){.community-upload-form:before{content:"Upload rules: valid CRC32, MD5, SHA-1, ROM size, region, and revision are mandatory. ROM hacks without valid signatures are not usable in the Patcher. Misleading information can lead to removal and upload restrictions.";padding:14px;border-left:4px solid #f59e0b;border-radius:9px;background:#2b2115;color:#fde68a;line-height:1.5}}@media(max-width:680px){.community-upload-grid{grid-template-columns:1fr}.community-upload-wide{grid-column:auto}.community-gallery-order>div{flex-wrap:wrap}}
