*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--crt-bg:#070a1c;--ui-bg:#0b0e24;--panel-bg:#11142e;--border:#2c2f63;--accent:#706deb;--accent2:#b362c4;--green:#8fe985;--amber:#e6dd6b;--red:#d76b70;--text:#ccd0ec;--dim:#6e6ea4}html,body{background:var(--crt-bg);height:100%;color:var(--text);font-family:Inter,sans-serif;overflow-x:hidden}body{background:radial-gradient(at 50% 0,#15184a 0%,#070a1c 62%);flex-direction:column;justify-content:flex-start;align-items:center;gap:20px;min-height:100dvh;padding:24px 12px 40px;display:flex}header{justify-content:space-between;align-items:flex-end;width:100%;max-width:1460px;padding-bottom:16px;display:flex}.logo{flex-direction:column;display:flex}.logo img{width:auto;height:48px;display:block}.logo-text{white-space:nowrap;letter-spacing:1px;align-self:flex-start;align-items:flex-end;gap:2px;margin-top:5px;padding:0 0 3px;font-family:PetMe64,Share Tech Mono,monospace;font-size:clamp(.62rem,3vw,1.26rem);line-height:1;display:flex;position:relative}.logo-text .lt-main{position:relative;top:.2em}.logo-text .lt-c64{color:#dff4ff;text-shadow:0 0 2px var(--accent), 0 0 10px #706debb3, 2px 2px 0 #07071a}.logo-text .lt-ready{color:var(--accent);text-shadow:0 0 2px var(--accent), 0 0 12px #706deb99, 2px 2px 0 #07071a;margin-left:calc(-.333em - 3px)}.logo-text .lt-blocks{text-shadow:0 0 8px #706deb66;margin-right:6px;font-family:Share Tech Mono,monospace;font-size:.85em}.logo-text .lt-blocks .b4{color:#9b98ff}.logo-text .lt-blocks .b3{color:var(--accent)}.logo-text .lt-blocks .b2{color:#5a57b8}.logo-text .lt-blocks .b1{color:#43407c}.logo-text:after{content:"";pointer-events:none;z-index:2;background:repeating-linear-gradient(0deg,#0000 0 2px,#00000047 3px,#0000 4px);position:absolute;inset:0}body.crt-off .logo-text:after{display:none}body.crt-tube .logo-text,body.crt-hum .logo-text{filter:brightness(1.08)contrast(1.04)saturate(1.05)blur(.3px)}body.crt-bw .logo-text{filter:grayscale()brightness(1.08)contrast(1.05)blur(.3px)}body.crt-tube .logo-text:after,body.crt-bw .logo-text:after,body.crt-hum .logo-text:after{background:repeating-linear-gradient(0deg,#0000 0 1px,#00000047 2px 3px)}body.crt-arcade .logo-text{filter:brightness(1.06)contrast(1.14)saturate(1.14)}body.crt-arcade .logo-text:after{background:repeating-linear-gradient(0deg,#0000 0 1px,#0000006b 2px 3px)}body.crt-hum .logo-text:before{content:"";pointer-events:none;z-index:3;mix-blend-mode:screen;background:repeating-linear-gradient(#fff0 0 10px,#ffffff1f 16px,#fff0 22px 40px) 0 0/100% 40px;animation:7s linear infinite logo-crt-roll;position:absolute;inset:0}@keyframes logo-crt-roll{0%{background-position:0 0}to{background-position:0 40px}}@media (prefers-reduced-motion:reduce){body.crt-hum .logo-text:before{animation:none}}.logo-text.logo-punch{transform-origin:0;animation:1.4s linear both logo-shake-zoom}@keyframes logo-shake-zoom{0%{opacity:0;transform:scale(1.5)translate(0)rotate(0)}10%{opacity:1;transform:scale(1.2)translate(6px,-4px)rotate(1.4deg)}20%{transform:scale(.9)translate(-6px,4px)rotate(-1.6deg)}31%{transform:scale(1.08)translate(5px,3px)rotate(1.1deg)}43%{transform:scale(.95)translate(-4px,-2px)rotate(-.7deg)}55%{transform:scale(1.035)translate(3px,2px)rotate(.5deg)}67%{transform:scale(.98)translate(-2px,-1px)rotate(-.3deg)}79%{transform:scale(1.014)translate(1px,1px)rotate(.15deg)}89%{transform:scale(.995)translate(-1px)rotate(-.06deg)}to{opacity:1;transform:scale(1)translate(0)rotate(0)}}@media (prefers-reduced-motion:reduce){.logo-text.logo-punch{animation:.62s ease-out both logo-zoom-calm}@keyframes logo-zoom-calm{0%{opacity:0;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}}.logo p{color:var(--dim);margin-top:7px;font-family:Share Tech Mono,monospace;font-size:clamp(.7rem,2.4vw,1.13rem)}.tagline-prompt{color:var(--accent);margin-right:4px}.badge{background:var(--panel-bg);border:1px solid var(--border);color:var(--dim);border-radius:6px;padding:4px 10px;font-family:Share Tech Mono,monospace;font-size:.65rem}.header-right{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.header-links{align-items:center;gap:10px;display:flex}.credits-link{letter-spacing:2px;color:var(--accent);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px;font-family:Share Tech Mono,monospace;font-size:.65rem;text-decoration:none;transition:all .15s}.credits-link:hover{color:#fff;border-color:var(--accent);box-shadow:0 0 12px #706deb73}@media (width>=681px){.credits-link{padding:7px 16px;font-size:.9rem}}.credits-modal .modal-card{border:1px solid var(--accent);background:linear-gradient(#0a0a18 0%,#08081a 100%);max-width:832px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #706deb40,0 0 40px #706deb2e,0 12px 60px #000000d9}.credits-modal .modal-card:before{content:"";pointer-events:none;opacity:.6;z-index:1;background-image:repeating-linear-gradient(#706deb0a 0 1px,#0000 1px 3px);position:absolute;inset:0}.credits-modal .modal-card>*{z-index:2;position:relative}.credits-modal .panel-card-header{justify-content:center;position:relative}.credits-modal #btn-credits-close{position:absolute;top:50%;right:0;transform:translateY(-50%)}.credits-modal .panel-card-header h2{color:var(--accent);letter-spacing:2px;text-shadow:0 0 6px #706deb8c,0 0 18px #706deb59;font-family:Giana,Share Tech Mono,monospace;font-size:1.9rem;animation:4s steps(60,end) infinite credits-flicker}@keyframes credits-flicker{0%,92%,94%,to{opacity:1}93%{opacity:.6}}.credits-body{color:var(--text);scrollbar-width:thin;scrollbar-color:var(--border) transparent;max-height:78vh;padding:18px 24px;font-family:Berkelium64,Share Tech Mono,monospace;font-size:.91rem;line-height:1.6;overflow-y:auto}.credits-body::-webkit-scrollbar{width:6px}.credits-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.credits-body h3{color:var(--accent);letter-spacing:3px;text-transform:uppercase;text-shadow:0 0 6px #706deb59;margin:18px 0 5px;font-family:Share Tech Mono,monospace;font-size:.91rem}.credits-body h3:before{content:"◇ ";color:var(--green)}.credits-body p{color:var(--dim);margin:4px 0 8px}.credits-body .credits-intro,.credits-body .credits-prose{font-size:1.18rem}.credits-body ul{margin:0 0 8px;padding:0;list-style:none}.credits-body li{color:var(--dim);padding-left:14px;position:relative}.credits-body li:before{content:"›";color:var(--accent);position:absolute;left:0}.credits-body ul.credits-flow li{padding-left:0;line-height:1.7}.credits-body ul.credits-flow li:before{content:none}.credits-body strong{color:var(--accent);text-shadow:0 0 4px #706deb59;font-weight:400}.credits-body em{color:var(--green);font-style:italic}.credits-body .nostalgia{color:var(--amber);text-shadow:0 0 10px color-mix(in srgb, var(--amber) 55%, transparent);font-style:italic}.credits-grid{grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:12px;margin:16px 0 14px;display:grid}.credits-sec{background:color-mix(in srgb, var(--accent) 5%, transparent);border:1px solid color-mix(in srgb, var(--accent) 18%, var(--border));border-radius:8px;padding:12px 14px 13px}.credits-sec h3{margin:0 0 8px}.credits-sec ul{margin:0}.credits-body .credits-coda{text-align:center;color:var(--text);border:1px solid color-mix(in srgb, var(--green) 50%, var(--border));background:color-mix(in srgb, var(--green) 8%, transparent);box-shadow:0 0 18px color-mix(in srgb, var(--green) 16%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--green) 14%, transparent);border-radius:8px;flex-direction:column;justify-content:center;padding:14px 16px;display:flex}.credits-body .credits-coda:before{content:"»";color:var(--green);text-shadow:0 0 10px color-mix(in srgb, var(--green) 60%, transparent);margin-bottom:6px;font-size:1.4rem;line-height:1;display:block}.credits-link-inline{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);text-underline-offset:2px;transition:color .15s,text-decoration-color .15s}.credits-link-inline:hover{color:#fff;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.credits-link-inline strong,.credits-link-inline em{color:inherit;text-shadow:none}.credits-footer{border-top:1px dashed var(--border);color:var(--dim);text-align:center;letter-spacing:1px;margin-top:16px;padding-top:13px;font-size:.806rem}.main-wrap{grid-template-columns:1fr 260px;align-items:start;gap:16px;width:100%;max-width:1460px;display:grid}.screen-col{min-width:0}.c64-monitor{border:1px solid var(--border);box-shadow:none;background:#000;border-radius:6px;padding:0;position:relative}@media (width>=900px){body.size-1x .main-wrap{grid-template-columns:1fr 1fr}body.size-15x .main-wrap{grid-template-columns:1.8fr 1fr}body.size-1x .side-panel,body.size-15x .side-panel{column-count:2;column-gap:12px;display:block}body.size-1x .side-panel>.panel-card,body.size-15x .side-panel>.panel-card{break-inside:avoid;margin-bottom:12px}body.size-1x #controlports-card,body.size-15x #controlports-card{break-after:column;-webkit-column-break-after:always}}body.crt-tube .c64-monitor,body.crt-bw .c64-monitor,body.crt-arcade .c64-monitor,body.crt-hum .c64-monitor{background:#0a0a0a;border:24px solid #1a1a1a;border-radius:12px;padding:2px;box-shadow:0 0 20px #000c,inset 0 0 10px #000c}#fps-counter{color:var(--green);text-shadow:1px 1px #000;opacity:.8;pointer-events:none;font-family:Share Tech Mono,monospace;font-size:.7rem;position:absolute;top:10px;right:15px}#build-stamp{color:var(--amber);text-shadow:1px 1px #000;opacity:.85;pointer-events:none;z-index:12;font-family:Share Tech Mono,monospace;font-size:.7rem;position:absolute;top:10px;left:15px}.crt-bezel{aspect-ratio:4/3;background:#000;border-radius:10px;position:relative;overflow:hidden;box-shadow:inset 0 0 40px #00000080}#screen{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;display:block}.pause-demo-canvas{image-rendering:pixelated;image-rendering:crisp-edges}#screen:focus,#screen:focus-visible{outline-offset:-1px;outline:1px solid #444}.crt-bezel:after{content:"";pointer-events:none;z-index:10;background:linear-gradient(#12101000 50%,#00000026 50%) 0 0/100% 4px;position:absolute;inset:0}.crt-shine{pointer-events:none;z-index:11;background:radial-gradient(at 30% 20%,#ffffff0a 0%,#0000 60%);border-radius:10px;position:absolute;inset:0}body.crt-tube #screen,body.crt-tube .pause-demo-canvas,body.crt-hum #screen,body.crt-hum .pause-demo-canvas{image-rendering:auto;filter:brightness(1.08)contrast(1.04)saturate(1.05)blur(.4px)}body.crt-bw #screen,body.crt-bw .pause-demo-canvas{image-rendering:auto;filter:grayscale()brightness(1.08)contrast(1.05)blur(.4px)}body.crt-tube .crt-bezel:before,body.crt-hum .crt-bezel:before{content:"";pointer-events:none;z-index:9;mix-blend-mode:multiply;background:repeating-linear-gradient(90deg,#ff00001a 0 1px,#00ff001a 1px 2px,#0000ff1a 2px 3px);position:absolute;inset:0}body.crt-tube .crt-bezel:after,body.crt-bw .crt-bezel:after,body.crt-hum .crt-bezel:after{z-index:10;background:repeating-linear-gradient(#0000 0 1px,#00000047 2px 3px)}body.crt-tube .crt-shine,body.crt-bw .crt-shine,body.crt-hum .crt-shine{z-index:11;background:radial-gradient(at 30% 20%,#ffffff0d 0%,#0000 55%),radial-gradient(#0000 60%,#00000038 88%,#00000073 100%)}body.crt-arcade #screen,body.crt-arcade .pause-demo-canvas{image-rendering:pixelated;filter:brightness(1.06)contrast(1.14)saturate(1.14)}body.crt-arcade .crt-bezel:before{content:"";pointer-events:none;z-index:9;mix-blend-mode:multiply;background:repeating-linear-gradient(90deg,#ff000014 0 1px,#00ff0014 1px 2px,#0000ff14 2px 3px);position:absolute;inset:0}body.crt-arcade .crt-bezel:after{z-index:10;background:repeating-linear-gradient(#0000 0 1px,#0000006b 2px 3px)}body.crt-arcade .crt-shine{z-index:11;background:radial-gradient(at 30% 20%,#ffffff12 0%,#0000 55%),radial-gradient(#0000 72%,#00000029 92%,#0000004d 100%)}.crt-roll{pointer-events:none;z-index:12;display:none;position:absolute;inset:0}body.crt-hum .crt-roll{mix-blend-mode:screen;background:repeating-linear-gradient(#fff0 0 200px,#ffffff0f 300px,#fff0 400px 600px) 0 0/100% 600px;animation:7s linear infinite crt-roll;display:block}@keyframes crt-roll{0%{background-position:0 0}to{background-position:0 600px}}@media (prefers-reduced-motion:reduce){body.crt-hum .crt-roll{animation:none}}body.crt-hum.paused .crt-roll,body.crt-hum.paused .logo-text:before{animation-play-state:paused}body.crt-off .crt-bezel{box-shadow:none;border-radius:0}body.crt-off .crt-bezel:after,body.crt-off .crt-bezel:before,body.crt-off .crt-shine{display:none}.crt-label{text-align:center;color:var(--dim);letter-spacing:4px;margin-top:8px;font-family:Share Tech Mono,monospace;font-size:.6rem}.drop-hint{color:var(--dim);text-align:center;opacity:.6;margin-top:4px;font-family:Share Tech Mono,monospace;font-size:.93rem}.drop-hint.hint-touch{display:none}@media (hover:none) and (pointer:coarse){.drop-hint.hint-pointer{display:none}.drop-hint.hint-touch{display:block}}.side-panel{flex-direction:column;gap:12px;display:flex}.panel-card{background:var(--panel-bg);border:1px solid var(--border);border-radius:10px;padding:14px}.panel-card h2{text-transform:uppercase;letter-spacing:3px;color:var(--dim);border-bottom:1px solid var(--border);margin-bottom:10px;padding-bottom:6px;font-size:.6rem}.status-h2{justify-content:space-between;align-items:center;gap:10px;display:flex}.status-h2 .badge{text-transform:none;letter-spacing:0;font-weight:400}.panel-card-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:6px;display:flex}.panel-card-header h2{border:none;margin:0;padding:0}.controlports-header #btn-swap-ports{border-radius:4px;max-width:90px;padding:2px 6px;font-size:.5rem}.panel-card-header.header-clickable{cursor:pointer}.panel-card-header.header-clickable:hover h2{color:var(--accent)}.panel-card-header.header-clickable:hover .expand-btn{color:var(--accent);border-color:var(--accent)}.expand-btn{border:1px solid var(--border);color:var(--dim);cursor:pointer;background:0 0;border-radius:3px;padding:2px 8px;font-family:Share Tech Mono,monospace;font-size:.7rem;line-height:1;transition:transform .2s,color .15s,border-color .15s}.expand-btn:hover{color:var(--accent);border-color:var(--accent)}.panel-card.expanded .expand-btn{transform:rotate(180deg)}.panel-body{display:none}.panel-card.expanded .panel-body{display:block}.modal-backdrop{z-index:1000;background:#020008c7;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-backdrop[hidden]{display:none}.modal-card{background:var(--panel-bg);border:1px solid var(--border);border-radius:10px;width:100%;max-width:1066px;max-height:90vh;padding:18px 24px;overflow-y:auto}#keymap-modal .modal-card{zoom:1.3}.keymap-grid{color:var(--text);font-family:Share Tech Mono,monospace;font-size:.85rem}#settings-modal .modal-card{zoom:1.2;max-width:528px}.settings-section{margin-bottom:20px}.settings-section:last-child{margin-bottom:0}.settings-section>h3{text-transform:uppercase;letter-spacing:3px;color:var(--dim);border-bottom:1px solid var(--border);margin-bottom:12px;padding-bottom:6px;font-size:.6rem}#setup-modal .modal-card{zoom:1.3;max-width:560px}.setup-hint{color:var(--dim);margin:4px 0 16px;font-family:Share Tech Mono,monospace;font-size:.72rem;line-height:1.5}.setup-hint strong{color:var(--text)}.setup-roms{margin:0}.rom-find{color:var(--accent);letter-spacing:.3px;cursor:pointer;text-underline-offset:2px;background:0 0;border:0;padding:0;font-family:Share Tech Mono,monospace;font-size:.62rem;text-decoration:underline}.rom-find:hover{color:var(--text)}.setup-actions{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.setup-actions .btn{flex:none;min-width:160px}@media (width<=820px){#setup-modal .setup-roms{grid-template-columns:1fr}}#library-modal .modal-card{zoom:1.3;max-width:560px}#state-modal .modal-card{zoom:1.3;max-width:660px}#prompt-modal .modal-card{zoom:1.3;max-width:440px}#external-browser-modal .modal-card{max-width:460px}.external-browser-steps{border:1px solid var(--border);color:var(--text);background:#4fc3f714;border-radius:8px;margin:12px 0 4px;padding:10px 12px;font-family:Share Tech Mono,monospace;font-size:.74rem;line-height:1.5}.external-browser-steps strong{color:var(--accent);font-weight:700}.library-filter{border:1px solid var(--border);width:160px;max-width:45%;color:var(--text);background:#1a1a30;border-radius:5px;margin-left:auto;margin-right:10px;padding:4px 9px;font-family:Share Tech Mono,monospace;font-size:.72rem}.library-filter:focus{border-color:var(--accent,#6c6cff);outline:none}.library-filter::placeholder{color:var(--dim,#8a8aa8)}.library-hint,.library-empty{color:var(--text-dim,#8a8aa8);margin:4px 0 12px;font-family:Share Tech Mono,monospace;font-size:.72rem;line-height:1.4}.library-empty{text-align:center;padding:24px 8px}.library-import-status{color:var(--text);text-align:center;margin:4px 0 8px;font-family:Share Tech Mono,monospace;font-size:.72rem;line-height:1.4}.library-list{flex-direction:column;gap:6px;max-height:56vh;display:flex;overflow-y:auto}.lib-row{border:1px solid var(--border);cursor:pointer;background:#1a1a30;border-radius:7px;align-items:center;gap:10px;padding:7px 10px;font-family:Share Tech Mono,monospace;transition:all .12s;display:flex}.lib-row:hover{border-color:var(--accent,#6c6cff);background:#22223e}.lib-type{text-align:center;letter-spacing:1px;color:#0a0a18;border-radius:4px;flex:none;width:42px;padding:3px 0;font-size:.6rem;font-weight:700}.lib-type-prg{background:#b362c4}.lib-type-d64{background:#75cec8}.lib-type-crt{background:#cf8a4f}.lib-type-tap{background:#e6dd6b}.lib-name{min-width:0;color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-size:.78rem;overflow:hidden}.lib-meta{color:var(--text-dim,#8a8aa8);white-space:nowrap;flex:none;font-size:.62rem}.lib-del{border:1px solid var(--border);width:24px;height:24px;color:var(--text-dim,#8a8aa8);cursor:pointer;background:0 0;border-radius:5px;flex:none;font-size:.7rem;line-height:1;transition:all .12s}.lib-del:hover{border-color:var(--red);color:var(--red);background:color-mix(in srgb, var(--red) 14%, transparent)}.lib-export:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent)}.library-footer{justify-content:space-between;gap:8px;margin-top:14px;display:flex}.library-footer-left{gap:8px;display:flex}.library-footer .btn{flex:none;max-width:140px}#confirm-modal{z-index:1100}#confirm-modal .modal-card{max-width:380px}.confirm-message{color:var(--text);margin:4px 0 18px;font-family:Share Tech Mono,monospace;font-size:.82rem;line-height:1.5}.confirm-actions{justify-content:flex-end;gap:8px;display:flex}.confirm-actions .btn{flex:none;min-width:100px}.prompt-input{box-sizing:border-box;border:1px solid var(--border);width:100%;color:var(--text);background:#1a1a30;border-radius:5px;margin:4px 0 18px;padding:8px 10px;font-family:Share Tech Mono,monospace;font-size:.85rem}.prompt-input:focus{border-color:var(--accent,#6c6cff);outline:none}.btn-danger{color:var(--red);border-color:color-mix(in srgb, var(--red) 50%, var(--border))}.btn-danger:hover:not(:disabled){background:color-mix(in srgb, var(--red) 22%, #1a1a30);border-color:var(--red);color:var(--red)}#joykeys-modal .modal-card{max-width:430px}.joykeys-hint{color:var(--dim);min-height:2.2em;margin:4px 0 14px;font-family:Share Tech Mono,monospace;font-size:.78rem;line-height:1.5}.joykeys-hint strong{color:var(--accent)}.joykeys-hint .joykeys-dim{color:var(--dim);font-style:italic}.joykeys-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px;display:grid}.joykeys-row{border:1px solid var(--border);color:var(--text);text-align:left;cursor:pointer;background:#1a1a30;border-radius:7px;align-items:center;gap:8px;padding:7px 10px;font-family:Share Tech Mono,monospace;font-size:.8rem;transition:all .15s;display:flex}.joykeys-row:hover:not(:disabled){border-color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, #1a1a30)}.joykeys-row:disabled{cursor:default;opacity:.6}.joykeys-row.capturing{border-color:var(--green);background:color-mix(in srgb, var(--green) 18%, #1a1a30);color:var(--green)}.joykeys-row-glyph{text-align:center;width:1.4em;color:var(--green);flex:none;font-size:.95rem}.joykeys-row.capturing .joykeys-row-glyph{color:var(--green)}.joykeys-row-name{min-width:0;color:var(--dim);letter-spacing:.5px;flex:1}.joykeys-row.capturing .joykeys-row-name{color:var(--green)}.joykeys-row-key{color:var(--accent);flex:none;font-size:.78rem}.joykeys-actions{flex-wrap:wrap}.joykeys-actions .btn{flex:auto;min-width:92px}.keymap-section{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px 20px;margin-bottom:8px;display:grid}.keymap-section--compact{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:3px 13px;font-size:.78rem}.keymap-section--compact .row{border-bottom:none;gap:8px;padding:2px 0}.keymap-grid .row{border-bottom:1px dashed var(--border);flex-wrap:wrap;align-items:center;gap:6px 10px;padding:4px 0;display:flex}.keymap-grid .row strong{color:var(--dim);font-weight:400}.keymap-grid .kbd-dim{opacity:.45}.keymap-grid h3{text-transform:uppercase;letter-spacing:2px;color:var(--accent);border-bottom:1px solid var(--border);margin-top:10px;margin-bottom:8px;padding-bottom:5px;font-size:.72rem}.keymap-hint{color:var(--dim);margin-top:12px;font-family:Share Tech Mono,monospace;font-size:.78rem}.keymap-symbols{flex-wrap:wrap;gap:8px;margin-bottom:6px;display:flex}.keymap-symbols .kbd{padding:2px 8px;font-size:.87rem}.keymap-grid .kbd-tap{cursor:not-allowed;opacity:.4;-webkit-user-select:none;user-select:none;transition:background 80ms,border-color 80ms,opacity .15s}body.powered-on .keymap-grid .kbd-tap{cursor:pointer;opacity:1}body.powered-on .keymap-grid .kbd-tap:hover{border-color:var(--accent);background:#2a2a4a}body.powered-on .keymap-grid .kbd-tap:active{background:var(--accent);color:#1a1a2e}.keymap-grid .kbd-tap .kbd-shifted,body.shift-held .keymap-grid .kbd-tap .kbd-default{display:none}body.shift-held .keymap-grid .kbd-tap .kbd-shifted{justify-content:center;align-items:center;display:inline-flex}.keymap-grid .kbd-petscii{image-rendering:pixelated;vertical-align:middle;width:auto;height:.9em}body.powered-on .keymap-grid .kbd-tap.kbd-latched,body.powered-on .keymap-grid .kbd-tap.kbd-latched:hover,body.powered-on .keymap-grid .kbd-tap.kbd-pressed,body.powered-on .keymap-grid .kbd-tap.kbd-pressed:hover{background:var(--accent);color:#1a1a2e;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.keymap-symbols-note{color:var(--dim);font-family:Share Tech Mono,monospace;font-size:.78rem}.rom-details{border-top:1px solid var(--border);grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:10px;padding-top:8px;display:grid}.rom-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.rom-details .rom-row{margin-bottom:0}.rom-row-fetch{margin-top:8px}.rom-details .rom-row-full{border-top:1px solid var(--border);grid-column:1/-1;margin-top:2px;padding-top:10px}.rom-row span{color:var(--text);font-family:Share Tech Mono,monospace;font-size:.72rem}.rom-row small{color:var(--dim);font-size:.6rem}.rom-row .rom-fn{color:var(--accent);word-break:break-all;font-style:italic}.rom-row .rom-fn:empty{display:none}.rom-file-btn{border:1px solid var(--border);color:var(--accent);cursor:pointer;background:#1a1a30;border-radius:4px;padding:3px 8px;font-family:Share Tech Mono,monospace;font-size:.65rem;transition:background .15s}.rom-file-btn:hover{background:color-mix(in srgb, var(--accent) 22%, #1a1a30)}input[type=file]{display:none}#rom-status{color:var(--text);letter-spacing:.5px;font-family:Share Tech Mono,monospace;font-size:.7rem}.btn-group{flex-wrap:wrap;gap:8px;display:flex}.btn-group-2col{grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.u-mb-8{margin-bottom:8px}.volume-control{align-items:center;gap:10px;margin-bottom:12px;display:flex}.volume-control .btn-icon{flex:none;justify-content:center;align-items:center;width:42px;padding:7px 0;display:flex}.volume-control .btn-icon.is-muted{border-color:var(--red);color:var(--red)}.volume-control .btn-icon .spk{width:22px;height:auto;display:block}.volume-control .btn-icon .spk-mute,.volume-control .btn-icon.is-silent .spk-on{display:none}.volume-control .btn-icon.is-silent .spk-mute{display:block}.volume-value{text-align:right;letter-spacing:1px;min-width:3.6em;color:var(--dim);flex:none;font-family:Share Tech Mono,monospace;font-size:.72rem}.volume-slider{appearance:none;background:var(--border);cursor:pointer;border-radius:999px;outline:none;flex:auto;min-width:0;height:6px;margin:0}.volume-slider.is-muted{opacity:.45}.volume-slider::-webkit-slider-runnable-track{-webkit-appearance:none;background:0 0;border-radius:999px;height:6px}.volume-slider::-webkit-slider-thumb{appearance:none;background:var(--accent);width:16px;height:16px;box-shadow:0 0 6px color-mix(in srgb, var(--accent) 60%, transparent);cursor:pointer;border:2px solid #1a1a30;border-radius:50%;margin-top:-5px;transition:transform .12s,box-shadow .12s}.volume-slider::-webkit-slider-thumb:hover{box-shadow:0 0 9px color-mix(in srgb, var(--accent) 80%, transparent);transform:scale(1.15)}.volume-slider::-moz-range-track{background:var(--border);border-radius:999px;height:6px}.volume-slider::-moz-range-progress{background:var(--accent);border-radius:999px;height:6px}.volume-slider::-moz-range-thumb{background:var(--accent);cursor:pointer;border:2px solid #1a1a30;border-radius:50%;width:16px;height:16px}.volume-slider:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 45%, transparent)}.btn{border:1px solid var(--border);color:var(--text);cursor:pointer;letter-spacing:1px;background:#1a1a30;border-radius:7px;flex:1;padding:8px 4px;font-family:Share Tech Mono,monospace;font-size:.72rem;font-weight:600;transition:all .15s}.btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 22%, #1a1a30)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn-power{color:var(--green);border-color:var(--green)}.btn-power:hover:not(:disabled){background:color-mix(in srgb, var(--green) 22%, #1a1a30)}#btn-power{color:var(--text);border-color:var(--border)}#btn-power:hover:not(:disabled){color:var(--accent);border-color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, #1a1a30)}body.powered-on #btn-power{color:var(--green);border-color:var(--green);box-shadow:0 0 10px color-mix(in srgb, var(--green) 30%, transparent)}body.powered-on #btn-power:hover:not(:disabled){color:var(--green);border-color:var(--green);background:color-mix(in srgb, var(--green) 20%, #1a1a30)}.btn-ico{vertical-align:-.15em;width:1em;height:1em;margin-right:.12em}.btn-vibes{color:#ffdcfa;text-shadow:0 0 6px #b362c48c;letter-spacing:.5px;white-space:nowrap;background:linear-gradient(135deg,#2a1145,#3a1550 55%,#12233f);border-color:#b362c4}.btn-vibes:hover:not(:disabled){color:#fff;background:linear-gradient(135deg,#3a1656,#571f6c 55%,#163356);border-color:#ff6ad5;box-shadow:0 0 12px #ff6ad573}.btn-reset{color:var(--amber);border-color:color-mix(in srgb, var(--amber) 50%, var(--border))}.btn-reset:hover:not(:disabled){background:color-mix(in srgb, var(--amber) 22%, #1a1a30);border-color:var(--amber)}.btn-pause{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 50%, var(--border))}.btn-pause:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 22%, #1a1a30);border-color:var(--accent)}.rec-dot{color:var(--red)}#mobile-kbd{opacity:0;color:#0000;caret-color:#0000;pointer-events:none;background:0 0;border:0;width:1px;height:1px;margin:0;padding:0;font-size:16px;position:absolute;top:0;left:0}.touch-controls{--touch-stick-size:clamp(112px, 30vw, 144px);--touch-knob-size:clamp(48px, 13vw, 58px);z-index:60;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:fixed;inset:0}.touch-controls[hidden],body:not(.touch-input-capable) .touch-controls{display:none!important}.touch-stick{--touch-stick-edge-inset:max(16px, env(safe-area-inset-left), env(safe-area-inset-bottom));left:var(--touch-stick-edge-inset);bottom:var(--touch-stick-edge-inset);width:var(--touch-stick-size);height:var(--touch-stick-size);pointer-events:auto;touch-action:none;background:#11142ea8;border:2px solid #706debe0;border-radius:50%;position:absolute;box-shadow:inset 0 0 0 1px #ccd0ec14,0 5px 18px #00000057}.touch-stick:after{content:"";border:1px solid #706deb2e;border-radius:50%;position:absolute;inset:24%}.touch-stick-tick{width:2px;height:10px;transform-origin:1px calc(var(--touch-stick-size) / 2 - 5px);pointer-events:none;background:#706debc7;border-radius:1px;position:absolute;top:5px;left:calc(50% - 1px)}.touch-stick-tick-0{transform:rotate(0)}.touch-stick-tick-1{transform:rotate(45deg)}.touch-stick-tick-2{transform:rotate(90deg)}.touch-stick-tick-3{transform:rotate(135deg)}.touch-stick-tick-4{transform:rotate(180deg)}.touch-stick-tick-5{transform:rotate(225deg)}.touch-stick-tick-6{transform:rotate(270deg)}.touch-stick-tick-7{transform:rotate(315deg)}.touch-stick-knob{width:var(--touch-knob-size);height:var(--touch-knob-size);will-change:transform;pointer-events:none;background:#5a58c7;border:2px solid #706deb;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 2px #ffffff29,0 4px 10px #00000075}.touch-stick.touch-control-active{border-color:var(--green)}.touch-buttons{right:max(16px, env(safe-area-inset-right));bottom:max(18px, env(safe-area-inset-bottom));pointer-events:none;width:148px;height:128px;position:absolute}.touch-button{letter-spacing:0;pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;background:#11142ec7;border-radius:50%;place-items:center;font-family:Share Tech Mono,monospace;font-size:1.55rem;font-weight:700;line-height:1;display:grid;position:absolute;box-shadow:inset 0 2px #ffffff14,0 5px 16px #00000061}.touch-button-a{color:#ef8a8e;border:2px solid var(--red);width:76px;height:76px;bottom:0;right:0}.touch-button-b{color:#f1e97d;border:2px solid var(--amber);width:68px;height:68px;top:0;left:0}.touch-button.touch-control-active{color:var(--green);border-color:var(--green);background:#192a2de6;transform:translateY(2px);box-shadow:inset 0 3px 8px #00000073}@media (orientation:landscape){.touch-controls{--touch-stick-size:clamp(135.2px, 31.2dvh, 179.4px);--touch-knob-size:clamp(59.8px, 13dvh, 72.8px)}.touch-stick{--touch-stick-edge-inset:max(8px, env(safe-area-inset-left), env(safe-area-inset-bottom))}.touch-buttons{right:max(8px, env(safe-area-inset-right));bottom:max(10px, env(safe-area-inset-bottom));width:192.4px;height:166.4px}.touch-button-a{width:98.8px;height:98.8px}.touch-button-b{width:88.4px;height:88.4px}}.btn-prg,.btn-d64,.btn-d64-new,.btn-tap,#btn-load-state,#btn-library{color:var(--accent2);border-color:color-mix(in srgb, var(--accent2) 50%, var(--border))}.btn-prg:hover:not(:disabled),.btn-d64:hover:not(:disabled),.btn-d64-new:hover:not(:disabled),.btn-tap:hover:not(:disabled),#btn-load-state:hover:not(:disabled),#btn-library:hover:not(:disabled){background:color-mix(in srgb, var(--accent2) 22%, #1a1a30);border-color:var(--accent2)}.btn-settings:hover:not(:disabled){color:var(--accent);border-color:var(--accent);background:color-mix(in srgb, var(--accent) 22%, #1a1a30)}.btn-settings .cog{vertical-align:-.08em;font-size:1.2em;line-height:1}.tape-transport{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.tape-transport .btn{flex:1;min-width:44px;padding:6px 4px;font-size:.68rem}.btn-tap-play{color:var(--green);border-color:color-mix(in srgb, var(--green) 50%, var(--border))}.btn-tap-play:hover:not(:disabled){background:color-mix(in srgb, var(--green) 22%, #1a1a30);border-color:var(--green)}.btn-tap-stop{color:var(--red);border-color:color-mix(in srgb, var(--red) 50%, var(--border))}.btn-tap-stop:hover:not(:disabled){background:color-mix(in srgb, var(--red) 22%, #1a1a30);border-color:var(--red)}.btn-tap-rew{color:var(--text);border-color:var(--border)}.btn-tap-rew:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 22%, #1a1a30);border-color:var(--accent);color:var(--accent)}.tape-dropzone{cursor:default;border:1px solid #2a3a5a;border-radius:5px;padding:6px 8px}.drive-dropzone:not(.loaded),.crt-dropzone:not(.loaded),.tape-dropzone:not(.loaded){display:none}.tape-bar-row{align-items:center;gap:6px;margin-bottom:4px;display:flex}.tape-bar-wrap{background:#1e1e30;border-radius:3px;flex:1;height:6px;overflow:hidden}.tape-bar-fill{background:var(--accent);border-radius:3px;width:0%;height:100%;transition:width .4s linear,background .3s}.tape-bar-fill.at-end{background:var(--amber)}@keyframes motor-pulse{0%,to{opacity:1}50%{opacity:.25}}.tape-motor-dot{background:#333;border-radius:50%;flex-shrink:0;width:7px;height:7px;transition:background .2s}.tape-motor-dot.running{background:#0f0;animation:.7s ease-in-out infinite motor-pulse}.tape-info-row{color:var(--dim);justify-content:space-between;font-family:Share Tech Mono,monospace;font-size:.6rem;display:flex}#tape-label{color:var(--text);text-overflow:ellipsis;white-space:nowrap;max-width:55%;overflow:hidden}#tape-time{color:var(--accent);white-space:nowrap}.datasette-homepage{width:max-content;color:var(--dim);letter-spacing:1px;opacity:.65;margin:-6px 0 0 auto;font-family:Share Tech Mono,monospace;font-size:.56rem;text-decoration:none;transition:color .15s,opacity .15s;display:block}.datasette-homepage:hover{color:var(--accent);opacity:1;text-underline-offset:2px;text-decoration:underline}.drive-transport{grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px;display:grid}.drive-transport>.btn{min-width:0;padding:6px 4px;font-size:.68rem}.drive-cell{align-items:center;gap:6px;min-width:0;display:flex}.drive-cell .btn{flex:1 1 0;min-width:0;padding:6px 4px;font-size:.68rem}.drive-cell-wide{grid-column:span 2}.drive-cell-wide .btn-d64-format{flex-grow:1.7}.drive-cell-wide .btn-d64-export{flex-grow:1}.btn-d64-eject{color:var(--dim);border-color:var(--border)}.btn-d64-eject:hover:not(:disabled){background:color-mix(in srgb, var(--text) 12%, #1a1a30);border-color:var(--text);color:var(--text)}#btn-library-clear,#btn-library-clear:hover:not(:disabled){color:var(--red)}.btn-eject{color:var(--amber);border-color:color-mix(in srgb, var(--amber) 50%, var(--border))}.btn-eject:hover:not(:disabled){background:color-mix(in srgb, var(--amber) 22%, #1a1a30);border-color:var(--amber)}.btn-tde{font-size:.62rem!important}.btn-tde.tde-on{color:var(--text)!important;border-color:color-mix(in srgb, var(--green) 50%, var(--border))!important}.btn-tde.tde-on:hover:not(:disabled){background:color-mix(in srgb, var(--green) 22%, #1a1a30)!important}.drive-led{background:#333;border-radius:50%;flex-shrink:0;width:8px;height:8px;transition:background .1s}.btn-wp{color:var(--dim);border-color:var(--border);flex:none!important;min-width:30px!important}.btn-wp[aria-pressed=false]{color:var(--amber);border-color:color-mix(in srgb, var(--amber) 50%, var(--border))}.btn-wp:hover:not(:disabled){border-color:var(--text)}.btn-wp .lock{width:auto;height:1em;margin:0 auto;display:block}.btn-wp .lock-open,.btn-wp[aria-pressed=false] .lock-closed{display:none}.btn-wp[aria-pressed=false] .lock-open{display:block}.disk-emoji{filter:grayscale()brightness(1.9)}.btn-d64-format{color:var(--red);border-color:color-mix(in srgb, var(--red) 45%, var(--border))}.btn-d64-format:hover:not(:disabled){background:color-mix(in srgb, var(--red) 20%, #1a1a30);border-color:var(--red)}.btn-d64-export{color:var(--green);border-color:color-mix(in srgb, var(--green) 45%, var(--border));letter-spacing:0;font-size:.62rem!important}.btn-d64-export .dl-ico{margin-right:2px}.btn-d64-export:hover:not(:disabled){background:color-mix(in srgb, var(--green) 20%, #1a1a30);border-color:var(--green)}.drive-led.active{background:var(--red)}.power-switch{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;margin-left:12px;margin-right:auto;display:inline-flex}.power-switch input{opacity:0;width:0;height:0;position:absolute}.power-track{border:1px solid var(--border);background:#1a1a30;border-radius:9px;flex:none;width:38px;height:18px;transition:background .15s,border-color .15s;position:relative}.power-thumb{background:var(--dim);border-radius:50%;width:12px;height:12px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.power-switch input:checked+.power-track{background:color-mix(in srgb, var(--green) 22%, #1a1a30);border-color:color-mix(in srgb, var(--green) 50%, var(--border))}.power-switch input:checked+.power-track .power-thumb{background:var(--green);transform:translate(20px)}.power-switch input:focus-visible+.power-track{outline:1px solid var(--accent);outline-offset:2px}#diskdrive9-card .expand-btn{transform:rotate(180deg)}#diskdrive9-card.expanded .expand-btn{transform:rotate(0)}#cartridge-card .btn-group .btn{min-width:44px;padding:6px 4px;font-size:.68rem}#btn-crt-freeze.active{border-color:var(--accent);color:var(--accent);box-shadow:0 0 8px color-mix(in srgb, var(--accent) 55%, transparent)}.drive-dropzone,.crt-dropzone{color:var(--dim);cursor:default;border:1px solid #2a3a5a;border-radius:5px;padding:6px 8px;font-family:Share Tech Mono,monospace;font-size:.6rem}.crt-dropzone #crt-label{color:var(--text)}.crt-dropzone.loaded #crt-empty-hint{display:none}.drive-disk-info{justify-content:space-between;align-items:baseline;margin-bottom:3px;display:flex}.drive-disk-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;max-width:65%;font-weight:600;overflow:hidden}.drive-disk-meta{color:var(--dim);white-space:nowrap}.drive-dir-toggle{cursor:pointer;color:var(--accent);-webkit-user-select:none;user-select:none;padding:1px 0;display:inline-block}.drive-dir-toggle:hover{color:var(--text)}.drive-dir{max-height:160px;margin-top:4px;overflow-y:auto}.drive-dir::-webkit-scrollbar{width:4px}.drive-dir::-webkit-scrollbar-thumb{background:#2a2a4a;border-radius:2px}.d64-entry{height:8px;color:var(--dim);align-items:center;gap:6px;padding:0;font-family:Share Tech Mono,monospace;font-size:.6rem;line-height:8px;display:flex}.d64-entry canvas{display:block}.d64-entry.d64-prg{color:var(--text);cursor:pointer}.d64-entry.d64-prg:hover{color:var(--accent)}.d64-entry.d64-del{color:var(--text)}.d64-entry.d64-free{margin-top:1em}.d64-blocks{text-align:right;flex-shrink:0;min-width:22px}.d64-type{color:var(--dim);flex-shrink:0}.drive-dropzone{position:relative}.drive-dir-zoom{width:22px;height:22px;color:var(--text);border:1px solid var(--border);cursor:pointer;opacity:.72;background:#141428e6;border-radius:5px;justify-content:center;align-items:center;padding:0;font-size:.8rem;line-height:1;transition:opacity .15s,border-color .15s,background .15s;display:flex;position:absolute;bottom:5px;right:5px}.drive-dir-zoom:hover{opacity:1;border-color:var(--accent);background:#1e1e3af5}#dirzoom-modal .modal-card{flex-direction:column;width:fit-content;max-width:min(92vw,960px);display:flex;overflow:hidden}#dirzoom-modal .panel-card-header{flex:none}.dirzoom-disk{border-bottom:1px solid var(--border);flex-wrap:wrap;flex:none;align-items:baseline;gap:14px;margin:2px 0 14px;padding-bottom:12px;display:flex}.dirzoom-disk canvas{image-rendering:pixelated;max-width:100%;height:auto}.dirzoom-diskname,.dirzoom-diskmeta{min-width:0}.dirzoom-list{border:1px solid var(--border);background:#0b0b18;border-radius:6px;flex:auto;min-height:0;padding:16px;line-height:0;overflow:auto}.dirzoom-list canvas{image-rendering:pixelated;max-width:100%;height:auto;display:block}.dirzoom-empty{color:var(--dim);text-align:center;padding:20px 8px;font-family:Share Tech Mono,monospace;font-size:.85rem;line-height:1.4}.status{background:#0e0e1c;border-left:3px solid #0000;border-radius:5px;padding:6px 10px;font-family:Share Tech Mono,monospace;font-size:.65rem}.status-idle{border-color:var(--dim);color:var(--dim)}.status-ready{border-color:var(--amber);color:var(--amber)}.status-running{border-color:var(--green);color:var(--green)}.status-error{border-color:var(--red);color:var(--red)}.kbd{color:var(--accent);background:#1a1a2e;border:1px solid #335;border-radius:3px;padding:0 5px;font-size:.58rem;display:inline-block}#d64-panel{display:none}#d64-name{color:var(--accent);word-break:break-all;margin-bottom:8px;font-family:Share Tech Mono,monospace;font-size:.7rem}#d64-dir{scrollbar-width:thin;scrollbar-color:var(--border) transparent;max-height:200px;font-family:Share Tech Mono,monospace;font-size:.62rem;line-height:1.6;overflow-y:auto}#d64-dir::-webkit-scrollbar{width:4px}#d64-dir::-webkit-scrollbar-track{background:0 0}#d64-dir::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.d64-entry{border-radius:3px;padding:2px 6px;transition:background .12s}.d64-entry[style*="cursor: pointer"]:hover{background:#1a2a40}.d64-blocks{color:var(--dim)}.d64-fname{color:var(--green)}.d64-type{color:var(--dim)}.d64-free{color:var(--amber);margin-top:1em}.cp-row{border-top:1px dashed var(--border);margin-top:8px;padding-top:8px}.cp-row[data-port="1"]{border-top:none;margin-top:0;padding-top:0}.cp-row-head{align-items:center;gap:8px;display:flex}.cp-port-name{color:var(--text);min-width:42px;font-family:Share Tech Mono,monospace;font-size:.65rem}.cp-device-select{border:1px solid var(--border);min-width:0;color:var(--text);letter-spacing:1px;cursor:pointer;appearance:none;background-color:#1a1a30;background-image:linear-gradient(45deg, transparent 50%, var(--accent) 50%), linear-gradient(135deg, var(--accent) 50%, transparent 50%);background-position:calc(100% - 12px),calc(100% - 7px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;border-radius:7px;flex:1;padding:6px 22px 6px 6px;font-family:Share Tech Mono,monospace;font-size:.68rem;font-weight:600;transition:all .15s}.cp-device-select:hover{border-color:var(--accent);color:var(--accent);background-color:#1e2840}.cp-device-select:focus{border-color:var(--accent);outline:none}.cp-gamepad-row{align-items:center;gap:8px;margin-top:6px;display:flex}.cp-gamepad-row[hidden]{display:none}.cp-gamepad-label{color:var(--dim);letter-spacing:1px;text-transform:uppercase;white-space:nowrap;font-family:Share Tech Mono,monospace;font-size:.6rem}.cp-dropdown{flex:1;min-width:0;margin-right:54px;position:relative}.cp-dropdown-trigger{border:1px solid var(--border);width:100%;color:var(--green);letter-spacing:.5px;text-align:left;cursor:pointer;background-color:#16162a;background-image:linear-gradient(45deg, transparent 50%, var(--accent) 50%), linear-gradient(135deg, var(--accent) 50%, transparent 50%);background-position:calc(100% - 12px),calc(100% - 7px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;border-radius:6px;align-items:center;padding:4px 20px 4px 6px;font-family:Share Tech Mono,monospace;font-size:.62rem;font-weight:600;transition:all .15s;display:flex}.cp-dropdown-trigger:hover,.cp-dropdown.open .cp-dropdown-trigger{border-color:var(--accent);color:var(--accent)}.cp-dropdown-value{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.cp-dropdown-list{z-index:60;border:1px solid var(--accent);background-color:#16162a;border-radius:7px;max-height:168px;margin:0;padding:4px;list-style:none;display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 20px #0000008c}.cp-dropdown.open .cp-dropdown-list{display:block}.cp-dropdown-option{letter-spacing:.5px;color:var(--text);cursor:pointer;border-radius:5px;align-items:center;gap:6px;padding:4px 7px;font-family:Share Tech Mono,monospace;font-size:.62rem;display:flex}.cp-dropdown-option:hover,.cp-dropdown-option.active{color:var(--accent);background-color:#4fc3f724}.cp-dropdown-check{text-align:center;width:11px;color:var(--green);flex:none}.cp-dropdown-option-label{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.cp-gamepad-empty{color:var(--dim);letter-spacing:.5px;flex:1;font-family:Share Tech Mono,monospace;font-size:.6rem;font-style:italic}.cp-indicator{width:46px;color:var(--green);letter-spacing:1px;text-align:right;white-space:nowrap;flex:none;font-family:Share Tech Mono,monospace;font-size:.72rem;overflow:hidden}.cp-row-detail{color:var(--dim);margin-top:6px;font-family:Share Tech Mono,monospace;font-size:.6rem;line-height:1.7}.cp-row-detail strong{color:var(--text)}.cp-row-detail:empty{display:none}.cp-row-detail-joykeys{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.cp-row-detail-joykeys .cp-joy-keys{display:contents}.cp-joy-keys .kbd{zoom:1.728;vertical-align:middle;white-space:nowrap}.cp-joy-keys .kbd.cp-joy-dir{box-sizing:border-box;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;min-width:24px;padding-top:2px;padding-bottom:2px}.cp-joy-keys .kbd.cp-joy-dir.cp-joy-dir-active{background:var(--green);border-color:var(--green);color:#06110b}.cp-joy-edit-link{white-space:nowrap;vertical-align:middle;color:var(--accent);cursor:pointer;border-bottom:1px dotted;text-decoration:none}.cp-joy-edit-link:hover{color:var(--text);border-bottom-style:solid}.fs-close-btn{top:max(12px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right));z-index:2000;border:1px solid var(--border);width:36px;height:36px;color:var(--text);cursor:pointer;background:#0009;border-radius:50%;justify-content:center;align-items:center;font-family:Inter,sans-serif;font-size:1.1rem;line-height:1;transition:color .15s,border-color .15s,background .15s;display:none;position:fixed}.fs-close-btn:hover{border-color:var(--accent);color:var(--accent);background:#000000d9}.model-viewer-overlay{z-index:3000;background:#05060a;position:fixed;inset:0;overflow:hidden}.model-viewer-overlay[hidden]{display:none}.model-viewer-overlay.scene-synthwave{background:radial-gradient(120% 75% at 50% 102%,#ff2d9561 0%,#8a2be233 34%,#0000 64%),linear-gradient(#05030f 0%,#0c0a2a 46%,#1a0b3a 76%,#2a0b3f 100%)}.model-viewer-overlay.scene-night{background:radial-gradient(circle at 50% 32%,#0a1030 0%,#050512 55%,#01010a 100%)}.model-viewer-overlay.scene-spotlight{background:radial-gradient(circle at 50% 40%,#1b1b20 0%,#070708 46%,#000 100%)}.model-viewer-overlay.scene-ikplus{background:radial-gradient(120% 70% at 50% 100%,#e8782873 0%,#8e27434d 42%,#12081f00 74%),linear-gradient(#12081f 0%,#2a0e3f 52%,#5a1a4d 100%)}.model-viewer-overlay.scene-arcade{background:radial-gradient(circle at 28% 72%,#ff2d5529 0%,#ff2d5500 42%),radial-gradient(circle at 72% 28%,#2d7bff29 0%,#2d7bff00 42%),#05050a}.model-viewer-overlay.scene-room{background:#04050a}.model-viewer-stage{z-index:0;position:absolute;inset:0}.model-viewer-canvas{display:block;width:100%!important;height:100%!important}.model-viewer-close{z-index:3;color:#ff6fc0;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a06188c;border:1px solid #ff2d9580;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-family:Inter,sans-serif;font-size:1.3rem;line-height:1;transition:color .15s,border-color .15s,background .15s,box-shadow .15s;display:flex;position:absolute;top:18px;right:18px}.model-viewer-close:hover{color:#fff;background:#ff2d9538;border-color:#ff2d95;box-shadow:0 0 16px #ff2d9580}.model-viewer-scene{z-index:3;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a06188c;border:1px solid #05d9e880;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.15rem;line-height:1;transition:border-color .15s,background .15s,box-shadow .15s,transform .15s;display:flex;position:absolute;top:18px;left:18px}.model-viewer-scene:hover{background:#05d9e833;border-color:#05d9e8;box-shadow:0 0 16px #05d9e880}.model-viewer-scene:active{transform:scale(.92)}.model-viewer-fullscreen{z-index:3;color:#7df9ff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a06188c;border:1px solid #05d9e880;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;transition:color .15s,border-color .15s,background .15s,box-shadow .15s,transform .15s;display:flex;position:absolute;top:74px;left:18px}.model-viewer-fullscreen svg{display:block}.model-viewer-fullscreen:hover{color:#fff;background:#05d9e833;border-color:#05d9e8;box-shadow:0 0 16px #05d9e880}.model-viewer-fullscreen:active{transform:scale(.92)}.model-viewer-vr{z-index:3;color:#7df9ff;letter-spacing:1px;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a06188c;border:1px solid #05d9e880;border-radius:22px;align-items:center;gap:6px;height:44px;padding:0 16px;font-family:Share Tech Mono,monospace;font-size:.78rem;line-height:1;transition:border-color .15s,background .15s,box-shadow .15s,transform .15s;display:flex;position:absolute;top:18px;left:72px}.model-viewer-vr[hidden]{display:none}.model-viewer-vr:disabled{opacity:.4;cursor:default;pointer-events:none}.model-viewer-vr:hover{border-color:#05d9e8e6;box-shadow:0 0 12px #05d9e866}.model-viewer-vr:active{transform:scale(.96)}.model-viewer-loading{z-index:2;letter-spacing:3px;color:#05d9e8;text-shadow:0 0 10px #05d9e8b3;pointer-events:none;font-family:Share Tech Mono,monospace;font-size:.9rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.model-viewer-hint{z-index:2;letter-spacing:2px;text-transform:uppercase;color:#ff6fc0bf;text-shadow:0 0 8px #ff2d9566;pointer-events:none;white-space:nowrap;font-family:Share Tech Mono,monospace;font-size:.62rem;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.model-viewer-credit{z-index:3;font-family:Share Tech Mono,monospace;position:absolute;bottom:14px;left:16px}.model-viewer-credit-link{font:inherit;letter-spacing:1px;text-transform:uppercase;color:#05d9e8b3;cursor:pointer;pointer-events:auto;background:0 0;border:none;padding:2px 0;font-size:.62rem}.model-viewer-credit-link:hover{color:#05d9e8;text-shadow:0 0 8px #05d9e880}.model-viewer-credit-popup{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);letter-spacing:.5px;color:#ccd0ecd9;background:#0a0618d1;border:1px solid #05d9e859;border-radius:8px;width:max-content;max-width:300px;padding:9px 12px;font-size:.62rem;line-height:1.55;position:absolute;bottom:26px;left:0;box-shadow:0 6px 22px #00000080}.model-viewer-credit-popup[hidden]{display:none}.model-viewer-credit-popup a{color:#05d9e8;text-decoration:none}.model-viewer-credit-popup a:hover{text-decoration:underline}body.fullscreen-mode{padding:0;overflow:hidden}body.fullscreen-mode>header,body.fullscreen-mode .side-panel,body.fullscreen-mode .crt-label,body.fullscreen-mode .drop-hint,body.fullscreen-mode #fps-counter,body.fullscreen-mode #build-stamp{display:none!important}body.fullscreen-mode .main-wrap{width:100vw;max-width:none;height:100dvh;display:block}body.fullscreen-mode .c64-monitor{width:100vw;height:100dvh;box-shadow:none;z-index:1000;background:linear-gradient(#15184a 0%,#070a1c 100%);border:0;border-radius:0;justify-content:center;align-items:center;padding:0;display:flex;position:fixed;inset:0}body.fullscreen-mode .crt-bezel{box-shadow:none;border-radius:0;width:min(100vw,133.333dvh);height:min(100dvh,75vw)}body.fullscreen-mode .fs-close-btn{display:flex}@media (width<=680px){body{gap:14px;padding:12px 8px 28px}.main-wrap{grid-template-columns:1fr}.side-panel{flex-flow:wrap;align-items:flex-start}.panel-card{flex:220px}.datasette-homepage{text-align:right;flex:0 0 100%;width:100%;margin-top:-4px}#btn-size,.lib-date{display:none}.credits-modal{padding:10px}.credits-modal .modal-card{padding-left:12px;padding-right:12px}.credits-body{padding-left:8px;padding-right:8px}.model-viewer-hint{white-space:normal;text-align:center;max-width:88vw;line-height:1.5;bottom:54px}.model-viewer-credit{bottom:14px}}@media (width<=1200px){#keymap-modal .modal-card{zoom:1}}@media (width<=820px){#library-modal .modal-card,#state-modal .modal-card{zoom:1}#state-modal .lib-date{display:none}}@media (width<=720px){#keymap-modal{padding:10px}#keymap-modal .modal-card{max-height:94dvh;padding:12px 14px}#keymap-modal .keymap-grid{font-size:.95rem}#keymap-modal .keymap-grid h3{font-size:.8rem}#keymap-modal .keymap-grid .kbd-tap{justify-content:center;align-items:center;min-width:34px;min-height:34px;padding:6px 10px;font-size:1rem;line-height:1.2;display:inline-flex}#keymap-modal .keymap-symbols{gap:6px}#keymap-modal .keymap-symbols .kbd{padding:6px 10px;font-size:1rem}#keymap-modal .keymap-section,#keymap-modal .keymap-section--compact{grid-template-columns:1fr}}@media (width<=420px){#keymap-modal{padding:4px}#keymap-modal .modal-card{border-radius:6px;padding:10px}#keymap-modal .keymap-grid .row strong{flex-basis:100%;margin-left:0}}.pwa-toast{z-index:2000;background:var(--panel-bg);border:1px solid var(--accent);max-width:calc(100vw - 24px);color:var(--text);border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-family:Share Tech Mono,monospace;font-size:.8rem;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #00000080}.pwa-toast.pwa-toast-update{border-radius:12px;gap:15px;padding:15px 18px;font-size:1.2rem}.pwa-toast-action{cursor:pointer;border:1px solid var(--accent);color:var(--accent);font-family:inherit;font-size:inherit;background:0 0;border-radius:9px;padding:6px 15px}.pwa-toast-action:hover{background:var(--accent);color:#07071a}.pwa-toast-later{cursor:pointer;border:1px solid var(--dim);color:var(--dim);font-family:inherit;font-size:inherit;background:0 0;border-radius:9px;padding:6px 15px}.pwa-toast-later:hover{color:var(--text);border-color:var(--text)}.pwa-toast-x{cursor:pointer;color:var(--dim);background:0 0;border:0;padding:0 2px;font-size:.9rem;line-height:1}.pwa-toast-x:hover{color:var(--text)}.pwa-install{border-color:var(--accent);flex-direction:column;gap:10px;display:flex;position:relative}.pwa-install-row{align-items:center;gap:10px;display:flex}.pwa-install-icon{border-radius:8px;flex:none;width:40px;height:40px}.pwa-install-text{flex-direction:column;gap:3px;min-width:0;display:flex}.pwa-install-text strong{color:var(--accent);font-family:PetMe64,Share Tech Mono,monospace;font-size:.74rem;line-height:1.3}.pwa-install-text span{color:var(--dim);font-family:Share Tech Mono,monospace;font-size:.7rem}.pwa-install-btn{cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#07071a;border-radius:6px;width:100%;padding:8px;font-family:Share Tech Mono,monospace;font-size:.8rem;font-weight:700}.pwa-install-btn:hover{filter:brightness(1.12)}.pwa-install-x{cursor:pointer;color:var(--dim);background:0 0;border:0;padding:2px;font-size:.85rem;line-height:1;position:absolute;top:8px;right:8px}.pwa-install-x:hover{color:var(--text)}
