:root{--color-bg: #c9c5bc;--color-primary: #982d31;--color-primary-dark: #72191c;--color-secondary: #795548;--color-secondary-dark: #593f36;--color-ui-dark: #000000;--color-ui-medium: #0a0a0a;--color-ui-light: #111111;--color-ui-lighter: #222222;--color-ui-lightest: #333333;--color-success: #1ed760;--color-success-dim: rgba(30, 215, 96, .44);--color-warning: #f39c12;--color-warning-light: #ff5722;--color-error: #e74c3c;--color-error-light: #ff6b6b;--color-error-lighter: #ff5252;--color-info: #2196F3;--color-text-primary: #ffffff;--color-text-secondary: #e0e0e0;--color-text-muted: #ccc;--color-text-disabled: #888;--color-border-dark: #333;--color-border-medium: #444;--color-border-light: #555;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--font-size-xs: 10px;--font-size-sm: 12px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-family-base: sans-serif;--font-family-mono: monospace;--shadow-sm: 0 2px 4px rgba(0, 0, 0, .2);--shadow-md: 0 4px 8px rgba(0, 0, 0, .2);--shadow-lg: 0 8px 16px rgba(0, 0, 0, .3);--shadow-inset: inset 2px 2px 4px rgba(0, 0, 0, .2);--shadow-button-resting: 2px 2px 4px rgba(0, 0, 0, .2), -2px -2px 4px rgba(255, 255, 255, .1), inset 1px 1px 2px rgba(255, 255, 255, .2);--shadow-button-hover: 3px 3px 5px rgba(0, 0, 0, .25), -3px -3px 5px rgba(255, 255, 255, .15), inset 1px 1px 2px rgba(255, 255, 255, .3);--shadow-button-active: 1px 1px 2px rgba(0, 0, 0, .15), -1px -1px 2px rgba(255, 255, 255, .05), inset 1px 1px 2px rgba(0, 0, 0, .1);--radius-sm: 4px;--radius-md: 5px;--radius-lg: 8px;--radius-xl: 10px;--radius-2xl: 12px;--radius-full: 50%;--transition-fast: .1s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--z-base: 1;--z-overlay: 10;--z-modal: 100;--z-popover: 200;--z-tooltip: 1000;--z-top: 9999;--bg-image: url(/wallpapers/default.svg);--bg-size: cover;--bg-position: bottom;--bg-color: var(--color-bg);--primary-btn-color1: var(--color-primary);--primary-btn-color2: var(--color-primary-dark);--secondary-btn-color1: var(--color-secondary);--secondary-btn-color2: var(--color-secondary-dark)}[data-color-theme=classic]{--color-bg: #c9c5bc;--color-primary: #982d31;--color-primary-dark: #72191c;--color-secondary: #795548;--color-secondary-dark: #593f36}[data-color-theme=yellow]{--color-bg: #eecc1c;--color-primary: #45a049;--color-primary-dark: #3d8b40;--color-secondary: #795548;--color-secondary-dark: #593f36}[data-color-theme=blue]{--color-bg: #00bfff;--color-primary: #0d47a1;--color-primary-dark: #1a237e;--color-secondary: #37474f;--color-secondary-dark: #263238}[data-color-theme=green]{--color-bg: #32cd32;--color-primary: #2e7d32;--color-primary-dark: #1b5e20;--color-secondary: #37474f;--color-secondary-dark: #263238}[data-color-theme=purple]{--color-bg: #9370db;--color-primary: #6a1b9a;--color-primary-dark: #4a148c;--color-secondary: #37474f;--color-secondary-dark: #263238}[data-color-theme=red]{--color-bg: #ff4500;--color-primary: #d32f2f;--color-primary-dark: #b71c1c;--color-secondary: #37474f;--color-secondary-dark: #263238}[data-color-theme=teal]{--color-bg: #20b2aa;--color-primary: #00838f;--color-primary-dark: #006064;--color-secondary: #00695c;--color-secondary-dark: #004d40}[data-color-theme=orange]{--color-bg: #ff8c00;--color-primary: #e65100;--color-primary-dark: #bf360c;--color-secondary: #795548;--color-secondary-dark: #5d4037}[data-color-theme=pink]{--color-bg: #ff69b4;--color-primary: #c2185b;--color-primary-dark: #ad1457;--color-secondary: #8e24aa;--color-secondary-dark: #7b1fa2}[data-color-theme=darkBlue]{--color-bg: #191970;--color-primary: #1a237e;--color-primary-dark: #0d47a1;--color-secondary: #283593;--color-secondary-dark: #1976d2}[data-color-theme=darkGray]{--color-bg: #1a1a1a;--color-primary: #2d2d2d;--color-primary-dark: #202020;--color-secondary: #2196f3;--color-secondary-dark: #3F51B5}[data-color-theme=black]{--color-bg: #000000;--color-primary: #0d0d0d;--color-primary-dark: #0a0a0a;--color-secondary: #1f1f1f;--color-secondary-dark: #171717}[data-wallpaper=none]{--bg-image: none}[data-wallpaper=default]{--bg-image: url(/wallpapers/default.svg)}[data-wallpaper=rice]{--bg-image: url(/wallpapers/rice.gif)}[data-wallpaper=desktop]{--bg-image: url(/wallpapers/desktop.gif)}[data-wallpaper=nintendo2]{--bg-image: url(/wallpapers/nintendo2.png)}[data-wallpaper=nintendo3]{--bg-image: url(/wallpapers/nintendo3.png)}[data-wallpaper=nintendo4]{--bg-image: url(/wallpapers/nintendo4.png)}[data-wallpaper=neonCyber]{--bg-image: url(/wallpapers/neon-cyber.svg)}[data-wallpaper=skyBlue]{--bg-image: url(/wallpapers/sky-blue.svg)}[data-wallpaper=retroPixel]{--bg-image: url(/wallpapers/retro-pixel.svg)}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}ul,ol{list-style:none}button{border:none;background:none;font:inherit;color:inherit;cursor:pointer}a{text-decoration:none;color:inherit}h1,h2,h3,h4,h5,h6{font-weight:400;font-size:1em}img{max-width:100%;display:block}input,textarea,select{font:inherit;color:inherit}@media (pointer: coarse){*{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}input[type=text],input[type=password],input[type=email],input[type=number],textarea,[contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}}body{font-family:var(--font-family-base);overflow:hidden;min-width:320px;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;touch-action:none}body canvas#canvas{opacity:0}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rotating{animation:rotate 1s linear infinite}@keyframes blink{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 #ff6b6bb3}70%{transform:scale(1.02);box-shadow:0 0 0 10px #ff6b6b00}to{transform:scale(1);box-shadow:0 0 #ff6b6b00}}@keyframes button-press{0%{transform:scale(1)}50%{transform:scale(.95) translateY(.5px)}to{transform:scale(.97)}}@keyframes glow-pulse{0%{box-shadow:0 0 15px #fffc,0 0 25px #fff9,2px 2px 4px #ffffff4d,-2px -2px 4px #0003}to{box-shadow:0 0 20px #fff,0 0 35px #fffc,2px 2px 4px #fff6,-2px -2px 4px #0003}}@keyframes fadeInTooltip{0%{opacity:0;transform:translate(-50%) translateY(5px)}to{opacity:1;transform:translate(-50%) translateY(0)}}#root{max-width:1280px;margin:-10px auto 0;text-align:center;background-color:var(--color-bg);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:50px;background-image:var(--bg-image);background-position:var(--bg-position);background-size:var(--bg-size)}.phone{height:840px;width:400px;display:flex;flex-direction:column;align-items:center;justify-content:center}@media only screen and (max-width: 450px){body{background-color:var(--color-bg)}#root{width:100%;border-radius:0;margin:0;flex:1}}@media only screen and (max-height: 450px){body.horizontal{background-color:var(--color-bg)}#root{width:100%;border-radius:0;margin:0;flex:1}}body.horizontal .phone{height:400px;width:840px}body.horizontal .phone .screen-container{position:absolute;zoom:.8;margin-top:0;margin-bottom:0;width:506px}body.horizontal .phone .screen-container{width:608px;aspect-ratio:320 / 240}body.horizontal .phone .screen-container .rom-list{zoom:1.3}body.horizontal .phone .screen-container .rom-list ul.layout-card{--rom-card-columns: 4;--rom-card-rows: 2}body.horizontal .phone .controls{margin-top:0;gap:40px;z-index:100}body.horizontal .phone .controls .menu-container{width:100%}body.horizontal .phone .controls .play-container{gap:500px;padding-right:5px;padding-top:10px}body.horizontal .phone .controls.n64-mode{gap:0px}body.horizontal .phone .controls.n64-mode .play-container .d-pad{flex-direction:column}body.horizontal .phone .controls .menu-container{flex-direction:row}body.horizontal .phone .controls .menu-container .menu-buttons{gap:540px}body.horizontal .phone .controls>.button-group{gap:540px}body.horizontal .phone{zoom:1}@media only screen and ((max-height: 850px) or (max-width: 376px)){.phone{zoom:.95}}@media only screen and ((max-height: 800px) or (max-width: 366px)){.phone{zoom:.93}}@media only screen and ((max-height: 750px) or (max-width: 356px)){.phone{zoom:.91}}@media only screen and ((max-height: 695px) or (max-width: 346px)){.phone{zoom:.82}}@media only screen and ((max-height: 660px) or (max-width: 341px)){.phone{zoom:.78}}@media only screen and ((max-height: 635px) or (max-width: 336px)){.phone{zoom:.74}}@media only screen and ((max-height: 560px) or (max-width: 326px)){.phone{zoom:.68}}@media only screen and ((max-height: 460px) or (max-width: 320px)){.phone{zoom:.6}}body.horizontal .options-dialog{zoom:1.3}@media only screen and ((max-width: 850px) or (max-height: 396px)){body.horizontal .phone{zoom:.98}body.horizontal .options-dialog{zoom:1.37}}@media only screen and ((max-width: 810px) or (max-height: 386px)){body.horizontal .phone{zoom:.96}body.horizontal .options-dialog{zoom:1.34}}@media only screen and ((max-width: 800px) or (max-height: 376px)){body.horizontal .phone{zoom:.92}body.horizontal .options-dialog{zoom:1.3}}@media only screen and ((max-width: 750px) or (max-height: 356px)){body.horizontal .phone{zoom:.87}body.horizontal .options-dialog{zoom:1.27}}@media only screen and ((max-width: 695px) or (max-height: 346px)){body.horizontal .phone{zoom:.81}body.horizontal .options-dialog{zoom:1.25}}@media only screen and ((max-width: 660px) or (max-height: 341px)){body.horizontal .phone{zoom:.8}body.horizontal .options-dialog{zoom:1.12}}@media only screen and ((max-width: 560px) or (max-height: 336px)){body.horizontal .phone{zoom:.7}}@media only screen and ((max-width: 460px) or (max-height: 320px)){body.horizontal .phone{zoom:.58}}.layout-vertical .screen-container{margin-bottom:15px;aspect-ratio:240 / 320}.layout-vertical .controls{margin-top:0;gap:10px}body.horizontal .layout-vertical .screen-container{aspect-ratio:320 / 264}body:not(.horizontal) .layout-vertical .rom-list ul.layout-card{--rom-card-columns: 3;--rom-card-rows: 3}body:not(.horizontal) .layout-vertical .play-container .action-buttons-secondary{gap:15px}body:not(.horizontal) .layout-vertical .play-container .action-buttons-secondary .control-btn{width:24px;height:32px}.screen-container{background:var(--color-ui-dark);aspect-ratio:240 / 240;margin-top:-20px;margin-bottom:var(--spacing-lg);position:relative;overflow:hidden;zoom:1.03;border:2px solid var(--color-border-dark);box-sizing:border-box}.screen-container *{color-scheme:dark!important}#game-screen{width:100%!important;height:100%!important;object-fit:contain;background-color:var(--color-ui-dark);zoom:2}#emulator-js-container{width:100%!important;height:100%!important;position:absolute;top:0;left:0;object-fit:contain;background-color:var(--color-ui-dark)}#emulator-js-container .ejs_menu_bar,#emulator-js-container .ejs_context_menu,#emulator-js-container .ejs_virtualGamepad_parent,#emulator-js-container .ejs_virtualGamepad_open{display:none!important}.controls{margin-top:var(--spacing-lg);display:flex;flex-direction:column;align-items:center;gap:50px}.controls .menu-container{display:flex;align-items:center;justify-content:space-between;width:100%}.controls .menu-container .shoulder-btn{width:60px;height:24px;font-size:var(--font-size-xs);border-radius:var(--radius-2xl)}.menu-buttons{display:flex;flex-direction:row;gap:var(--spacing-xl);align-items:center}.controls .play-container{display:flex;flex-direction:row;align-items:center;gap:24px}.d-pad{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:0;width:160px;height:160px;position:relative}#joystick-container{grid-column:1 / span 3;grid-row:1 / span 3;width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative;z-index:1;border-radius:var(--radius-full);background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));box-shadow:inset 2px 2px 4px #0003,-2px -2px 4px #ffffff1a,1px 1px 2px #fff3}#dpad-buttons,#circle-buttons{grid-column:1 / span 3;grid-row:1 / span 3;width:100%;height:100%;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);align-items:center;justify-items:center;position:relative;z-index:2}.controls.n64-mode{gap:10px}.phone.dpad-mode .controls .d-pad:before,.controls.n64-mode .d-pad:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:50px;height:150px;background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));border-radius:var(--radius-md);z-index:0}.phone.dpad-mode .controls .d-pad:after,.controls.n64-mode .d-pad:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:150px;height:50px;background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));border-radius:var(--radius-md);z-index:0}.phone.dpad-mode .controls .d-pad,.controls.n64-mode .d-pad{filter:drop-shadow(2px 2px 4px rgba(0,0,0,.2)) drop-shadow(-2px -2px 4px rgba(255,255,255,.1))}.controls.n64-mode .d-pad{display:flex;flex-direction:column;justify-content:flex-start;gap:5px;background:transparent;box-shadow:none;filter:none;width:auto;height:auto}.controls.n64-mode .d-pad:before,.controls.n64-mode .d-pad:after{display:none}.controls.n64-mode #dpad-buttons{position:relative;grid-column:auto;grid-row:auto;margin:0 auto;filter:drop-shadow(2px 2px 4px rgba(0,0,0,.2)) drop-shadow(-2px -2px 4px rgba(255,255,255,.1));zoom:.85}.controls.n64-mode #dpad-buttons:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:50px;height:150px;background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));border-radius:var(--radius-md);z-index:-1}.controls.n64-mode #dpad-buttons:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:150px;height:50px;background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));border-radius:var(--radius-md);z-index:-1}.controls.n64-mode #joystick-container{position:relative;grid-column:auto;grid-row:auto;width:160px;height:160px;margin:0 auto;border-radius:var(--radius-full);background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));box-shadow:inset 2px 2px 4px #0003,-2px -2px 4px #ffffff1a,1px 1px 2px #fff3}.dpad-btn{width:50px;height:50px;border-radius:var(--radius-md);font-size:var(--font-size-xl);font-weight:700;display:flex;align-items:center;justify-content:center;position:relative;background:rgba(255,255,255,.1);transition:var(--transition-base)}.dpad-btn:hover{background:rgba(255,255,255,.2)}.dpad-btn:active{background:rgba(0,0,0,.2);transform:scale(.95)}.dpad-up:before{content:"";width:3px;height:24px;margin-top:36px;background:currentColor;border-radius:1px}.dpad-down:before{content:"";width:3px;height:24px;margin-bottom:36px;background:currentColor;border-radius:1px}.dpad-left:before{content:"";width:24px;height:3px;margin-left:36px;background:currentColor;border-radius:1px}.dpad-right:before{content:"";width:24px;height:3px;margin-right:36px;background:currentColor;border-radius:1px}.circle-btn{width:50px;height:50px;border-radius:var(--radius-full);font-size:var(--font-size-lg);font-weight:700;display:flex;align-items:center;justify-content:center;position:relative;background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));color:var(--color-text-primary);border:none;cursor:pointer;transition:var(--transition-base);box-shadow:var(--shadow-button-resting)}.circle-btn:hover{background:linear-gradient(105deg,var(--color-primary),var(--color-primary-dark));transform:translateY(-1px);box-shadow:var(--shadow-button-hover)}.circle-btn:active,.circle-btn.active{transform:scale(.95) translateY(.5px);box-shadow:var(--shadow-button-active);animation:button-press .1s ease-in-out}.nipple{border-radius:50%!important;box-shadow:var(--shadow-button-resting)!important}.action-buttons{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:0;align-items:center}.action-buttons-stack{display:flex;flex-direction:column;align-items:center;gap:24px}.action-buttons-secondary{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(1,1fr);gap:10px}.controls .control-btn{width:60px;height:20px;font-size:var(--font-size-xs);background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));color:var(--color-text-primary);border:none;border-radius:var(--radius-xl);cursor:pointer;font-family:var(--font-family-mono);box-shadow:var(--shadow-button-resting);display:flex;align-items:center;justify-content:center;transition:var(--transition-base)}.controls .control-btn:hover{background:linear-gradient(105deg,var(--color-primary),var(--color-primary-dark));transform:translateY(-1px);box-shadow:var(--shadow-button-hover)}.controls .control-btn:active,.controls .control-btn.active{transform:scale(.95) translateY(.5px);box-shadow:var(--shadow-button-active);animation:button-press .1s ease-in-out}body:not(.horizontal) .layout-vertical .play-container .action-buttons-secondary .control-btn:not(.action-btn-no-text){width:auto;padding:0 4px;font-size:8px;writing-mode:horizontal-tb;white-space:nowrap}.play-container .control-btn{width:56px;height:56px;border-radius:var(--radius-full);padding:0;font-family:arial;font-size:22px;margin:-5px}.play-container .action-buttons-secondary .control-btn{width:28px;height:42px;margin:0;font-size:0;border-radius:55px;transform:rotate(210deg)}.play-container .action-buttons-secondary .control-btn:not(.action-btn-no-text){font-size:10px;writing-mode:vertical-rl;position:relative}.play-container .action-buttons-secondary .control-btn .btn-label-viewport{overflow:hidden;height:28px}.play-container .action-buttons-secondary .control-btn:not(.action-btn-no-text) span{display:block;will-change:transform}.play-container .action-buttons-secondary .control-btn.text-scroll span{animation:scroll-btn-text 9s linear infinite}@keyframes scroll-btn-text{0%{transform:translateY(10%)}44%{transform:translateY(-105%)}to{transform:translateY(-105%)}}.play-container .d-pad #dpad-buttons .control-btn{width:80px;height:80px;margin:-15px;box-shadow:none;background:transparent}.play-container .d-pad #circle-buttons .control-btn{rotate:45deg}.play-container .d-pad #circle-buttons #btn-circle-up,.play-container .d-pad #circle-buttons #btn-circle-down{width:68px;height:68px;background:transparent;box-shadow:none}.play-container .d-pad #circle-buttons #btn-circle-up:after,.play-container .d-pad #circle-buttons #btn-circle-down:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:60px;height:60px;border-radius:var(--radius-full);background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));box-shadow:var(--shadow-button-resting)}.play-container .d-pad #circle-buttons #btn-circle-left,.play-container .d-pad #circle-buttons #btn-circle-right{width:80px;height:80px;background:transparent;box-shadow:none}.play-container .d-pad #circle-buttons #btn-circle-left:after,.play-container .d-pad #circle-buttons #btn-circle-right:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:60px;height:60px;border-radius:var(--radius-full);background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));box-shadow:var(--shadow-button-resting)}.rom-list{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--menu-bg-color, var(--color-ui-light));padding:var(--spacing-sm);color:var(--color-text-primary);z-index:var(--z-modal);box-sizing:border-box}.rom-list.show{display:flex!important;flex-direction:column}.rom-list-header{display:flex;align-items:center;margin-bottom:var(--spacing-sm)}.rom-list-header-left{display:flex;align-items:center;gap:var(--spacing-sm);width:84px;flex:0 0 84px}.rom-list-logo{width:20px;height:20px}.rom-list-title{font-size:var(--font-size-lg);line-height:24px}.rom-list-header-right{display:flex;align-items:center;gap:10px;margin-left:var(--spacing-xs);flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.rom-list-header-right::-webkit-scrollbar{display:none}.sync-status{width:12px;height:12px;border-radius:var(--radius-full);margin-left:var(--spacing-xs);display:inline-block;box-shadow:0 0 2px #00000080;flex-shrink:0}.sync-status-idle{background-color:var(--color-text-muted)}.sync-status-syncing{background-color:var(--color-warning);animation:blink 1s infinite}.sync-status-done{background-color:var(--color-success)}.sync-status-error{background-color:var(--color-error)}#rom-list-collections{display:flex;align-items:center;gap:6px}.rom-collection-tab{padding:2px var(--spacing-sm);border-radius:999px;background-color:var(--color-ui-lighter);font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap;opacity:.8;text-transform:uppercase}.rom-collection-tab.active{background-color:var(--color-success);color:var(--color-text-primary);opacity:1}.rom-list ul{list-style:none;padding:0;margin:var(--spacing-sm) 0 0 0;display:flex;flex-direction:column;gap:var(--spacing-sm);flex:1}.rom-list ul.layout-list{display:flex;flex-direction:column;margin:0}.rom-list ul.layout-card{display:grid;grid-template-columns:repeat(var(--rom-card-columns, 3),minmax(0,1fr));grid-template-rows:repeat(var(--rom-card-rows, 2),minmax(0,1fr));grid-auto-rows:minmax(0,1fr);align-content:stretch;align-items:center;margin:0 0 var(--spacing-sm) 0}.rom-list ul.layout-card li{display:flex;align-items:stretch;aspect-ratio:1 / 1.2;padding:4px}.rom-list ul.layout-card .rom-item-content{width:100%;min-height:0}.rom-list ul.layout-card .empty-state{grid-column:1 / -1}.rom-list ul.layout-card.is-empty{display:flex;flex-direction:column;margin:0}.rom-list ul.layout-card.is-empty li.empty-state{aspect-ratio:auto;padding:12px 10px;flex:1;display:flex;align-items:center;justify-content:center;cursor:default}.rom-list ul.layout-card .rom-card-item{flex-direction:column;justify-content:space-between}.rom-list ul.layout-card .rom-card-media{position:relative;width:100%;flex:1;min-height:0;border-radius:var(--radius-sm);background:rgba(0,0,0,.18);overflow:hidden;display:flex;align-items:center;justify-content:center}.rom-list ul.layout-card .rom-card-media.no-cover .console-icon{width:72px;height:72px;opacity:.45}.rom-list ul.layout-card .rom-cover-image{width:100%;height:100%;object-fit:fill;display:block}.rom-list ul.layout-card .rom-card-name{margin-top:6px;font-size:11px;line-height:1.4;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rom-list ul.layout-card .cache-indicator{position:absolute;top:4px;right:4px;width:20px;height:20px;padding:1px;border-radius:999px;background:rgba(0,0,0,.55);z-index:2}.rom-list ul.layout-card .cache-indicator img{width:12px;height:12px}.rom-list ul::-webkit-scrollbar{width:var(--spacing-sm)}.rom-list ul::-webkit-scrollbar-track{background:var(--color-ui-lighter);border-radius:var(--radius-md)}.rom-list ul::-webkit-scrollbar-thumb{background:var(--color-success);border-radius:var(--radius-md)}.rom-list li{padding:6px 10px;background-color:var(--menu-item-bg, var(--color-ui-lighter));color:var(--menu-item-text, var(--color-text-primary));border-radius:var(--menu-border-radius, var(--radius-md));cursor:pointer;transition:var(--transition-base);text-align:center;box-sizing:border-box;box-shadow:var(--menu-shadow, none);position:relative;overflow:hidden}.rom-list li.rom-placeholder,.menu-item.rom-placeholder{opacity:0;pointer-events:none}.rom-list li:hover{background-color:var(--menu-item-bg-hover, var(--color-ui-lightest));transform:translateY(-2px);box-shadow:var(--menu-shadow, var(--shadow-sm))}.rom-list li.selected{background-color:var(--color-success-dim);box-shadow:0 0 0 2px var(--color-success);transform:translateY(-1px)}.rom-item-content{display:flex;align-items:center;justify-content:space-between;min-height:30px;position:relative;z-index:1}.layout-vertical .rom-item-content,.layout-nds .rom-item-content{min-height:28px}body.horizontal .rom-item-content{min-height:26px}body.horizontal .layout-vertical .rom-item-content,body.horizontal .layout-nds .rom-item-content{min-height:30px}.rom-list-bg{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none;mask-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,0) 25%,rgba(0,0,0,.5) 40%,rgba(0,0,0,1) 75%,rgba(0,0,0,1) 100%);-webkit-mask-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,0) 25%,rgba(0,0,0,.5) 40%,rgba(0,0,0,1) 75%,rgba(0,0,0,1) 100%)}.rom-item-left{display:flex;align-items:center;gap:var(--spacing-sm);flex:1;min-width:0}.rom-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-arrow{width:24px;height:24px;flex-shrink:0;opacity:.8;display:flex;align-items:center;justify-content:center}.menu-arrow img{width:16px;height:16px;filter:brightness(0) invert(1)}.cache-indicator{width:24px;height:24px;flex-shrink:0;opacity:.8;transition:var(--transition-base);cursor:pointer;padding:2px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;box-sizing:border-box}.cache-indicator[data-cached=true]{opacity:1;color:var(--color-success)}.cache-indicator[data-cached=false]{opacity:.7;color:var(--color-warning)}.cache-indicator img{width:16px;height:16px;filter:brightness(0) saturate(100%)}.cache-indicator[data-cached=true] img{filter:brightness(0) saturate(100%) invert(58%) sepia(14%) saturate(3166%) hue-rotate(92deg) brightness(96%) contrast(89%)}.cache-indicator[data-cached=false] img{filter:brightness(0) saturate(100%) invert(84%) sepia(84%) saturate(2676%) hue-rotate(3deg) brightness(106%) contrast(101%)}.cache-indicator.loading{color:var(--color-info);font-size:var(--font-size-xs);font-weight:700;text-align:center;line-height:1}.rom-list li.long-pressing{background-color:var(--color-error-light);transform:scale(.98);box-shadow:0 0 10px #ff6b6b80}.rom-list li.long-press-ready{animation:pulse .8s ease-in-out}.rom-item-content:has(.cache-indicator[data-cached="true"]):hover:after{content:"右键或双击删除缓存";position:absolute;bottom:-25px;left:50%;transform:translate(-50%);background:rgba(0,0,0,.8);color:var(--color-text-primary);padding:4px var(--spacing-sm);border-radius:var(--radius-md);font-size:var(--font-size-sm);white-space:nowrap;z-index:var(--z-tooltip);pointer-events:none;opacity:0;animation:fadeInTooltip .3s ease-in-out 1s forwards}.rom-list-footer{margin:0 4px;display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-sm);color:var(--color-text-secondary);min-height:16px}.rom-list-footer-left{flex:1;text-align:left;display:flex;align-items:center;white-space:nowrap;overflow:hidden}.rom-list-footer-right{flex:0;text-align:right;min-width:40px}.rom-list-key{font-weight:700;color:var(--color-success);margin-right:4px}.rom-list-key-text{margin-right:var(--spacing-sm)}.rom-list-footer-secondary{display:inline-flex;align-items:center;min-width:120px;transition:opacity .2s ease;opacity:1}.rom-list-footer-secondary.is-fading{opacity:.15}.rom-list-key-start{background-color:var(--color-warning-light);color:var(--color-text-primary);padding:0 4px;border-radius:2px;font-size:var(--font-size-xs);margin-left:5px;font-weight:700}.rom-input{margin:0;padding:var(--spacing-lg);background-color:var(--color-ui-lighter);border-radius:var(--radius-md);text-align:center}.rom-input label{color:var(--color-text-primary);display:block;margin-bottom:10px;font-size:var(--font-size-lg)}.rom-input input[type=file]{width:100%;max-width:calc(100% - 20px);padding:var(--spacing-sm);background-color:var(--color-ui-light);border:1px solid var(--color-ui-lightest);border-radius:var(--radius-sm);color:var(--color-text-primary);cursor:pointer}.rom-input input[type=file]::-webkit-file-upload-button{background-color:var(--color-ui-lightest);color:var(--color-text-primary);padding:var(--spacing-sm) var(--spacing-lg);border:none;border-radius:var(--radius-sm);cursor:pointer;margin-right:10px;transition:background-color var(--transition-base)}.rom-input input[type=file]::-webkit-file-upload-button:hover{background-color:var(--color-ui-lightest)}.console-icon{width:20px;height:20px;flex-shrink:0;background-color:currentColor;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.console-icon[data-icon=nes]{-webkit-mask-image:url(/icons/nes.svg);mask-image:url(/icons/nes.svg)}.console-icon[data-icon=snes]{-webkit-mask-image:url(/icons/snes.svg);mask-image:url(/icons/snes.svg)}.console-icon[data-icon=gba]{-webkit-mask-image:url(/icons/gba.svg);mask-image:url(/icons/gba.svg)}.console-icon[data-icon=gb]{-webkit-mask-image:url(/icons/gb.svg);mask-image:url(/icons/gb.svg)}.console-icon[data-icon=nds]{-webkit-mask-image:url(/icons/nds.svg);mask-image:url(/icons/nds.svg)}.console-icon[data-icon=arcade]{-webkit-mask-image:url(/icons/arcade.svg);mask-image:url(/icons/arcade.svg)}.rom-context-menu{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(30,30,30,.95);border:1px solid var(--color-border-dark);border-radius:var(--radius-lg);padding:10px;z-index:var(--z-top);min-width:250px;max-width:min(92vw,620px);box-shadow:var(--shadow-lg);display:none}.rom-context-menu-title{padding:var(--spacing-sm) var(--spacing-lg);color:var(--color-success);font-weight:700;border-bottom:1px solid var(--color-border-medium);margin-bottom:5px;text-align:center}.rom-context-menu-item{padding:var(--spacing-sm) var(--spacing-lg);color:var(--color-text-primary);cursor:pointer;border-radius:var(--radius-md);transition:background var(--transition-base);font-size:var(--font-size-lg);text-align:left;display:flex;align-items:center;justify-content:center;gap:12px}.rom-context-menu-item.selected{background:rgb(76 175 80 / 30%);border:2px solid var(--color-success);color:var(--color-text-primary)}.rom-context-menu-item-name{flex:0 0 auto}.rom-context-menu-item-description{flex:1 1 auto;min-width:0;text-align:right;font-size:var(--font-size-sm);opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rom-context-menu-item-description.keycaps{display:flex;justify-content:flex-end;align-items:center;gap:2px;text-align:right}.rom-context-sequence-display{margin:8px 0 14px;padding:14px 16px;border:2px solid var(--color-border-dark);border-radius:var(--radius-md);background:rgba(255,255,255,.04);display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:2px;line-height:1.2}.rom-context-keycap{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;border-radius:8px;background:#607d8b3e;color:var(--color-text-primary);font-size:var(--font-size-sm);font-weight:700;letter-spacing:.5px;box-sizing:border-box}.rom-context-sequence-separator{opacity:.4;font-weight:700;font-size:14px}.rom-context-sequence-empty{opacity:.7;font-size:var(--font-size-sm)}.rom-context-sequence-hint{margin-bottom:12px;font-size:var(--font-size-md);text-align:center;opacity:.9}.rom-context-sequence-grid{display:grid;grid-template-columns:repeat(5,minmax(48px,1fr));gap:10px}.rom-context-sequence-cell{min-height:32px;display:flex;align-items:center;justify-content:center;border:2px solid var(--color-border-dark);border-radius:var(--radius-md);background:rgba(255,255,255,.04)}.rom-context-sequence-cell.selected{background:rgb(76 175 80 / 30%);border-color:var(--color-success)}.rom-context-sequence-cell.empty{visibility:hidden}#rom-list-header-search{display:flex;align-items:center;background-color:var(--color-ui-lighter);border-radius:var(--radius-md);padding:4px 8px;width:100%;flex:1;min-width:0;box-sizing:border-box}#rom-list-header-search .search-icon{font-size:14px;margin-right:6px;opacity:.6}#rom-list-header-search input{background:transparent;border:none;color:var(--color-text-primary);font-size:var(--font-size-md);outline:none;width:100%}.soft-keyboard{display:flex;flex-direction:column;gap:4px;padding:10px;background:var(--menu-bg-color, var(--color-ui-darker));border-radius:var(--menu-border-radius, var(--radius-lg));box-shadow:var(--menu-shadow, none);margin:auto 0 10px}.keyboard-row{display:flex;justify-content:center;gap:4px}.keyboard-key{background:var(--menu-item-bg, var(--color-ui-light));color:var(--menu-item-text, var(--color-text-primary));border-radius:var(--menu-border-radius, var(--radius-sm));padding:6px 0;min-width:24px;text-align:center;font-size:14px;font-weight:700;cursor:pointer;flex:1;max-width:32px;line-height:32px;border:1px solid transparent;box-shadow:var(--menu-shadow, none)}body.horizontal .keyboard-key{line-height:26px}.keyboard-key.selected{background:var(--menu-item-bg-hover, var(--color-success));color:var(--menu-item-text, var(--color-text-primary));border-color:var(--color-success);transform:scale(1.1)}.keyboard-key.key-wide{max-width:64px;flex:2}.options-dialog{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--menu-bg-color, var(--color-ui-light));display:none;flex-direction:column;z-index:20;box-sizing:border-box;padding:var(--spacing-sm)}.options-dialog.show{display:flex}.menu-content{width:100%;height:100%;display:flex;flex-direction:column;color:var(--color-text-primary)}.menu-header{font-size:var(--font-size-lg);padding:var(--spacing-sm) 6px;text-align:center;background:var(--color-ui-medium);border-radius:var(--radius-md);margin-bottom:var(--spacing-sm)}.menu-list{flex:1;display:flex;flex-direction:column;min-height:0}.menu-list ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--spacing-sm);flex:1}.menu-item{padding:6px 10px;background-color:var(--menu-item-bg, var(--color-ui-lighter));color:var(--menu-item-text, var(--color-text-primary));border-radius:var(--menu-border-radius, var(--radius-md));cursor:pointer;transition:var(--transition-base);text-align:center;box-sizing:border-box;box-shadow:var(--menu-shadow, none)}.menu-item:hover{background-color:var(--menu-item-bg-hover, var(--color-ui-lightest));transform:translateY(-2px);box-shadow:var(--menu-shadow, var(--shadow-sm))}.menu-item.selected{background-color:var(--color-success-dim);box-shadow:0 0 0 2px var(--color-success)}.menu-footer{margin-top:var(--spacing-sm);display:flex;justify-content:center;align-items:center;gap:10px;font-size:var(--font-size-sm);color:var(--color-text-secondary);border-top:1px solid var(--color-ui-lighter);padding-top:6px}.menu-check{color:var(--color-primary);margin-left:10px;font-weight:700}.menu-preview-container{position:absolute;right:var(--spacing-lg);top:50%;transform:translateY(-50%);width:240px;background-color:var(--color-ui-medium);border:2px solid var(--color-border-medium);padding:6px;border-radius:var(--radius-md);z-index:100;box-shadow:var(--shadow-md);pointer-events:none}.menu-preview-image{width:100%;height:auto;display:block;border-radius:var(--radius-sm);background-color:var(--color-ui-dark);aspect-ratio:4/3;object-fit:contain}@media (max-width: 600px){.menu-preview-container{width:180px;right:10px;top:auto;bottom:50px;transform:none}}.option-actions{text-align:center;padding:10px;border-top:2px solid var(--color-ui-medium)}.orientation-buttons,.theme-buttons,.control-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.orientation-btn,.theme-btn,.control-btn-option{padding:10px var(--spacing-lg);background:linear-gradient(145deg,var(--color-secondary),var(--color-secondary-dark));color:var(--color-text-primary);border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-md);transition:var(--transition-base);box-shadow:var(--shadow-sm);min-width:60px;width:96px}.orientation-btn:hover,.theme-btn:hover,.control-btn-option:hover{background:linear-gradient(145deg,var(--color-ui-lightest),var(--color-ui-lighter));transform:translateY(-1px)}.orientation-btn.active,.theme-btn.active,.control-btn-option.active{background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));color:var(--color-text-primary);box-shadow:0 0 15px #fffc,0 0 25px #fff9,2px 2px 4px #ffffff4d,-2px -2px 4px #0003;transform:scale(1.05);animation:glow-pulse 2s ease-in-out infinite alternate}.orientation-btn.highlight,.theme-btn.highlight,.control-btn-option.highlight{background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));color:var(--color-text-primary);box-shadow:0 0 15px #fffc,0 0 25px #fff9,2px 2px 4px #ffffff4d,-2px -2px 4px #0003;transform:scale(1.05);border:2px solid var(--color-text-primary)}.state-list{display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--menu-bg-color, var(--color-ui-light));border-radius:var(--radius-lg);padding:var(--spacing-lg);color:var(--color-text-primary);z-index:var(--z-modal);max-height:80vh;overflow-y:auto;width:90%;max-width:600px}.state-list.show{display:block}.state-list h2{margin:0 0 var(--spacing-lg) 0;font-size:var(--font-size-2xl);text-align:center;border-bottom:2px solid var(--color-ui-lighter);padding-bottom:10px}.state-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-lg);max-height:60vh;overflow-y:auto}.state-item{background-color:var(--menu-item-bg, var(--color-ui-lighter));border-radius:var(--menu-border-radius, var(--radius-md));padding:10px;cursor:pointer;transition:var(--transition-base);text-align:center;border:2px solid transparent;box-shadow:var(--menu-shadow, none)}.state-item:hover{background-color:var(--menu-item-bg-hover, var(--color-ui-lightest));transform:translateY(-2px);box-shadow:var(--menu-shadow, var(--shadow-md))}.state-item.empty{border:2px dashed var(--color-ui-lightest);background-color:var(--color-ui-medium);opacity:.7}.state-item.empty:hover{background-color:var(--color-ui-light);opacity:1}.state-item.highlight{background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));border:2px solid var(--color-text-primary);transform:scale(1.02);box-shadow:0 0 10px #ffffff80;color:var(--color-text-primary)}.state-item.highlight .state-time{color:var(--color-text-secondary)}.state-screenshot{width:100%;aspect-ratio:256 / 196;background-color:var(--color-ui-dark);border-radius:var(--radius-sm);margin-bottom:var(--spacing-sm);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);color:var(--color-text-disabled);background-size:contain;background-position:center;background-repeat:no-repeat}.state-info{font-size:var(--font-size-sm)}.state-slot{font-weight:700;margin-bottom:4px}.state-time{color:var(--color-text-muted);font-size:var(--font-size-xs)}.state-actions{text-align:center;border-top:1px solid var(--color-ui-lighter);padding-top:var(--spacing-lg)}.load-state-dialog{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--menu-bg-color, var(--color-ui-light));display:none;flex-direction:column;z-index:20;box-sizing:border-box;padding:var(--spacing-sm)}.load-state-dialog.show{display:flex}.load-state-content{width:100%;height:100%;color:var(--color-text-primary);overflow-y:hidden;display:flex;flex-direction:column}.load-state-content h2{margin:0 0 10px;text-align:center;font-size:var(--font-size-2xl);flex-shrink:0}.state-grid-ingame{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:10px;overflow-y:auto;flex:1;padding:5px}.state-grid-ingame .state-item{margin:0;padding:5px;font-size:var(--font-size-xs)}.state-grid-ingame .state-screenshot{height:auto;margin-bottom:4px}.state-grid-ingame .state-info{font-size:var(--font-size-xs)}.load-state-actions{margin-top:auto;text-align:center;padding-top:5px;border-top:1px solid var(--color-ui-lighter);flex-shrink:0}@media screen and (max-height: 500px) and (orientation: landscape){.state-grid-ingame{grid-template-columns:repeat(3,1fr)}.state-grid-ingame .state-item{min-height:auto}}.confirm-dialog{display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--menu-bg-color, var(--color-ui-light));border-radius:var(--radius-lg);padding:0;color:var(--color-text-primary);z-index:var(--z-popover);min-width:300px;max-width:400px;box-shadow:var(--shadow-lg)}.confirm-dialog.show{display:block}.confirm-content{padding:var(--spacing-lg)}.confirm-content h3{margin:0 0 15px;font-size:var(--font-size-lg);text-align:center;color:var(--color-error-light)}.confirm-content p{margin:0 0 20px;font-size:var(--font-size-md);line-height:1.4;text-align:center;color:var(--color-text-secondary)}.confirm-actions{display:flex;gap:10px;justify-content:center}.confirm-btn{padding:10px var(--spacing-lg);border:none;border-radius:var(--radius-md);font-size:var(--font-size-md);cursor:pointer;transition:var(--transition-base);min-width:80px}.cancel-btn{background-color:var(--color-ui-lightest);color:var(--color-text-primary)}.cancel-btn:hover{background-color:var(--color-ui-lightest)}.confirm-btn-primary{background-color:var(--color-error-light);color:var(--color-text-primary)}.confirm-btn-primary:hover{background-color:var(--color-error-lighter)}.modal-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:var(--z-overlay)}.modal-overlay.show{display:block}.toast-container{position:fixed;top:20px;right:20px;z-index:10}.toast{position:absolute;bottom:0px;left:50%;transform:translate(-50%);width:100%;min-width:200px;max-width:90%;text-align:left;padding:12px 24px;margin-bottom:10px;opacity:0;transition:opacity .3s ease;z-index:1000;background-color:#000000d9;color:#fff;border-radius:8px;font-size:12px;word-break:break-all;white-space:pre-wrap;box-shadow:0 4px 12px #00000080}.toast.show{opacity:.8}.toast.hide{animation:fadeOut .3s forwards}@keyframes fadeOut{to{opacity:0}}.button-group{display:flex;gap:10px;justify-content:center}.button-group>div.button{width:40px;height:40px;font-size:var(--font-size-xs);color:var(--color-text-primary);border:none;border-radius:var(--radius-xl);cursor:pointer;font-family:var(--font-family-mono);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;transition:var(--transition-base)}.button-group>div.button:before{content:"";width:36px;height:16px;border-radius:var(--radius-xl);background:linear-gradient(145deg,var(--color-secondary),var(--color-secondary-dark));box-shadow:var(--shadow-button-resting);margin-bottom:4px}.button-group>div.button:hover:before{transform:translateY(-1px)}.close-btn{padding:10px var(--spacing-lg);background:linear-gradient(145deg,var(--color-secondary),var(--color-secondary-dark));color:var(--color-text-primary);border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-md);transition:var(--transition-base)}.close-btn:hover{background:linear-gradient(145deg,var(--color-secondary-dark),var(--color-secondary))}.close-btn.highlight{background:linear-gradient(145deg,var(--color-primary),var(--color-primary-dark));color:var(--color-text-primary);box-shadow:0 0 15px #fffc,0 0 25px #fff9,2px 2px 4px #ffffff4d,-2px -2px 4px #0003;transform:scale(1.05);border:2px solid var(--color-text-primary)}.u-m-0{margin:0}.u-m-1{margin:var(--spacing-xs)}.u-m-2{margin:var(--spacing-sm)}.u-m-3{margin:var(--spacing-md)}.u-m-4{margin:var(--spacing-lg)}.u-m-5{margin:var(--spacing-xl)}.u-mt-0{margin-top:0}.u-mt-1{margin-top:var(--spacing-xs)}.u-mt-2{margin-top:var(--spacing-sm)}.u-mt-3{margin-top:var(--spacing-md)}.u-mt-4{margin-top:var(--spacing-lg)}.u-mt-5{margin-top:var(--spacing-xl)}.u-mb-0{margin-bottom:0}.u-mb-1{margin-bottom:var(--spacing-xs)}.u-mb-2{margin-bottom:var(--spacing-sm)}.u-mb-3{margin-bottom:var(--spacing-md)}.u-mb-4{margin-bottom:var(--spacing-lg)}.u-mb-5{margin-bottom:var(--spacing-xl)}.u-ml-0{margin-left:0}.u-ml-1{margin-left:var(--spacing-xs)}.u-ml-2{margin-left:var(--spacing-sm)}.u-ml-3{margin-left:var(--spacing-md)}.u-ml-4{margin-left:var(--spacing-lg)}.u-ml-5{margin-left:var(--spacing-xl)}.u-mr-0{margin-right:0}.u-mr-1{margin-right:var(--spacing-xs)}.u-mr-2{margin-right:var(--spacing-sm)}.u-mr-3{margin-right:var(--spacing-md)}.u-mr-4{margin-right:var(--spacing-lg)}.u-mr-5{margin-right:var(--spacing-xl)}.u-p-0{padding:0}.u-p-1{padding:var(--spacing-xs)}.u-p-2{padding:var(--spacing-sm)}.u-p-3{padding:var(--spacing-md)}.u-p-4{padding:var(--spacing-lg)}.u-p-5{padding:var(--spacing-xl)}.u-flex{display:flex}.u-inline-flex{display:inline-flex}.u-flex-row{flex-direction:row}.u-flex-col{flex-direction:column}.u-flex-wrap{flex-wrap:wrap}.u-flex-nowrap{flex-wrap:nowrap}.u-justify-start{justify-content:flex-start}.u-justify-end{justify-content:flex-end}.u-justify-center{justify-content:center}.u-justify-between{justify-content:space-between}.u-justify-around{justify-content:space-around}.u-items-start{align-items:flex-start}.u-items-end{align-items:flex-end}.u-items-center{align-items:center}.u-items-stretch{align-items:stretch}.u-flex-1{flex:1}.u-flex-auto{flex:auto}.u-flex-none{flex:none}.u-hidden{display:none!important}.u-visible{display:block!important}.u-opacity-0{opacity:0}.u-opacity-50{opacity:.5}.u-opacity-100{opacity:1}.u-transition{transition:var(--transition-base)}.u-transition-fast{transition:var(--transition-fast)}.u-transition-slow{transition:var(--transition-slow)}.u-scale-95{transform:scale(.95)}.u-scale-100{transform:scale(1)}.u-scale-105{transform:scale(1.05)}.u-z-base{z-index:var(--z-base)}.u-z-overlay{z-index:var(--z-overlay)}.u-z-modal{z-index:var(--z-modal)}.u-z-popover{z-index:var(--z-popover)}.u-z-tooltip{z-index:var(--z-tooltip)}.u-z-top{z-index:var(--z-top)}.u-shadow-sm{box-shadow:var(--shadow-sm)}.u-shadow-md{box-shadow:var(--shadow-md)}.u-shadow-lg{box-shadow:var(--shadow-lg)}.layout-nds .screen-container{margin-bottom:15px;aspect-ratio:240 / 320;margin-top:-10px}.layout-nds .controls{margin-top:0;gap:5px}body:not(.horizontal) .layout-nds .rom-list ul.layout-card{--rom-card-columns: 3;--rom-card-rows: 3}body:not(.horizontal) .layout-nds .play-container .action-buttons-secondary{gap:15px}body:not(.horizontal) .layout-nds .play-container .action-buttons-secondary .control-btn{width:24px;height:32px}body.horizontal .layout-nds .screen-container{aspect-ratio:320 / 264}.layout-nds-top-only .screen-container{width:100%;margin-bottom:15px}.layout-nds-top-only #emulator-js-container{height:200%!important;top:50px;-webkit-mask-image:linear-gradient(to bottom,#000 0,#000 285px,transparent 285px);mask-image:linear-gradient(to bottom,#000 0,#000 285px,transparent 285px)}.layout-nds-top-only .controls{margin-top:20px;gap:50px}.layout-nds-bottom-only .screen-container{width:100%;margin-bottom:15px}.layout-nds-bottom-only #emulator-js-container{height:200%!important;top:-240px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,transparent 289px,#000 289px);mask-image:linear-gradient(to bottom,transparent 0,transparent 289px,#000 289px)}.layout-nds-bottom-only .controls{margin-top:20px;gap:50px}body.horizontal .layout-nds-top-only .screen-container,body.horizontal .layout-nds-bottom-only .screen-container{aspect-ratio:320 / 240}body.horizontal .layout-nds-top-only #emulator-js-container{height:200%!important;top:0;-webkit-mask-image:none;mask-image:none}body.horizontal .layout-nds-bottom-only #emulator-js-container{height:200%!important;top:-100%;-webkit-mask-image:none;mask-image:none}:root{--menu-bg-color: var(--color-ui-medium);--menu-item-bg: var(--color-ui-lighter);--menu-item-bg-hover: var(--color-ui-lightest);--menu-item-text: var(--color-text-primary);--menu-border-radius: var(--radius-md);--menu-shadow: var(--shadow-sm);--menu-glow: none}.options-dialog,.state-list,.load-state-dialog,.confirm-dialog{background-color:var(--menu-bg-color)}.menu-item,.rom-list li,.state-item{background-color:var(--menu-item-bg);border-radius:var(--menu-border-radius);box-shadow:var(--menu-shadow)}.menu-item:hover,.rom-list li:hover,.state-item:hover{background-color:var(--menu-item-bg-hover)}[data-menu-style=classic]{--menu-bg-color: var(--color-ui-medium);--menu-item-bg: var(--color-ui-lighter);--menu-item-bg-hover: var(--color-ui-lightest);--menu-border-radius: var(--radius-md);--menu-shadow: var(--shadow-sm);--menu-glow: none}[data-menu-style=minimal]{--menu-bg-color: var(--color-ui-light);--menu-item-bg: transparent;--menu-item-bg-hover: var(--color-ui-lighter);--menu-border-radius: 0;--menu-shadow: none;--menu-glow: none}[data-menu-style=minimal] .screen-container,[data-menu-style=minimal] .options-dialog,[data-menu-style=minimal] .state-list,[data-menu-style=minimal] .load-state-dialog,[data-menu-style=minimal] .confirm-dialog,[data-menu-style=minimal] .rom-list{background-color:#1a1a1a}[data-menu-style=minimal] .menu-item,[data-menu-style=minimal] .rom-list li,[data-menu-style=minimal] .state-item{border:1px solid #1f2937;border-radius:0}[data-menu-style=minimal] .menu-item.selected,[data-menu-style=minimal] .rom-list li.selected,[data-menu-style=minimal] .state-item.selected{--tw-border-opacity: 1;border:1px solid #FFFFFF;background-color:transparent;box-shadow:none}[data-menu-style=minimal] .menu-item:hover,[data-menu-style=minimal] .rom-list li:hover,[data-menu-style=minimal] .state-item:hover{background-color:transparent}[data-menu-style=minimal] .rom-collection-tab{border:1px solid #1f2937;background-color:transparent}[data-menu-style=minimal] .rom-collection-tab.active{border:1px solid #FFFFFF}[data-menu-style=tech]{--menu-bg-color: #020b14;--menu-item-bg: rgba(0, 255, 255, .08);--menu-item-bg-hover: rgba(0, 255, 255, .16);--menu-border-radius: 2px;--menu-shadow: 0 0 10px rgba(0, 255, 255, .2);--menu-glow: 0 0 14px rgba(0, 255, 255, .35)}[data-menu-style=tech] .options-dialog,[data-menu-style=tech] .rom-list,[data-menu-style=tech] .state-list,[data-menu-style=tech] .load-state-dialog{background-image:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,255,255,.04) 2px,rgba(0,255,255,.04) 4px)}[data-menu-style=tech] .menu-header,[data-menu-style=tech] .rom-list-title,[data-menu-style=tech] .load-state-content h2{color:#7ffbff;letter-spacing:.08em;text-transform:uppercase;text-shadow:0 0 10px rgba(0,255,255,.6)}[data-menu-style=tech] .rom-collection-tab{border:1px solid rgba(0,255,255,.32);background:rgba(0,255,255,.06);color:#a9fbff;text-shadow:0 0 6px rgba(0,255,255,.35)}[data-menu-style=tech] .rom-collection-tab.active{background:rgba(0,255,255,.2);color:#d5feff;border-color:#7ffbffe6;box-shadow:0 0 12px #00ffff73}[data-menu-style=tech] .sync-status{border:1px solid rgba(0,255,255,.35);box-shadow:0 0 8px #00ffff4d}[data-menu-style=tech] .sync-status-idle{background-color:#00ffff40}[data-menu-style=tech] .sync-status-syncing{background-color:#00f5ff}[data-menu-style=tech] .sync-status-done{background-color:#35ffd6}[data-menu-style=tech] .sync-status-error{background-color:#ff5f7a}[data-menu-style=tech] .menu-item,[data-menu-style=tech] .rom-list li,[data-menu-style=tech] .state-item{border:1px solid rgba(0,255,255,.55);box-shadow:inset 0 0 8px #00ffff14,0 0 10px #00ffff24;letter-spacing:.06em}[data-menu-style=tech] .menu-item:hover,[data-menu-style=tech] .rom-list li:hover,[data-menu-style=tech] .state-item:hover{box-shadow:inset 0 0 10px #00ffff2e,0 0 16px #00ffff4d}[data-menu-style=tech] .menu-item.selected,[data-menu-style=tech] .rom-list li.selected,[data-menu-style=tech] .state-item.highlight{background-color:#00ffff3d;box-shadow:0 0 0 1px #7ffbffe6,0 0 18px #00ffff80;animation:glow-pulse-tech 2s ease-in-out infinite}@keyframes glow-pulse-tech{0%,to{box-shadow:0 0 4px 2px #00ffff80,inset 0 0 5px #00ffff80}50%{box-shadow:0 0 6px 3px #0ffc,inset 0 0 10px #0ff}}[data-menu-style=card]{--menu-bg-color: #191919;--menu-item-bg: #1e1e1e;--menu-item-bg-hover: #252525;--menu-border-radius: 8px;--menu-shadow: rgba(0, 0, 0, .2) 0 4px 18px 0, rgba(0, 0, 0, .15) 0 2px 8px 0;--menu-glow: none}[data-menu-style=card] .options-dialog,[data-menu-style=card] .rom-list,[data-menu-style=card] .state-list,[data-menu-style=card] .load-state-dialog,[data-menu-style=card] .confirm-dialog,[data-menu-style=card] .screen-container{background-color:#191919}[data-menu-style=card] .menu-header{background:#1e1e1e;border:1px solid rgba(255,255,255,.1);border-radius:10px;box-shadow:#0003 0 2px 8px;color:#e8e8e8}[data-menu-style=card] .menu-item,[data-menu-style=card] .rom-list li,[data-menu-style=card] .state-item{border:1px solid rgba(255,255,255,.1);box-shadow:var(--menu-shadow)}[data-menu-style=card] .menu-item:hover,[data-menu-style=card] .rom-list li:hover,[data-menu-style=card] .state-item:hover{border-color:#ffffff29;box-shadow:#00000040 0 8px 22px,#0003 0 3px 10px}[data-menu-style=card] .menu-item.selected,[data-menu-style=card] .rom-list li.selected,[data-menu-style=card] .state-item.selected,[data-menu-style=card] .state-item.highlight{background-color:#4da3f01f;border-color:#4da3f0;box-shadow:0 0 8px 4px #4da3f099,#0000004d 0 8px 22px}[data-menu-style=card] .rom-list-title,[data-menu-style=card] .load-state-content h2{color:#e8e8e8}[data-menu-style=card] .menu-footer,[data-menu-style=card] .rom-list-footer{color:#a8a5a0;border-color:#ffffff1a}[data-menu-style=minimal] .rom-list-footer{color:#d1d5db}[data-menu-style=minimal] .rom-list-key{color:#fff}[data-menu-style=minimal] .rom-list-key-start{background-color:transparent;border:1px solid #ffffff;color:#fff;border-radius:0}[data-menu-style=tech] .rom-list-footer{color:#7ffbff;text-shadow:0 0 8px rgba(0,255,255,.35)}[data-menu-style=tech] .rom-list-key{color:#35ffd6;text-shadow:0 0 8px rgba(53,255,214,.45)}[data-menu-style=tech] .rom-list-key-start{background-color:#00ffff2e;border:1px solid rgba(127,251,255,.9);color:#d5feff;box-shadow:0 0 10px #00ffff59}[data-menu-style=card] .rom-list-key{color:#4da3f0}[data-menu-style=card] .rom-list-key-start{background-color:#4da3f01f;border:1px solid #4da3f0;color:#e8e8e8}[data-menu-style=card] .rom-collection-tab{background-color:#1e1e1e;border:1px solid rgba(255,255,255,.1);color:#a8a5a0}[data-menu-style=card] .rom-collection-tab.active{background-color:#4da3f029;border-color:#4da3f0;color:#e8e8e8}[data-menu-style=minimal] .rom-context-menu{background-color:#1a1a1a;border:1px solid #1f2937;border-radius:0;box-shadow:none}[data-menu-style=minimal] .rom-context-menu-title{border-bottom:1px solid #1f2937}[data-menu-style=minimal] .rom-context-menu-item{border-radius:0}[data-menu-style=minimal] .rom-context-menu-item.selected{border:1px solid #FFFFFF;background-color:transparent;box-shadow:none}[data-menu-style=minimal] .rom-context-sequence-display{border:1px solid #1f2937;border-radius:0;background:transparent;color:inherit}[data-menu-style=minimal] .rom-context-sequence-hint{color:var(--color-text-muted)}[data-menu-style=minimal] .rom-context-sequence-cell{border:1px solid #1f2937;border-radius:0;background:transparent}[data-menu-style=minimal] .rom-context-sequence-cell.selected{border:1px solid #FFFFFF;background:transparent;box-shadow:none}[data-menu-style=minimal] .rom-context-sequence-cell.empty{visibility:hidden}[data-menu-style=tech] .rom-context-menu{background-color:#020b14;border:1px solid rgba(0,255,255,.55);border-radius:2px;box-shadow:inset 0 0 8px #00ffff14,0 0 10px #00ffff24;background-image:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,255,255,.04) 2px,rgba(0,255,255,.04) 4px)}[data-menu-style=tech] .rom-context-menu-title{color:#7ffbff;border-bottom:1px solid rgba(0,255,255,.35);text-shadow:0 0 10px rgba(0,255,255,.6);letter-spacing:.08em;text-transform:uppercase}[data-menu-style=tech] .rom-context-menu-item{color:#a9fbff;text-shadow:0 0 6px rgba(0,255,255,.35);letter-spacing:.06em}[data-menu-style=tech] .rom-context-menu-item.selected{background-color:#00ffff3d;border:1px solid rgba(127,251,255,.9);box-shadow:0 0 0 1px #7ffbffe6,0 0 18px #00ffff80;animation:glow-pulse-tech 2s ease-in-out infinite;color:#d5feff}[data-menu-style=tech] .rom-context-sequence-display{border:1px solid rgba(0,255,255,.35);border-radius:2px;background:rgba(0,255,255,.04);color:#a9fbff;text-shadow:0 0 6px rgba(0,255,255,.35)}[data-menu-style=tech] .rom-context-sequence-hint{color:#a9fbff;text-shadow:0 0 6px rgba(0,255,255,.35)}[data-menu-style=tech] .rom-context-sequence-cell{border:1px solid rgba(0,255,255,.25);border-radius:2px;background:rgba(0,255,255,.04);color:#a9fbff;text-shadow:0 0 6px rgba(0,255,255,.35)}[data-menu-style=tech] .rom-context-sequence-cell.selected{background:rgba(0,255,255,.24);border:1px solid rgba(127,251,255,.9);box-shadow:0 0 0 1px #7ffbffe6,0 0 18px #00ffff80;color:#d5feff}[data-menu-style=card] .rom-context-menu{background-color:#191919;border:1px solid rgba(255,255,255,.1);border-radius:8px;box-shadow:#0003 0 4px 18px,#00000026 0 2px 8px}[data-menu-style=card] .rom-context-menu-title{color:#e8e8e8;border-bottom:1px solid rgba(255,255,255,.1)}[data-menu-style=card] .rom-context-menu-item{color:#e8e8e8}[data-menu-style=card] .rom-context-menu-item.selected{background-color:#4da3f01f;border:1px solid #4da3f0;box-shadow:0 0 0 1px #4da3f099,#0000004d 0 8px 22px;color:#e8e8e8}[data-menu-style=card] .rom-context-sequence-display{border:1px solid rgba(255,255,255,.1);border-radius:8px;background:rgba(255,255,255,.04);color:#e8e8e8}[data-menu-style=card] .rom-context-sequence-hint{color:#a0a0a0}[data-menu-style=card] .rom-context-sequence-cell{border:1px solid rgba(255,255,255,.1);border-radius:8px;background:rgba(255,255,255,.04);color:#e8e8e8}[data-menu-style=card] .rom-context-sequence-cell.selected{background:rgba(77,163,240,.12);border:1px solid #4da3f0;box-shadow:0 0 0 1px #4da3f099;color:#e8e8e8}[data-menu-style=minimal] .soft-keyboard,[data-menu-style=minimal] .keyboard-key{border-radius:0;box-shadow:none}[data-menu-style=minimal] .keyboard-key{border-color:#1f2937}[data-menu-style=minimal] .keyboard-key.selected{background-color:transparent;border-color:#fff}[data-menu-style=tech] .soft-keyboard,[data-menu-style=tech] .keyboard-key{border:1px solid rgba(0,255,255,.55);box-shadow:inset 0 0 8px #00ffff14,0 0 10px #00ffff24}[data-menu-style=tech] .keyboard-key{color:#a9fbff;text-shadow:0 0 6px rgba(0,255,255,.35)}[data-menu-style=tech] .keyboard-key.selected{background-color:#00ffff3d;border-color:#7ffbffe6;box-shadow:0 0 0 1px #7ffbffe6,0 0 18px #00ffff80;color:#d5feff}[data-menu-style=card] .soft-keyboard,[data-menu-style=card] .keyboard-key{border:1px solid rgba(255,255,255,.1);box-shadow:var(--menu-shadow)}[data-menu-style=card] .keyboard-key.selected{background-color:#4da3f01f;border-color:#4da3f0;box-shadow:0 0 0 1px #4da3f099,#0000004d 0 8px 22px;color:#e8e8e8}.menu-style-preview{display:flex;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-ui-dark);border-radius:var(--radius-md)}.menu-style-option{flex:1;padding:var(--spacing-md);text-align:center;border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-base);border:2px solid transparent}.menu-style-option:hover{transform:translateY(-2px)}.menu-style-option.active{border-color:var(--color-primary);box-shadow:0 0 10px var(--color-primary)}.menu-style-card{background:var(--color-ui-light);padding:var(--spacing-md);border-radius:var(--radius-md);margin-bottom:var(--spacing-md)}.menu-style-card--classic{background:#3a3a3a;border-radius:var(--radius-md)}.menu-style-card--modern{background:#2a2a2a;border-radius:var(--radius-lg);border:1px solid #333}.menu-style-card--minimal{background:#4a4a4a;border-radius:0;border-bottom:1px solid #5a5a5a}.menu-style-card--retro{background:#1a1a1a;border:2px solid #0a0a0a;font-family:Courier New,monospace}.menu-style-card--glass{background:rgba(42,42,42,.8);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}
