/* Global app styles moved verbatim from index.html; cascade order preserved. */
:root{--bg:#0d1117;--panel:#161b22;--panel2:#1f2630;--line:#30363d;--text:#f0f6fc;--muted:#8b949e;--accent:#2ea043;--accent2:#58a6ff;--warn:#d29922;--bad:#f85149;--good:#3fb950;--shadow:0 12px 30px rgba(0,0,0,.28);--gp-string-6:#ff4b43;--gp-string-5:#ffd338;--gp-string-4:#3d8dff;--gp-string-3:#ff9830;--gp-string-2:#35d65a;--gp-string-1:#b85cff;--gp-string-6-rgb:255,75,67;--gp-string-5-rgb:255,211,56;--gp-string-4-rgb:61,141,255;--gp-string-3-rgb:255,152,48;--gp-string-2-rgb:53,214,90;--gp-string-1-rgb:184,92,255}
*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:linear-gradient(180deg,#0b0f14,#0d1117 35%,#0b0f14);color:var(--text);min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:10px;padding:10px 14px;background:var(--panel2);color:var(--text)}button:hover{filter:brightness(1.08)}button.primary{background:var(--accent);color:#fff;font-weight:700}.danger{background:#6e1f1f}.secondary{background:#243447}.ghost{background:transparent;border:1px solid var(--line)}
.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:#0b0f14;border-right:1px solid var(--line);padding:22px 16px;position:sticky;top:0;height:100vh}.brand{font-weight:800;font-size:22px;margin-bottom:24px}.brand span{color:var(--good)}.nav{display:grid;gap:8px}.nav button{text-align:left;background:transparent;border:1px solid transparent;color:var(--muted);padding:12px 14px}.nav button.active{background:var(--panel);border-color:var(--line);color:var(--text)}.main{padding:24px 28px;min-width:0}.topbar{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:20px}.pill{padding:6px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:13px}.grid{display:grid;gap:18px}.grid.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:rgba(22,27,34,.95);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow)}.card h2,.card h3{margin-top:0}.muted{color:var(--muted)}.stat{font-size:30px;font-weight:800}.hidden{display:none!important}.screen{display:none}.screen.active{display:block}.library-list{display:grid;gap:10px}.song-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}.song-meta{display:flex;gap:12px;align-items:center}.song-icon{width:44px;height:44px;border-radius:10px;background:linear-gradient(135deg,#204e2a,#17371e);display:grid;place-items:center;font-size:24px}.row-actions{display:flex;gap:8px;flex-wrap:wrap}.controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.field{display:grid;gap:6px}.field label{font-size:13px;color:var(--muted)}input,select,textarea{width:100%;background:#0d1117;border:1px solid var(--line);color:var(--text);border-radius:10px;padding:10px 12px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent2)}textarea{min-height:110px;resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.trainer-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:#0a0e13;position:relative}.tab-canvas{position:relative;height:320px;min-width:900px;overflow:hidden}.tab-track{position:absolute;left:0;top:0;height:100%;will-change:transform;transform:translate3d(0,0,0);backface-visibility:hidden;contain:layout paint}.string-line{position:absolute;height:1px;background:#69727d;left:0;right:0;transition:background .12s,height .12s,box-shadow .12s}.string-line.active-string{height:2px;background:#f0f6fc;box-shadow:0 0 9px rgba(240,246,252,.38)}.string-label{position:absolute;left:8px;transform:translateY(-50%);z-index:4;background:#0a0e13;padding:0 4px;color:#c9d1d9;font-weight:700}.note-chip{position:absolute;width:34px;height:34px;border-radius:50%;background:#1f6feb;border:2px solid #79c0ff;display:grid;place-items:center;font-weight:800;transform:translate(-50%,-50%);z-index:3;box-shadow:0 0 0 2px rgba(0,0,0,.45);backface-visibility:hidden;transition:background .1s,border-color .1s,box-shadow .1s,filter .1s}.note-chip.chord{width:auto;min-width:46px;border-radius:10px;padding:0 8px;background:var(--chord-chip-bg,#8957e5);border-color:var(--chord-chip-border,#d2a8ff);color:var(--chord-text,#fff)}.note-chip.current{z-index:5;filter:brightness(1.22);box-shadow:0 0 0 4px rgba(255,255,255,.2),0 0 18px rgba(88,166,255,.7)}.note-chip.hit{background:var(--good);border-color:#7ee787}.note-chip.miss{background:var(--bad);border-color:#ff7b72}.note-chip.chord-tone{width:32px;height:32px;background:var(--chord-chip-bg,#8b5cf6);border-color:var(--chord-chip-border,#d8b4fe);color:var(--chord-text,#fff);z-index:4}.note-chip.chord-tone.current{box-shadow:0 0 0 4px color-mix(in srgb,var(--chord-chip-border,#d8b4fe) 35%, transparent),0 0 18px color-mix(in srgb,var(--chord-chip-bg,#8b5cf6) 60%, transparent)}.note-chip.chord-tone.hit{background:var(--chord-chip-bg,#8b5cf6);border-color:#aff5b4;box-shadow:0 0 0 3px rgba(126,231,135,.18)}.note-chip.chord-tone.miss{background:var(--bad);border-color:#ffb3ad}.chord-banner{position:absolute;width:88px;padding:0 12px;display:flex;align-items:center;justify-content:flex-start;background:linear-gradient(180deg,var(--chord-banner1,rgba(126,211,33,.95)),var(--chord-banner2,rgba(92,168,18,.95)));border:2px solid var(--chord-border,rgba(220,255,170,.55));border-radius:18px;clip-path:polygon(0 0,100% 0,82% 50%,100% 100%,0 100%);box-shadow:0 10px 24px rgba(0,0,0,.28),0 0 18px var(--chord-shadow,rgba(126,211,33,.28));z-index:2;pointer-events:none}.chord-banner span{font-size:44px;font-weight:950;line-height:1;color:var(--chord-text,#f5ffe4);text-shadow:0 2px 10px rgba(0,0,0,.28);margin-left:10px}.chord-banner.current{filter:brightness(1.08);box-shadow:0 0 0 4px rgba(255,255,255,.12),0 0 18px rgba(126,211,33,.3)}.chord-banner.hit{border-color:#7ee787;box-shadow:0 0 0 3px rgba(126,231,135,.2),0 0 20px var(--chord-shadow,rgba(126,211,33,.28));filter:brightness(1.08)}.chord-banner.miss{background:linear-gradient(180deg,rgba(248,81,73,.9),rgba(198,58,56,.9));border-color:rgba(255,123,114,.55)}.chord-guide{position:absolute;height:0;border-top:4px dotted var(--chord-guide,rgba(255,255,255,.48));transform:translateY(-50%);z-index:2;pointer-events:none;opacity:.92}.chord-guide.current{border-top-color:rgba(255,255,255,.82)}.chord-guide.hit{border-top-color:rgba(126,231,135,.8)}.chord-guide.miss{border-top-color:rgba(255,123,114,.72)}.beat-line{position:absolute;top:26px;bottom:18px;width:1px;background:#21262d}.beat-num{position:absolute;top:4px;transform:translateX(-50%);font-size:11px;color:#6e7681}.focus-zone{position:absolute;top:0;bottom:0;left:calc(34% - 28px);width:56px;z-index:5;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(255,255,255,.035),transparent)}.playhead{position:absolute;top:0;bottom:0;width:3px;background:#fff;left:34%;z-index:6;box-shadow:0 0 12px rgba(255,255,255,.55)}.countdown-overlay{position:absolute;z-index:30;left:calc(28% - 46px);top:10px;width:92px;height:68px;display:grid;place-items:center;background:rgba(5,8,12,.82);border:1px solid rgba(255,255,255,.16);border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.34);pointer-events:none}.countdown-number{font-size:38px;font-weight:950;line-height:1;color:#fff;text-shadow:0 0 18px rgba(255,255,255,.22);font-variant-numeric:tabular-nums}.countdown-caption{position:absolute;top:47px;left:0;right:0;text-align:center;font-size:9px;font-weight:800;color:#c9d1d9;letter-spacing:.08em;text-transform:uppercase}@media(max-width:760px){.countdown-overlay{left:calc(24% - 42px);width:84px}}.progressbar span{display:block;height:100%;width:100%;background:var(--good);transform:scaleX(0);transform-origin:left center;will-change:transform}.feedback{display:flex;gap:10px;align-items:center}.feedback .light{width:14px;height:14px;border-radius:50%;background:#6e7681}.feedback.good .light{background:var(--good)}.feedback.bad .light{background:var(--bad)}.meter{height:8px;border-radius:999px;background:#21262d;overflow:hidden}.meter>div{height:100%;width:0;background:var(--accent2);transition:width .1s}.kbd{font-family:ui-monospace,monospace;background:#21262d;padding:2px 6px;border-radius:6px;border:1px solid #30363d}.small{font-size:13px}.table{width:100%;border-collapse:collapse}.table th,.table td{border-bottom:1px solid var(--line);padding:9px 8px;text-align:left}.table th{color:var(--muted);font-weight:600}.import-drop{border:2px dashed #3b434d;border-radius:14px;padding:28px;text-align:center}.badge{font-size:12px;padding:4px 8px;border-radius:999px;background:#243447;color:#c9d1d9}.toast{position:fixed;right:18px;bottom:18px;background:#161b22;border:1px solid #30363d;border-radius:12px;padding:12px 16px;box-shadow:var(--shadow);z-index:100;max-width:360px}.chord-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px}.chord-btn{padding:10px;background:#1a2028;border:1px solid var(--line)}.progressbar{height:10px;background:#21262d;border-radius:999px;overflow:hidden}.footer-note{margin-top:22px;color:var(--muted);font-size:12px}
.highway-lane[data-string],.string-line[data-string]{--lane-rgb:139,148,158}.highway-lane[data-string="6"],.string-line[data-string="6"]{--lane-rgb:var(--gp-string-6-rgb)}.highway-lane[data-string="5"],.string-line[data-string="5"]{--lane-rgb:var(--gp-string-5-rgb)}.highway-lane[data-string="4"],.string-line[data-string="4"]{--lane-rgb:var(--gp-string-4-rgb)}.highway-lane[data-string="3"],.string-line[data-string="3"]{--lane-rgb:var(--gp-string-3-rgb)}.highway-lane[data-string="2"],.string-line[data-string="2"]{--lane-rgb:var(--gp-string-2-rgb)}.highway-lane[data-string="1"],.string-line[data-string="1"]{--lane-rgb:var(--gp-string-1-rgb)}
.highway-lane[data-string]{border-top-color:rgba(var(--lane-rgb),.34)!important;border-bottom-color:rgba(var(--lane-rgb),.14)!important;background:linear-gradient(90deg,rgba(var(--lane-rgb),.14),rgba(var(--lane-rgb),.045) 58%,rgba(var(--lane-rgb),.018))!important}.highway-lane.active-string{background:linear-gradient(90deg,rgba(var(--lane-rgb),.25),rgba(var(--lane-rgb),.08) 58%,rgba(var(--lane-rgb),.025))!important;border-color:rgba(var(--lane-rgb),.58)!important;box-shadow:inset 0 0 20px rgba(var(--lane-rgb),.13),0 0 18px rgba(var(--lane-rgb),.10)!important}
.string-line[data-string]{background:rgba(var(--lane-rgb),.72)!important;height:2px}.string-line[data-string].active-string{height:3px;background:rgba(var(--lane-rgb),1)!important;box-shadow:0 0 10px rgba(var(--lane-rgb),.42)!important}
.highway-label[data-string],.string-label[data-string],.classic-tab-label[data-string],.fret-string-label[data-string]{font-weight:900}.highway-label[data-string="6"],.string-label[data-string="6"],.classic-tab-label[data-string="6"],.fret-string-label[data-string="6"]{color:var(--gp-string-6)}.highway-label[data-string="5"],.string-label[data-string="5"],.classic-tab-label[data-string="5"],.fret-string-label[data-string="5"]{color:var(--gp-string-5)}.highway-label[data-string="4"],.string-label[data-string="4"],.classic-tab-label[data-string="4"],.fret-string-label[data-string="4"]{color:var(--gp-string-4)}.highway-label[data-string="3"],.string-label[data-string="3"],.classic-tab-label[data-string="3"],.fret-string-label[data-string="3"]{color:var(--gp-string-3)}.highway-label[data-string="2"],.string-label[data-string="2"],.classic-tab-label[data-string="2"],.fret-string-label[data-string="2"]{color:var(--gp-string-2)}.highway-label[data-string="1"],.string-label[data-string="1"],.classic-tab-label[data-string="1"],.fret-string-label[data-string="1"]{color:var(--gp-string-1)}
.note-chip[data-string="6"]{background:var(--gp-string-6)!important;border-color:#ffc1bc}.note-chip[data-string="5"]{background:var(--gp-string-5)!important;border-color:#fff0a6;color:#241700}.note-chip[data-string="4"]{background:var(--gp-string-4)!important;border-color:#bfdcff}.note-chip[data-string="3"]{background:var(--gp-string-3)!important;border-color:#ffd2ae;color:#231307}.note-chip[data-string="2"]{background:var(--gp-string-2)!important;border-color:#b9ffca;color:#07190d}.note-chip[data-string="1"]{background:var(--gp-string-1)!important;border-color:#efccff}
.fret-cell.string-6 .fret-dot{border-color:rgba(var(--gp-string-6-rgb),.38)}.fret-cell.string-5 .fret-dot{border-color:rgba(var(--gp-string-5-rgb),.42)}.fret-cell.string-4 .fret-dot{border-color:rgba(var(--gp-string-4-rgb),.38)}.fret-cell.string-3 .fret-dot{border-color:rgba(var(--gp-string-3-rgb),.38)}.fret-cell.string-2 .fret-dot{border-color:rgba(var(--gp-string-2-rgb),.38)}.fret-cell.string-1 .fret-dot{border-color:rgba(var(--gp-string-1-rgb),.38)}
.mini-string-row[data-string="6"] .string-no,.mini-string-row[data-string="6"] .string-name{color:var(--gp-string-6)}.mini-string-row[data-string="5"] .string-no,.mini-string-row[data-string="5"] .string-name{color:var(--gp-string-5)}.mini-string-row[data-string="4"] .string-no,.mini-string-row[data-string="4"] .string-name{color:var(--gp-string-4)}.mini-string-row[data-string="3"] .string-no,.mini-string-row[data-string="3"] .string-name{color:var(--gp-string-3)}.mini-string-row[data-string="2"] .string-no,.mini-string-row[data-string="2"] .string-name{color:var(--gp-string-2)}.mini-string-row[data-string="1"] .string-no,.mini-string-row[data-string="1"] .string-name{color:var(--gp-string-1)}
.ga-simon-pad.color-0{--ga-pad:var(--gp-string-1)!important}.ga-simon-pad.color-1{--ga-pad:var(--gp-string-2)!important}.ga-simon-pad.color-2{--ga-pad:var(--gp-string-3)!important}.ga-simon-pad.color-3{--ga-pad:var(--gp-string-4)!important}.ga-simon-pad.color-4{--ga-pad:var(--gp-string-5)!important}.ga-simon-pad.color-5{--ga-pad:var(--gp-string-6)!important}
.tuner-card{text-align:center}.tuner-note{font-size:72px;line-height:1;font-weight:900;letter-spacing:-2px;margin:18px 0 6px}.tuner-freq{font-size:20px;color:var(--muted);font-variant-numeric:tabular-nums}.tuner-scale{position:relative;height:70px;margin:28px 14px 8px;border-top:2px solid #4b5563}.tuner-scale:before,.tuner-scale:after{content:'';position:absolute;top:-7px;width:1px;height:14px;background:#6e7681}.tuner-scale:before{left:25%}.tuner-scale:after{left:75%}.tuner-center{position:absolute;left:50%;top:-10px;width:2px;height:20px;background:var(--good);transform:translateX(-50%)}.tuner-needle{position:absolute;left:50%;top:-16px;width:4px;height:46px;background:#f0f6fc;border-radius:4px;transform:translateX(-50%);transition:left .08s linear,background .08s}.tuner-needle:after{content:'';position:absolute;bottom:-7px;left:50%;transform:translateX(-50%);width:12px;height:12px;border-radius:50%;background:inherit}.tuner-label{position:absolute;top:26px;font-size:11px;color:var(--muted);transform:translateX(-50%)}.tuner-cents{font-size:18px;font-weight:700;min-height:28px}.tuner-status{margin-top:8px;min-height:24px}.string-reference{display:grid;gap:8px;margin-top:12px}.string-reference div{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#11161d}.string-reference strong{font-size:20px}.signal-row{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px}
.pitch-diagnostic{margin-top:8px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#0d1117;color:#8b949e;font-size:12px;font-variant-numeric:tabular-nums;line-height:1.45}.pitch-diagnostic.good{border-color:rgba(63,185,80,.5);color:#7ee787}.pitch-diagnostic.warn{border-color:rgba(210,153,34,.5);color:#e3b341}
 
.speed-quick{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:13px}.speed-quick select{width:auto;min-width:84px;padding:8px 28px 8px 10px;color:var(--text)}.track-panel{margin-top:14px;padding:12px 14px;border:1px solid #35506f;border-radius:12px;background:linear-gradient(90deg,rgba(31,111,235,.12),rgba(13,17,23,.55));display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.track-panel .track-copy{min-width:220px;flex:1}.track-panel .track-select-wrap{display:flex;align-items:center;gap:10px;min-width:min(100%,420px)}.track-panel select{min-width:260px;max-width:100%}.track-count-badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:#1f6feb;color:#fff;font-size:12px;font-weight:800;margin-left:8px}.speed-panel{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:14px;background:rgba(13,17,23,.55)}.speed-panel input[type="range"]{padding:0;margin:12px 0 8px;accent-color:var(--accent2)}.speed-presets{display:flex;gap:7px;flex-wrap:wrap}.speed-presets button{padding:7px 10px;font-size:12px}.speed-presets button.active{background:var(--accent2);border-color:var(--accent2);color:#fff}

/* === Inteligentny trening fragmentów === */
.practice-panel{border:1px solid var(--line);border-radius:12px;padding:13px;margin-bottom:14px;background:rgba(13,17,23,.55)}
.practice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:11px}.practice-grid .field input,.practice-grid .field select{padding:8px 10px}
.practice-switches{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.practice-switches label{display:flex;gap:7px;align-items:center}.practice-switches input{width:auto}
.practice-pass{margin-top:10px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#10161d;color:#c9d1d9;font-size:13px;min-height:38px}
.analysis-bars{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.analysis-bar{padding:7px 10px;border-radius:999px;background:#211c13;border:1px solid #5c4520;color:#e3b341;font-size:13px}.analysis-empty{color:var(--muted);font-size:13px}
.loop-marker{position:absolute;top:42px;bottom:20px;width:2px;z-index:2;background:rgba(210,153,34,.8);pointer-events:none}.loop-marker.end{background:rgba(88,166,255,.8)}.loop-marker span{position:absolute;top:2px;left:5px;font-size:9px;font-weight:800;letter-spacing:.07em;white-space:nowrap;color:#d29922}.loop-marker.end span{color:#58a6ff;left:auto;right:5px;transform:translateX(-100%)}
.waiting-indicator{display:none;position:absolute;z-index:12;right:12px;top:10px;padding:5px 9px;border-radius:999px;background:rgba(45,34,15,.94);border:1px solid #6e5422;color:#f2cc60;font-size:10px;font-weight:900;letter-spacing:.05em;white-space:nowrap;max-width:min(42vw,230px);overflow:hidden;text-overflow:ellipsis;box-shadow:0 6px 16px rgba(0,0,0,.3);pointer-events:none}.waiting-indicator.show{display:block}
@media(max-width:600px){.practice-grid{grid-template-columns:1fr}}
@media(max-width:900px){.app{grid-template-columns:1fr}.sidebar{height:auto;position:static;border-right:0;border-bottom:1px solid var(--line)}.nav{grid-template-columns:repeat(6,1fr);overflow:auto}.nav button{white-space:nowrap;text-align:center}.main{padding:18px}.grid.cols2,.grid.cols3,.form-grid,.form-grid.two{grid-template-columns:1fr 1fr}}@media(max-width:600px){.grid.cols2,.grid.cols3,.form-grid,.form-grid.two{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.song-row{align-items:flex-start;flex-direction:column}}

/* === Note Highway / tryb autostrady nut === */
.trainer-wrap{overflow:hidden;background:#080c11}
.tab-canvas{height:360px;min-width:0;width:100%;overflow:hidden;background:linear-gradient(180deg,#0b1016 0%,#070b10 100%);isolation:isolate}
.highway-lanes{position:absolute;inset:0;z-index:0;pointer-events:none}
.highway-lane{position:absolute;left:0;right:0;height:44px;transform:translateY(-50%);border-top:1px solid rgba(139,148,158,.16);border-bottom:1px solid rgba(139,148,158,.08);background:linear-gradient(90deg,rgba(255,255,255,.025),rgba(255,255,255,.008) 54%,rgba(255,255,255,.02));transition:background .12s,border-color .12s,box-shadow .12s}
.highway-lane.active-string{background:linear-gradient(90deg,rgba(88,166,255,.12),rgba(88,166,255,.035) 58%,rgba(88,166,255,.015));border-color:rgba(121,192,255,.36);box-shadow:inset 0 0 22px rgba(88,166,255,.06)}
.lane-labels{position:absolute;inset:0;z-index:9;pointer-events:none}
.highway-label{position:absolute;left:12px;transform:translateY(-50%);display:flex;align-items:center;gap:7px;min-width:46px;padding:4px 8px;border-radius:9px;background:rgba(8,12,17,.88);border:1px solid rgba(139,148,158,.22);font-weight:850;color:#e6edf3;box-shadow:0 2px 10px rgba(0,0,0,.22)}
.highway-label span{font-size:10px;color:#7d8590;font-weight:700}
.tab-track{z-index:3;height:100%;pointer-events:none}
.string-line,.string-label,.beat-line,.beat-num{display:none!important}
.note-chip{width:38px;height:38px;border-radius:11px;border:2px solid rgba(255,255,255,.64);background:#1f6feb;box-shadow:0 3px 12px rgba(0,0,0,.38);font-size:15px;transition:background .1s,border-color .1s,box-shadow .1s,filter .1s,opacity .1s;will-change:transform;transform:translate(-50%,-50%) translateZ(0)}
.note-chip[data-string="1"]{background:#2f81f7}.note-chip[data-string="2"]{background:#8957e5}.note-chip[data-string="3"]{background:#db6d28}.note-chip[data-string="4"]{background:#bf8700}.note-chip[data-string="5"]{background:#2da44e}.note-chip[data-string="6"]{background:#0969da}
.note-chip.chord{min-width:58px;height:40px;border-radius:12px;background:#8250df;border-color:#d8b4fe;padding:0 10px}
.note-chip.current{z-index:8;filter:brightness(1.2);border-color:#fff;box-shadow:0 0 0 4px rgba(255,255,255,.18),0 0 24px rgba(255,255,255,.3),0 4px 18px rgba(0,0,0,.48)}
.note-chip.hit{background:var(--good)!important;border-color:#aff5b4;opacity:.78}.note-chip.miss{background:var(--bad)!important;border-color:#ffb3ad;opacity:.62}
.note-tail{position:absolute;height:10px;transform:translateY(-50%);border-radius:999px;background:linear-gradient(90deg,rgba(255,255,255,.52),rgba(255,255,255,.13));border:1px solid rgba(255,255,255,.18);z-index:2;pointer-events:none;opacity:.8;box-shadow:0 2px 8px rgba(0,0,0,.24)}
.note-tail.current{background:linear-gradient(90deg,rgba(255,255,255,.9),rgba(255,255,255,.24));box-shadow:0 0 14px rgba(255,255,255,.22)}
.note-tail.hit{background:linear-gradient(90deg,rgba(126,231,135,.85),rgba(63,185,80,.2));border-color:rgba(126,231,135,.48);opacity:.7}.note-tail.chord-tone-tail.hit{background:linear-gradient(90deg,var(--chord-tail-a,rgba(126,211,33,.92)),var(--chord-tail-b,rgba(92,168,18,.18)));border-color:#7ee787;opacity:.95}.note-tail.miss{background:linear-gradient(90deg,rgba(255,123,114,.78),rgba(248,81,73,.18));border-color:rgba(255,123,114,.4);opacity:.48}.note-tail.chord-tone-tail{background:linear-gradient(90deg,var(--chord-tail-a,rgba(126,211,33,.92)),var(--chord-tail-b,rgba(92,168,18,.18)));border-color:color-mix(in srgb,var(--chord-border,rgba(220,255,170,.55)) 75%, transparent);opacity:.9}
.tech-link{position:absolute;height:2px;z-index:6;pointer-events:none;transform:translateY(-50%);border-radius:999px;opacity:.95}
.tech-link:after{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);min-width:21px;height:21px;border-radius:999px;display:grid;place-items:center;padding:0 4px;background:#0d1117;border:1px solid currentColor;font-size:10px;font-weight:950;line-height:1;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.tech-link.hammer{background:#7ee787;color:#7ee787}.tech-link.hammer:after{content:'H'}
.tech-link.pull{background:#f2cc60;color:#f2cc60}.tech-link.pull:after{content:'P'}
.tech-link.slide-up,.tech-link.slide-down{background:#79c0ff;color:#79c0ff}
.tech-link.slide-up:after{content:'↗'}.tech-link.slide-down:after{content:'↘'}
.tech-link.current{height:3px;filter:brightness(1.35);box-shadow:0 0 12px currentColor}
.tech-link.hit{opacity:.55}.tech-link.miss{opacity:.32}
.tech-legend{position:absolute;right:12px;bottom:7px;z-index:11;display:flex;gap:8px;align-items:center;color:#6e7681;font-size:10px;pointer-events:none}.tech-legend span{display:inline-flex;align-items:center;gap:3px}.tech-legend b{font-size:11px;color:#c9d1d9}
.bar-marker{position:absolute;top:38px;bottom:20px;width:1px;background:rgba(139,148,158,.12);z-index:1}
.bar-label{position:absolute;top:10px;transform:translateX(-50%);font-size:11px;color:#6e7681;font-variant-numeric:tabular-nums;white-space:nowrap}
.playhead{top:34px;bottom:18px;left:28%;width:4px;border-radius:4px;background:#f0f6fc;z-index:12;box-shadow:0 0 0 1px rgba(255,255,255,.22),0 0 18px rgba(255,255,255,.42)}
.playhead:before{content:'GRAJ';position:absolute;top:-27px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:900;letter-spacing:.11em;color:#f0f6fc;background:#21262d;border:1px solid #484f58;border-radius:999px;padding:4px 7px;white-space:nowrap}
.playhead:after{content:'';position:absolute;top:-6px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:7px solid #f0f6fc}
.focus-zone{top:34px;bottom:18px;left:calc(28% - 34px);width:68px;z-index:10;background:linear-gradient(90deg,transparent,rgba(255,255,255,.045),transparent)}
.past-zone{position:absolute;left:0;top:34px;bottom:18px;width:calc(28% - 42px);z-index:7;pointer-events:none;background:linear-gradient(90deg,rgba(5,8,12,.63),rgba(5,8,12,.28) 72%,transparent)}
.highway-help{position:absolute;right:12px;top:8px;z-index:11;color:#6e7681;font-size:11px;pointer-events:none}
@media(max-width:700px){.tab-canvas{height:330px}.highway-label{left:7px;padding:3px 6px;min-width:39px}.playhead{left:24%}.focus-zone{left:calc(24% - 30px);width:60px}.past-zone{width:calc(24% - 42px)}.highway-help{display:none}}


/* === Upgrade 1–5: Smart Practice, TAB, backing track, timing, chord coach === */
.view-quick{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:13px}.view-quick select{width:auto;min-width:155px;padding:8px 28px 8px 10px;color:var(--text)}
.classic-tab-card{margin-top:16px;padding:0;overflow:hidden}.classic-tab-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);background:#0d1218}.classic-tab-wrap{overflow:hidden;background:#f6f1e7;color:#201b16}.classic-tab-canvas{position:relative;height:250px;width:100%;min-width:0;overflow:hidden}.classic-tab-track{position:absolute;left:0;top:0;height:100%;will-change:transform;transform:translate3d(0,0,0);contain:layout paint}.classic-tab-line{position:absolute;height:1px;background:#5c554d;left:0;right:0;opacity:.8}.classic-tab-label{position:absolute;left:10px;transform:translateY(-50%);z-index:8;background:#f6f1e7;color:#29231e;font:800 14px ui-monospace,SFMono-Regular,Consolas,monospace;padding:0 5px}.classic-tab-note{position:absolute;transform:translate(-50%,-50%);z-index:4;min-width:22px;height:22px;display:grid;place-items:center;border-radius:4px;background:#f6f1e7;color:#111;font:800 14px ui-monospace,SFMono-Regular,Consolas,monospace;padding:0 3px}.classic-tab-note.current{background:#dbeafe;box-shadow:0 0 0 2px #2563eb}.classic-tab-note.hit,.classic-tab-note.timing-perfect{background:#bbf7d0}.classic-tab-note.timing-early{background:#bfdbfe}.classic-tab-note.timing-late{background:#fed7aa}.classic-tab-note.miss{background:#fecaca}.classic-tab-bar{position:absolute;top:26px;bottom:20px;width:1px;background:#777065;opacity:.65}.classic-tab-bar-label{position:absolute;top:5px;transform:translateX(-50%);font:11px ui-monospace,SFMono-Regular,Consolas,monospace;color:#6b6259}.classic-tab-playhead{position:absolute;top:22px;bottom:18px;left:28%;width:2px;background:#111;z-index:9;box-shadow:0 0 0 1px rgba(255,255,255,.5)}.classic-tab-chord{position:absolute;top:23px;transform:translateX(-50%);font:800 12px ui-monospace,SFMono-Regular,Consolas,monospace;color:#6d28d9;z-index:5}
.note-chip.hit.timing-early{background:#2f81f7!important;border-color:#a5d6ff}.note-chip.hit.timing-late{background:#db6d28!important;border-color:#ffd8a8}.note-chip.hit.timing-perfect{background:var(--good)!important;border-color:#aff5b4}.note-tail.hit.timing-early{background:linear-gradient(90deg,rgba(121,192,255,.9),rgba(47,129,247,.2))}.note-tail.hit.timing-late{background:linear-gradient(90deg,rgba(255,166,87,.9),rgba(219,109,40,.2))}.note-tail.hit.timing-perfect{background:linear-gradient(90deg,rgba(126,231,135,.85),rgba(63,185,80,.2))}
.timing-grade{margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#10161d;font-weight:800;min-height:44px}.timing-grade.early{border-color:#2f81f7;color:#79c0ff}.timing-grade.late{border-color:#db6d28;color:#ffa657}.timing-grade.perfect{border-color:#2da44e;color:#7ee787}.timing-grade.bad{border-color:#f85149;color:#ff7b72}
.smart-coach{margin-top:12px;padding:12px;border-radius:12px;border:1px solid #35506f;background:linear-gradient(90deg,rgba(31,111,235,.10),rgba(13,17,23,.45))}.smart-coach strong{display:block;margin-bottom:4px}.smart-coach .smart-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}.smart-active{border-color:#2ea043;background:linear-gradient(90deg,rgba(46,160,67,.12),rgba(13,17,23,.45))}
.backing-card,.chord-coach-card{margin-top:16px}.backing-grid{display:grid;grid-template-columns:1.4fr .7fr .7fr;gap:12px;align-items:end}.backing-file-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.backing-name{font-size:13px;color:var(--muted);overflow-wrap:anywhere}.backing-status{margin-top:8px;font-size:12px;color:var(--muted)}.backing-card input[type=range]{padding:0;accent-color:var(--accent2)}
.chord-coach-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.chord-box{border:1px solid var(--line);border-radius:12px;padding:12px;background:#10161d;min-width:0}.chord-box-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.chord-name{font-size:24px;font-weight:900}.chord-diagram{min-height:180px;display:grid;place-items:center}.chord-diagram svg{max-width:210px;width:100%;height:auto}.chord-empty{color:var(--muted);font-size:13px;text-align:center;padding:44px 8px}.coach-note{font-size:12px;color:var(--muted);margin-top:6px}
@media(max-width:800px){.backing-grid,.chord-coach-grid{grid-template-columns:1fr}.classic-tab-playhead{left:24%}}


/* === Upgrade 6–10: Dynamic Difficulty, Skill Profile, Memory, Daily Training, Mini-games === */
.learning-modes{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.learning-mode{border:1px solid var(--line);border-radius:12px;padding:12px;background:#10161d}
.learning-mode-head{display:flex;justify-content:space-between;gap:10px;align-items:center}
.learning-mode input[type=range]{padding:0;margin:10px 0 4px;accent-color:var(--accent2)}
.learning-mode .mode-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.learning-mode .mode-row label{display:flex;gap:7px;align-items:center}
.memory-hidden{opacity:0!important;pointer-events:none}
.memory-reveal{opacity:1!important;filter:brightness(1.15)}
.difficulty-skipped{display:none!important}
.skill-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.skill-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:#10161d}
.skill-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.skill-score{font-weight:900;font-size:20px}.skill-meter{height:9px;background:#21262d;border-radius:999px;overflow:hidden;margin-top:8px}
.skill-meter>span{display:block;height:100%;background:linear-gradient(90deg,#2f81f7,#3fb950);border-radius:inherit}
.daily-plan{display:grid;gap:10px}.daily-step{display:grid;grid-template-columns:70px 1fr auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:12px;background:#10161d}
.daily-minutes{font-size:22px;font-weight:900;text-align:center}.daily-step h4{margin:0 0 4px}.daily-step p{margin:0}
.mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mini-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:#10161d}.mini-card h4{margin:0 0 6px}
.profile-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}.profile-summary>div{border:1px solid var(--line);border-radius:12px;padding:12px;background:#10161d}
.mode-badge{display:inline-flex;padding:4px 8px;border-radius:999px;background:#243447;color:#c9d1d9;font-size:12px;font-weight:800}
@media(max-width:850px){.learning-modes,.skill-grid,.mini-grid,.profile-summary{grid-template-columns:1fr}.daily-step{grid-template-columns:58px 1fr}.daily-step button{grid-column:1/-1}}


.tuning-alert{margin-top:14px;border:1px solid #6e5422;background:#211a0c;border-radius:14px;padding:14px;display:grid;gap:10px}
.tuning-alert.ok{border-color:#2ea043;background:#0d1d12}
.tuning-alert .tuning-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tuning-seq{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:800;letter-spacing:.04em}
.tuning-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:end}
.tuning-actions .field{min-width:210px}
@media(max-width:760px){.tuning-alert .tuning-grid{grid-template-columns:1fr}.tuning-actions{display:grid;grid-template-columns:1fr}}

/* Audio setup & calibration */
.audio-status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.audio-status-grid>div{border:1px solid var(--line);border-radius:12px;padding:12px;background:#10161d}.audio-value{font-size:18px;font-weight:800;margin-top:3px;word-break:break-word}.audio-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.audio-profile{border:1px solid var(--line);border-radius:14px;padding:14px;background:#10161d;text-align:left}.audio-profile.active{border-color:var(--accent2);box-shadow:0 0 0 2px rgba(88,166,255,.16)}.audio-profile strong{display:block;margin-bottom:4px}.wizard-shell{border:1px solid var(--line);border-radius:14px;padding:16px;background:#0f151c}.wizard-progress{height:10px;border-radius:999px;background:#21262d;overflow:hidden;margin:12px 0}.wizard-progress>div{height:100%;width:0;background:var(--accent2);transition:width .18s}.wizard-target{display:grid;place-items:center;min-height:104px;border:1px solid var(--line);border-radius:12px;background:#0a0e13;margin:12px 0}.wizard-target .big{font-size:46px;font-weight:950}.wizard-target .sub{color:var(--muted);font-size:13px}.device-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:end}.audio-diagnostics{display:grid;gap:8px}.audio-diag-row{display:grid;grid-template-columns:minmax(150px,.8fr) 1.2fr;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.audio-diag-row:last-child{border-bottom:0}.latency-box{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}.latency-readout{min-width:78px;text-align:center;font-size:20px;font-weight:900}.signal-live{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.cal-good{color:var(--good)}.cal-warn{color:var(--warn)}.cal-bad{color:var(--bad)}
@media(max-width:900px){.audio-status-grid,.audio-profiles{grid-template-columns:1fr 1fr}.device-row{grid-template-columns:1fr}.latency-box{grid-template-columns:1fr}.latency-readout{text-align:left}}
@media(max-width:560px){.audio-status-grid,.audio-profiles{grid-template-columns:1fr}}


/* === Biblioteka metadata + dedykowane minigry === */
.library-tools{display:grid;grid-template-columns:minmax(220px,1.6fr) repeat(3,minmax(150px,.7fr));gap:10px;margin-top:16px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#10161d}.library-tools .field{min-width:0}.song-details-line{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:4px}.meta-chip{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;border:1px solid #3b4653;background:#151c24;color:#c9d1d9;font-size:11px}.meta-chip.genre{border-color:#5a437c;background:#21192e}.library-empty{padding:24px;text-align:center;border:1px dashed var(--line);border-radius:12px;color:var(--muted)}
.special-mini-stage{margin-top:16px;border:1px solid #35506f;border-radius:16px;background:linear-gradient(180deg,rgba(31,111,235,.08),rgba(13,17,23,.7));padding:16px}.special-mini-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.special-mini-stats{display:flex;gap:10px;flex-wrap:wrap}.mini-stat{min-width:92px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#0d1117;text-align:center}.mini-stat strong{display:block;font-size:22px;font-variant-numeric:tabular-nums}.mini-string-board{display:grid;gap:10px;margin:18px 0}.mini-string-row{position:relative;display:grid;grid-template-columns:58px 1fr 70px;align-items:center;gap:10px;min-height:48px;padding:8px 12px;border:1px solid #30363d;border-radius:11px;background:#0b1016;transition:.12s ease}.mini-string-row:before{content:'';position:absolute;left:70px;right:78px;top:50%;height:2px;background:#69727d;transform:translateY(-50%);opacity:.7}.mini-string-row .string-no{font-weight:900;font-size:18px}.mini-string-row .string-name{text-align:right;font-weight:800;color:#c9d1d9}.mini-string-row.target{border-color:#58a6ff;background:rgba(31,111,235,.16);box-shadow:0 0 0 2px rgba(88,166,255,.14),0 0 22px rgba(31,111,235,.12)}.mini-string-row.target:before{height:4px;background:#79c0ff;box-shadow:0 0 12px rgba(121,192,255,.55)}.mini-string-row.correct{border-color:#3fb950;background:rgba(63,185,80,.14)}.mini-string-row.correct:before{background:#7ee787;height:4px}.mini-string-row.wrong{border-color:#f85149;background:rgba(248,81,73,.13)}.mini-string-row.wrong:before{background:#ff7b72;height:4px}.ear-hidden .mini-string-row.target{border-color:#30363d;background:#0b1016;box-shadow:none}.ear-hidden .mini-string-row.target:before{height:2px;background:#69727d;box-shadow:none}.mini-message{min-height:48px;padding:11px 13px;border-radius:10px;background:#0d1117;border:1px solid var(--line);font-weight:750}.mini-message.good{border-color:#3fb950;color:#7ee787}.mini-message.bad{border-color:#f85149;color:#ff7b72}.mini-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
@media(max-width:900px){.library-tools{grid-template-columns:1fr 1fr}.special-mini-stats{width:100%;grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:600px){.library-tools{grid-template-columns:1fr}.special-mini-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.mini-string-row{grid-template-columns:44px 1fr 50px;padding:7px 10px}.mini-string-row:before{left:56px;right:58px}.ga-fly-feedback{font-size:16px}}

/* === Import PDF === */
.pdf-review{display:none;margin-top:16px;border:1px solid #35506f;border-radius:16px;background:#0f151c;padding:16px}.pdf-review.active{display:block}.pdf-review-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:14px}.pdf-review textarea{min-height:300px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.35}.pdf-status{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#0d1117;margin:10px 0}.pdf-status.good{border-color:#3fb950;color:#7ee787}.pdf-status.warn{border-color:#d29922;color:#e3b341}.pdf-status.bad{border-color:#f85149;color:#ff7b72}.pdf-progress{height:9px;border-radius:999px;background:#21262d;overflow:hidden;margin-top:8px}.pdf-progress>div{height:100%;width:0;background:var(--accent2);transition:width .2s}.pdf-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}.pdf-summary>div{padding:9px;border:1px solid var(--line);border-radius:10px;background:#10161d;text-align:center}.pdf-summary strong{display:block;font-size:18px}.pdf-help{font-size:12px;color:var(--muted);line-height:1.45}.pdf-review-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}@media(max-width:900px){.pdf-review-grid{grid-template-columns:1fr}.pdf-summary{grid-template-columns:1fr 1fr}}

.song-navigator{padding:11px 14px 13px;border-top:1px solid var(--line);background:#0d1218;display:grid;gap:8px}
.song-navigator.light{background:#eee8dc;color:#201b16;border-top-color:#c9c0b3}
.song-navigator-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.song-navigator-position{font:700 12px ui-monospace,SFMono-Regular,Consolas,monospace}
.song-scrubber{width:100%;height:22px;padding:0;background:transparent;border:0;cursor:ew-resize;accent-color:#58a6ff}
.song-scrubber:focus{outline:2px solid #58a6ff;outline-offset:2px}
.song-navigator.light .song-scrubber{accent-color:#6d28d9}
.song-nav-actions{display:flex;gap:7px;flex-wrap:wrap}
.song-nav-actions button{padding:7px 9px;font-size:12px}
.song-nav-hint{font-size:11px;color:var(--muted)}
.song-navigator.light .song-nav-hint{color:#6b6259}
.song-nav-loop{position:relative;height:5px;border-radius:999px;background:#21262d;overflow:hidden}
.song-navigator.light .song-nav-loop{background:#d7cec1}
.song-nav-loop span{position:absolute;top:0;bottom:0;border-radius:999px;background:rgba(210,168,255,.72);left:0;width:0}
@media(max-width:700px){.song-nav-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.song-nav-actions button{width:100%}}


.playforme-toggle{display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#111820;white-space:nowrap;font-size:13px;font-weight:700}
.playforme-toggle input{width:auto;margin:0;accent-color:#58a6ff}
.playforme-volume{display:flex;align-items:center;gap:7px;padding:4px 8px;border:1px solid var(--line);border-radius:10px;background:#0d1117;font-size:11px;color:var(--muted)}
.playforme-volume input{width:92px;padding:0;border:0}
.playforme-on{box-shadow:0 0 0 2px rgba(88,166,255,.18) inset;border-color:#58a6ff}

.feedback-mode-panel{margin-top:12px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#0d1117;display:grid;gap:8px}
.feedback-mode-panel select{max-width:360px}
.feedback-mode-legend{font-size:12px;color:var(--muted);line-height:1.5}
.feedback-mode-legend .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin:0 4px 0 8px;vertical-align:middle}
.feedback-mode-legend .dot:first-child{margin-left:0}
.feedback-mode-legend .green{background:var(--good)}.feedback-mode-legend .red{background:var(--bad)}
.feedback-mode-legend .blue{background:#2f81f7}.feedback-mode-legend .orange{background:#db6d28}

.loop-pass-history{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}
.loop-pass-chip{padding:5px 8px;border:1px solid var(--line);border-radius:999px;background:#10161d;font-size:11px;color:var(--muted)}
.loop-pass-chip strong{color:var(--text)}
.journal-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.journal-stat{border:1px solid var(--line);border-radius:10px;padding:10px;background:#10161d}
.journal-stat strong{display:block;font-size:20px;margin-top:3px}
.practice-calendar{display:grid;grid-template-columns:repeat(7,minmax(32px,1fr));gap:5px;margin-top:14px}
.calendar-day{min-height:46px;border:1px solid var(--line);border-radius:8px;padding:5px;background:#0d1117;font-size:10px;color:var(--muted);display:flex;flex-direction:column;justify-content:space-between}
.calendar-day.active{border-color:#2ea043;background:rgba(46,160,67,.10)}
.calendar-day.medium{background:rgba(46,160,67,.18)}.calendar-day.strong{background:rgba(46,160,67,.28)}
.calendar-day b{font-size:12px;color:var(--text)}
.journal-list{display:grid;gap:7px;margin-top:14px}
.journal-row{display:grid;grid-template-columns:110px 1fr auto;gap:10px;align-items:center;border-top:1px solid var(--line);padding-top:8px;font-size:12px}
@media(max-width:800px){.journal-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.journal-row{grid-template-columns:1fr}.practice-calendar{grid-template-columns:repeat(7,1fr)}}

/* Stage 2 */
.fretboard-shell{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:#0a0f14;padding:10px}
.fretboard-grid{display:grid;min-width:850px;position:relative}
.fret-cell{height:34px;border-right:1px solid #48515b;border-bottom:1px solid rgba(255,255,255,.16);display:flex;align-items:center;justify-content:center;position:relative;font-size:10px;color:#7d8792;cursor:pointer;user-select:none}
.fret-cell.open{border-right:3px solid #d0d7de}
.fret-cell .fret-dot{width:23px;height:23px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid transparent}
.fret-cell.scale .fret-dot{background:rgba(46,160,67,.22);color:#b8f5c6;border-color:rgba(46,160,67,.55)}
.fret-cell.chord-tone .fret-dot{background:rgba(63,185,80,.55);color:white;border-color:#7ee787;font-weight:800}
.fret-cell.target .fret-dot{background:#238636;color:#fff;border-color:#aff5b4;box-shadow:0 0 0 3px rgba(46,160,67,.24);font-weight:900}
.fret-cell.next .fret-dot{background:#8250df;color:#fff;border-color:#d2a8ff;font-weight:800}
.fret-label{height:24px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:10px;border-right:1px solid transparent}
.fret-string-label{font-weight:800;color:var(--text);background:#111820;position:sticky;left:0;z-index:2}
.skill-ladder{display:grid;gap:8px}
.ladder-step{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:10px;background:#10161d}
.ladder-step.locked{opacity:.48}.ladder-step.done{border-color:#2ea043;background:rgba(46,160,67,.08)}
.ladder-num{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#21262d;font-weight:900}
.ladder-step.done .ladder-num{background:#238636}.ladder-step h4{margin:0 0 3px}
.review-summary{display:flex;gap:8px;flex-wrap:wrap}
.review-badge{padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:#10161d;font-size:12px}
.review-list{display:grid;gap:8px;margin-top:12px}
.review-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;border-top:1px solid var(--line);padding-top:9px}
.review-row.due{border-left:3px solid var(--warn);padding-left:9px}
.jam-status{font-weight:700;padding:10px;border-radius:10px;background:#10161d;border:1px solid var(--line)}
.jam-progression{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.jam-chord{padding:12px;text-align:center;border:1px solid var(--line);border-radius:10px;background:#10161d;font-weight:800}
.jam-chord.active{border-color:#58a6ff;background:rgba(88,166,255,.16);box-shadow:0 0 0 2px rgba(88,166,255,.12) inset}
.jam-tips{display:flex;flex-wrap:wrap;gap:8px}.jam-tips span{padding:8px 10px;border-radius:999px;background:#10161d;border:1px solid var(--line);font-size:12px}
@media(max-width:800px){.review-row{grid-template-columns:1fr}.jam-progression{grid-template-columns:repeat(2,1fr)}}


.tuner-stable-hint{margin-top:8px;font-size:11px;color:var(--muted)}
.tuner-string-status>div{grid-template-columns:42px 1fr 1fr 90px}
.tuner-string-state{text-align:right;font-weight:800;color:var(--muted)}
.tuner-string-status>div.tuned{background:rgba(46,160,67,.10);border-radius:8px}
.tuner-string-status>div.tuned .tuner-string-state{color:var(--good)}
.tuner-string-status>div.active-string{outline:1px solid rgba(88,166,255,.5);border-radius:8px}


.stems-grid{display:grid;gap:8px}.stem-row{display:grid;grid-template-columns:110px minmax(180px,1fr) 150px 70px;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line)}.stem-row input[type=file]{font-size:11px}.stem-row input[type=range]{padding:0}.stem-row label{font-size:11px;color:var(--muted)}
.tab-canvas.highway-3d{transform:perspective(1000px) rotateX(48deg) scaleY(1.28);transform-origin:50% 78%;margin-top:-20px;margin-bottom:-18px;box-shadow:0 32px 45px rgba(0,0,0,.28)}
.tab-canvas.highway-3d .note-chip{box-shadow:0 4px 12px rgba(0,0,0,.45)}
@media(max-width:850px){.stem-row{grid-template-columns:1fr 1fr}.stem-row strong{grid-column:1/-1}}


/* GuitarPath 3.6 */
.strum-pattern-view{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(54px,1fr);gap:6px;overflow-x:auto;margin:14px 0;padding:10px;border:1px solid var(--line);border-radius:12px;background:#0d1117}
.strum-cell{min-height:64px;border:1px solid var(--line);border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:24px;font-weight:900;background:#10161d;transition:.1s}
.strum-cell small{font-size:10px;color:var(--muted);font-weight:600}.strum-cell.current{border-color:#58a6ff;background:rgba(88,166,255,.18);transform:translateY(-2px)}.strum-cell.hit{background:rgba(46,160,67,.25);border-color:#2ea043}.strum-cell.miss{background:rgba(248,81,73,.18);border-color:#f85149}
.trainer-stat-line{margin-top:10px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:#10161d;font-size:12px}
.quiz-question{font-size:20px;font-weight:900;margin:14px 0;text-align:center}.quiz-answers{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;margin:10px 0}.quiz-answers button{min-width:72px}.quiz-answers button.good{border-color:#2ea043;background:rgba(46,160,67,.2)}.quiz-answers button.bad{border-color:#f85149;background:rgba(248,81,73,.14)}
.progression-library{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;margin-top:14px}.progression-card{border:1px solid var(--line);border-radius:11px;padding:12px;background:#10161d}.progression-card h4{margin:0 0 4px}.progression-chords{font-size:18px;font-weight:900;letter-spacing:.03em;margin:10px 0}.progression-functions{color:var(--muted);font-size:12px}
.song-sections-editor{display:grid;gap:7px;margin:10px 0}.song-section-row{display:grid;grid-template-columns:110px 80px 1fr 1fr 36px;gap:6px;align-items:center}.song-section-row input{min-width:0}
.songbook-preview{max-width:900px;margin:0 auto;background:#f8f4ea;color:#17130e;padding:28px;border-radius:10px;min-height:240px;font-family:Georgia,serif}.songbook-preview h1{color:#17130e}.songbook-line{white-space:pre-wrap;line-height:2.05;margin:2px 0}.songbook-chord{display:inline-block;color:#8b3a16;font-family:ui-monospace,monospace;font-weight:900;vertical-align:super;font-size:.82em;margin-right:2px}.songbook-section{margin:18px 0 6px;font-weight:900;border-bottom:1px solid #cabca9;padding-bottom:3px}.songbook-section-meta{font-size:11px;color:#766b5f}.capo-suggestion{margin:10px 0;padding:9px;border:1px solid var(--line);border-radius:9px;background:#10161d;font-size:12px}
@media(max-width:850px){.song-section-row{grid-template-columns:1fr 1fr}.song-section-row>*:nth-child(3),.song-section-row>*:nth-child(4){grid-column:1/-1}}
@media print{body *{visibility:hidden!important}.songbook-preview,.songbook-preview *{visibility:visible!important}.songbook-preview{position:absolute;left:0;top:0;width:100%;max-width:none;border-radius:0;padding:0;background:white}}


.transport-prepare{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);padding:5px 8px;border:1px solid var(--line);border-radius:9px;background:#10161d}
.transport-prepare select{width:auto;min-width:64px;padding:5px 7px}
.highway-transport{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:10px 0 2px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#0f151c}
.highway-transport button{min-width:112px;padding:10px 16px;font-size:14px;font-weight:800}
.highway-transport-main{min-width:150px!important}
.highway-stop-btn{border-color:rgba(248,81,73,.5)}
@media(max-width:700px){.highway-transport button{flex:1}.highway-transport .muted{width:100%;text-align:center}}




/* 3.6.4 — większa skala pozioma autostrady dla czytelnych szybkich nut */
.highway-help::after{content:' • szerszy odstęp nut';color:var(--muted)}


.metronome-quick-btn{border-color:rgba(210,168,255,.45);min-width:150px!important}
.metronome-quick-btn.on{background:rgba(137,87,229,.20);border-color:#d2a8ff;color:#fff}
.metro-control{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);padding:5px 7px;border:1px solid var(--line);border-radius:9px;background:#10161d}
.metro-control select{width:auto;min-width:105px;padding:5px 7px}
.metro-volume{min-width:190px}.metro-volume input[type=range]{width:95px;padding:0}.metro-volume b{color:var(--text)}
.metro-accent{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);white-space:nowrap}
.metro-accent input{width:auto}
@media(max-width:900px){.metro-control{flex:1 1 180px}.metro-volume{flex:1 1 220px}}


.songbook-song-picker{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}
.songbook-new-song{margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#10161d}
.songbook-new-song.hidden{display:none}
@media(max-width:700px){.songbook-song-picker{grid-template-columns:1fr}.songbook-song-picker button{width:100%}}


.songbook-song-picker{grid-template-columns:minmax(0,1fr) auto auto}
.book-importer{margin:12px 0;padding:14px;border:1px solid var(--line);border-radius:12px;background:#0d1117}
.book-importer.hidden,.book-import-preview.hidden{display:none}
.book-importer textarea{margin-top:10px;width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}
.book-import-preview{margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.import-meta-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.import-section-list{display:grid;gap:8px;margin-top:12px}
.import-section{border:1px solid var(--line);border-radius:10px;padding:10px;background:#10161d}
.import-section-head{display:grid;grid-template-columns:120px minmax(120px,1fr) minmax(150px,1fr);gap:7px;align-items:center}
.import-section pre{white-space:pre-wrap;overflow:auto;max-height:180px;background:#080c10;padding:8px;border-radius:8px;font-size:11px;margin:8px 0 0}
.import-summary{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.import-summary span{padding:6px 8px;border:1px solid var(--line);border-radius:999px;background:#10161d;font-size:11px}
.songbook-tabs-preview{max-width:900px;margin:12px auto 0}.songbook-tab-card{border:1px solid var(--line);border-radius:10px;padding:12px;margin-top:8px;background:#0d1117}.songbook-tab-card pre{white-space:pre;overflow:auto;margin:8px 0 0;font-size:12px}
@media(max-width:780px){.songbook-song-picker{grid-template-columns:1fr}.import-meta-grid,.import-section-head{grid-template-columns:1fr}}


.paste-import-hint{margin-top:8px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#10161d;color:var(--muted);font-size:11px}
.paste-import-hint.detect-book{border-color:rgba(210,168,255,.45);color:#d2a8ff}
.paste-import-hint.detect-tab{border-color:rgba(88,166,255,.45);color:#79c0ff}
.paste-import-hint.detect-data{border-color:rgba(46,160,67,.45);color:#7ee787}


.trainer-mode-quick{display:flex;align-items:center;gap:6px;padding:5px 8px;border:1px solid var(--line);border-radius:9px;background:#10161d;font-size:11px;color:var(--muted)}
.trainer-mode-quick select{width:auto;min-width:155px;padding:5px 7px}
#trainer.karaoke-mode > :not(:first-child):not(#karaokeTrainerCard){display:none!important}
#trainer.karaoke-mode #karaokeTrainerCard{display:block!important}
#trainer.karaoke-mode > .card:first-child .grid.cols3,#trainer.karaoke-mode > .card:first-child .progressbar,#trainer.karaoke-mode #trackQuick,#trainer.karaoke-mode #tuningAlert{display:none!important}
.karaoke-trainer-card{margin-top:16px;background:linear-gradient(180deg,#101722,#0b1017);overflow:hidden}
.karaoke-head{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center}.karaoke-head h2{margin:6px 0 2px;font-size:24px}
.karaoke-current-chord{min-width:180px;text-align:center;padding:10px 16px;border:1px solid rgba(210,168,255,.4);border-radius:14px;background:rgba(130,80,220,.10)}.karaoke-current-chord span{display:block;font-size:9px;color:var(--muted);letter-spacing:.12em}.karaoke-current-chord strong{display:block;font-size:36px;line-height:1.1;color:#d2a8ff}.karaoke-current-chord small{color:var(--muted)}
.karaoke-chord-area{display:grid;grid-template-columns:1fr 210px;gap:16px;align-items:center;margin-top:14px}.karaoke-chord-sequence{display:flex;gap:8px;flex-wrap:wrap}.karaoke-chord-chip{padding:9px 13px;border-radius:10px;border:1px solid var(--line);background:#151b23;font-size:18px;font-weight:900}.karaoke-chord-chip.active{background:rgba(130,80,220,.24);border-color:#d2a8ff;color:#fff;transform:translateY(-2px)}.karaoke-strum-view{margin-top:12px;font-size:24px;letter-spacing:.2em;font-weight:900;color:#79c0ff}
.karaoke-chord-diagram{min-height:120px}.karaoke-chord-diagram svg{max-height:150px;width:100%}
.karaoke-screen{position:relative;margin-top:16px;padding:34px 24px;border:1px solid var(--line);border-radius:16px;background:#070b10;text-align:center;min-height:210px;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.karaoke-line{transition:.15s}.karaoke-line.current{font-size:clamp(24px,3.6vw,42px);font-weight:850;line-height:1.35}.karaoke-line.next{margin-top:24px;font-size:18px;color:#697583}.karaoke-word{color:#aab4bf;transition:.12s}.karaoke-word.done{color:#fff}.karaoke-word.active{color:#ffd166;text-shadow:0 0 16px rgba(255,209,102,.22)}
.karaoke-countdown{position:absolute;inset:0;display:grid;place-items:center;background:rgba(5,8,12,.76);font-size:80px;font-weight:950;color:#fff;z-index:5}.karaoke-countdown.hidden{display:none}
.karaoke-progress{height:7px;background:#202832;border-radius:999px;overflow:hidden;margin-top:12px}.karaoke-progress span{display:block;width:0;height:100%;background:#8250df}
.karaoke-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}.karaoke-controls label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);padding:6px 8px;border:1px solid var(--line);border-radius:9px}.karaoke-controls input[type=number]{width:72px}.karaoke-controls select{width:auto}.karaoke-controls input[type=checkbox]{width:auto}
.karaoke-pattern-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}.karaoke-pattern-row select{width:auto}
@media(max-width:800px){.karaoke-head,.karaoke-chord-area{grid-template-columns:1fr}.karaoke-current-chord{min-width:0}.karaoke-chord-diagram{display:none}.karaoke-controls button{flex:1 1 130px}}


.chord-notation-controls{align-items:end}.chord-notation-controls .field{min-width:245px}.notation-hint{font-size:11px;color:var(--muted);padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#10161d}.notation-hint.pl{color:#7ee787;border-color:rgba(46,160,67,.5)}.notation-hint.intl{color:#79c0ff;border-color:rgba(88,166,255,.5)}


/* 3.7.2 — karaoke: akordy w osi tekstu */
.karaoke-chord-area{display:none!important}
.karaoke-screen{min-height:290px;padding:34px 42px}
.karaoke-center-stack{width:min(100%,980px);margin:0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center}
.karaoke-chord-sequence-centered{justify-content:center;align-items:center;margin:0 auto 10px;min-height:48px}
.karaoke-chord-sequence-centered .karaoke-chord-chip{font-size:21px;padding:8px 14px;opacity:.62;transform:none}
.karaoke-chord-sequence-centered .karaoke-chord-chip.active{font-size:30px;padding:9px 18px;opacity:1;transform:translateY(-2px);box-shadow:0 0 0 2px rgba(210,168,255,.12),0 8px 25px rgba(130,80,220,.18)}
.karaoke-chord-chip.past{opacity:.38}
.karaoke-chord-chip.future{opacity:.72}
.karaoke-strum-centered{text-align:center;margin:0 0 18px;font-size:23px;letter-spacing:.22em}
.karaoke-line.current{width:100%;text-align:center}
.karaoke-line.next{width:100%;text-align:center}
.karaoke-chord-diagram-corner{position:absolute;right:18px;top:18px;width:145px;min-height:100px;opacity:.78}
.karaoke-chord-diagram-corner svg{max-height:115px}
@media(max-width:900px){.karaoke-chord-diagram-corner{display:none}.karaoke-screen{padding:28px 18px}.karaoke-chord-sequence-centered .karaoke-chord-chip{font-size:18px;padding:7px 11px}.karaoke-chord-sequence-centered .karaoke-chord-chip.active{font-size:25px;padding:8px 14px}}


/* 3.8 Practice Intelligence */
.ai-stems-panel{padding:12px;border:1px solid rgba(88,166,255,.35);border-radius:11px;background:rgba(88,166,255,.06);margin:12px 0}.ai-stems-progress{height:6px;background:#202832;border-radius:999px;overflow:hidden;margin-top:9px}.ai-stems-progress span{display:block;height:100%;width:0;background:#58a6ff;transition:.2s}.dd2-panel{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}.dd2-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.dd2-grid label{font-size:11px;color:var(--muted)}.dd2-grid input{padding:0}.technique-grade{margin-top:8px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:11px}.technique-grade.good{border-color:#2ea043;color:#7ee787}.technique-grade.warn{border-color:#d29922;color:#e3b341}.technique-grade.bad{border-color:#f85149;color:#ff7b72}.right-hand-ai{margin-top:12px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#10161d}.generated-exercise-list{display:grid;gap:9px;margin-top:12px}.generated-exercise{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:10px;background:#10161d}.generated-exercise h4{margin:0 0 4px}.generated-exercise .badge{margin-right:6px}@media(max-width:760px){.dd2-grid{grid-template-columns:1fr}.generated-exercise{grid-template-columns:1fr}}


.amp-preset-buttons{display:flex;gap:8px;flex-wrap:wrap}.amp-preset-buttons button{min-width:96px}.amp-cab-panel{display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(180px,.5fr);gap:12px;align-items:end;padding:12px;border:1px solid var(--line);border-radius:12px;background:#10161d}.amp-quick-btn{border-color:rgba(121,192,255,.38);min-width:145px!important}.amp-quick-btn.on{background:rgba(88,166,255,.12);border-color:#79c0ff}.amp-quick-btn.amp{background:rgba(210,168,255,.12);border-color:#d2a8ff}.amp-quick-preset select{min-width:90px}.amp-top-quick{white-space:nowrap}@media(max-width:800px){.amp-cab-panel{grid-template-columns:1fr}.amp-preset-buttons button{flex:1}.amp-quick-preset{flex:1 1 160px}}


.chord-banner.inferred-chord span{font-size:clamp(18px,2vw,34px);white-space:nowrap}

.mic-monitor-warning{display:flex;gap:10px;align-items:flex-start;margin-top:12px;padding:10px 12px;border:1px solid rgba(255,166,0,.5);border-radius:10px;background:rgba(255,166,0,.08);color:#ffd18a}.mic-monitor-warning.hidden{display:none}.mic-monitor-warning span{color:var(--muted);font-size:12px}.amp-gate-panel{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:#10161d}.amp-gate-panel label{display:flex;gap:7px;align-items:center}.amp-gate-panel input{width:auto}.amp-preset-buttons button:disabled,.amp-quick-preset option:disabled{opacity:.35}

/* ===== GuitarPath 4.1 — czytelniejszy interfejs ===== */
:root{--ui41-blue:#58a6ff;--ui41-purple:#bc8cff;--ui41-orange:#f2a65a;--ui41-green:#56d364;--ui41-pink:#f778ba;--ui41-cyan:#39c5cf}
.sidebar{padding:18px 14px}.brand{margin-bottom:16px}.nav{gap:5px}.nav-group-label{font-size:10px;font-weight:900;letter-spacing:.11em;text-transform:uppercase;color:#59636e;padding:13px 12px 5px}.nav-group-label:first-child{padding-top:4px}.nav button{border-radius:10px;padding:10px 12px;transition:.16s ease}.nav button:hover{background:rgba(255,255,255,.035);color:#c9d1d9}.nav button.active{background:linear-gradient(90deg,rgba(88,166,255,.14),rgba(88,166,255,.04));border-color:rgba(88,166,255,.28);color:#f0f6fc;box-shadow:inset 3px 0 0 #58a6ff}.footer-note{opacity:.72}
.topbar{position:sticky;top:0;z-index:40;padding:10px 0 12px;background:linear-gradient(180deg,var(--bg) 74%,rgba(13,17,23,0));backdrop-filter:blur(8px)}.topbar-status{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.pill.profile-pill{border-color:rgba(88,166,255,.28);background:rgba(88,166,255,.06)}
.ui41-page-intro{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:18px 20px;border:1px solid rgba(88,166,255,.18);border-radius:16px;background:linear-gradient(120deg,rgba(88,166,255,.10),rgba(188,140,255,.055) 55%,rgba(86,211,100,.035));margin-bottom:16px}.ui41-page-intro h2{margin:0 0 5px;font-size:20px}.ui41-page-intro p{margin:0;max-width:780px}.ui41-kicker{font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#79c0ff;margin-bottom:6px}
.ui41-tabs{display:flex;gap:6px;overflow-x:auto;padding:5px;border:1px solid var(--line);border-radius:13px;background:#0d1117;margin-bottom:14px;position:sticky;top:70px;z-index:20}.ui41-tabs button{white-space:nowrap;border:0;background:transparent;color:var(--muted);padding:9px 13px;border-radius:9px;font-weight:750}.ui41-tabs button:hover{color:var(--text);background:rgba(255,255,255,.04)}.ui41-tabs button.active{color:#fff;background:#21262d;box-shadow:0 0 0 1px rgba(255,255,255,.08)}.ui41-tab-panel{display:none}.ui41-tab-panel.active{display:block}.ui41-tab-panel>.card,.ui41-tab-panel>.grid{margin-top:0!important;margin-bottom:16px}
/* Start */
.home-hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr);gap:16px;margin-bottom:16px}.continue-card{position:relative;overflow:hidden;background:linear-gradient(135deg,rgba(35,134,54,.18),rgba(22,27,34,.97) 52%,rgba(88,166,255,.08));border-color:rgba(86,211,100,.27)}.continue-card:after{content:'♪';position:absolute;right:22px;bottom:-28px;font-size:132px;font-weight:900;color:rgba(255,255,255,.035);pointer-events:none}.continue-title{font-size:27px;line-height:1.08;margin:8px 0 8px;max-width:80%}.home-plan-card{background:linear-gradient(145deg,rgba(88,166,255,.09),rgba(22,27,34,.96))}.home-dashboard-grid{display:grid;grid-template-columns:1.25fr .85fr;gap:16px;margin-top:16px}.home-recent-list{display:grid;gap:8px;margin-top:12px}.home-recent-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#10161d}.home-recent-row button{padding:7px 10px}.home-week-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.home-mini-stat{padding:12px;border:1px solid var(--line);border-radius:11px;background:#10161d}.home-mini-stat strong{display:block;font-size:22px;margin-top:3px}.equipment-status{display:flex;gap:10px;align-items:flex-start;padding:11px;border-radius:11px;background:#10161d;border:1px solid var(--line);margin-top:12px}.equipment-dot{width:10px;height:10px;border-radius:50%;margin-top:5px;background:#8b949e;box-shadow:0 0 0 4px rgba(139,148,158,.1)}.equipment-dot.ok{background:#56d364;box-shadow:0 0 0 4px rgba(86,211,100,.1)}.home-backup-details{margin-top:16px}.home-backup-details summary{cursor:pointer;font-weight:800;list-style:none}.home-backup-details summary::-webkit-details-marker{display:none}.home-backup-details summary:before{content:'▸';display:inline-block;margin-right:8px;color:var(--muted);transition:.15s}.home-backup-details[open] summary:before{transform:rotate(90deg)}
/* Graj */
.trainer-main-header{align-items:flex-start!important;gap:18px}.trainer-main-title{min-width:220px;flex:1}.trainer-primary-controls{display:flex;align-items:end;justify-content:flex-end;gap:8px;flex-wrap:wrap}.trainer-primary-controls>label{background:#10161d;border:1px solid var(--line);border-radius:10px;padding:7px 10px}.trainer-primary-controls>label>span{display:block;font-size:10px;color:var(--muted);font-weight:800;margin-bottom:3px;text-transform:uppercase;letter-spacing:.04em}.trainer-primary-controls select{padding:6px 8px;min-width:86px}.trainer-primary-controls .quick-toggle{align-self:center;display:flex;gap:6px;align-items:center;padding:9px 10px}.trainer-primary-controls .quick-toggle input{width:auto}.trainer-primary-controls #playBtn{min-width:96px}.trainer-advanced-panel{margin-top:12px;padding:13px;border:1px solid rgba(121,192,255,.18);border-radius:12px;background:#0f151c}.trainer-advanced-panel.hidden{display:none!important}.trainer-advanced-grid{display:flex;gap:9px;align-items:end;flex-wrap:wrap}.trainer-advanced-grid>label{min-width:135px}.trainer-advanced-grid .playforme-volume{min-width:170px}.trainer-details-tabs{margin-top:16px}.trainer-detail-panel{display:none}.trainer-detail-panel.active{display:block}.trainer-detail-panel>.card,.trainer-detail-panel>.grid{margin-top:0!important;margin-bottom:16px}.trainer-advanced-toggle.open{border-color:#79c0ff;background:rgba(88,166,255,.10)}
/* Rozwój */
.progress-overview-card{background:linear-gradient(145deg,rgba(86,211,100,.07),rgba(22,27,34,.96))}.progress-training-panel .card{border-color:rgba(88,166,255,.16)}.progress-learning-panel .card{border-color:rgba(188,140,255,.18)}.progress-mini-panel .card{border-color:rgba(242,166,90,.18)}.progress-history-panel .card{border-color:rgba(57,197,207,.16)}
/* Rytm i teoria */
.theory-card{position:relative;overflow:hidden;border-color:color-mix(in srgb,var(--theory-color) 30%,var(--line));background:linear-gradient(145deg,color-mix(in srgb,var(--theory-color) 7%,#161b22),rgba(22,27,34,.97) 54%)}.theory-card:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--theory-color)}.theory-rhythm{--theory-color:#f2a65a}.theory-chords{--theory-color:#bc8cff}.theory-fret{--theory-color:#58a6ff}.theory-ear{--theory-color:#f778ba}.theory-harmony{--theory-color:#56d364}.theory-label{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--theory-color);border:1px solid color-mix(in srgb,var(--theory-color) 38%,transparent);background:color-mix(in srgb,var(--theory-color) 8%,transparent);padding:4px 7px;border-radius:999px;margin-bottom:9px}.learn-why{margin:10px 0 12px;padding:10px 11px;border-radius:10px;background:rgba(0,0,0,.16);border:1px solid rgba(255,255,255,.045);font-size:13px;line-height:1.45;color:#b8c0ca}.learn-why strong{color:#f0f6fc}.theory-legend{display:flex;gap:7px;flex-wrap:wrap}.theory-legend span{padding:6px 9px;border-radius:999px;font-size:11px;font-weight:800;border:1px solid var(--line);background:#10161d}.theory-legend .r{color:#f2a65a}.theory-legend .c{color:#bc8cff}.theory-legend .f{color:#58a6ff}.theory-legend .e{color:#f778ba}.theory-legend .h{color:#56d364}
/* Audio */
.audio-context-note{margin-top:12px;padding:10px 12px;border-radius:10px;border:1px solid rgba(88,166,255,.18);background:rgba(88,166,255,.055);font-size:12px;color:var(--muted)}.audio-context-note strong{color:#c9d1d9}.audio-monitor-unavailable{margin-top:16px;padding:14px 16px;border:1px dashed #30363d;border-radius:13px;background:#10161d;color:var(--muted)}
/* Card polish */
.card{transition:border-color .16s ease,box-shadow .16s ease}.card:hover{border-color:#38414b}.card h2{letter-spacing:-.015em}.badge{font-weight:750}.screen{animation:ui41fade .12s ease}@keyframes ui41fade{from{opacity:.55;transform:translateY(2px)}to{opacity:1;transform:none}}
@media(max-width:1050px){.home-hero,.home-dashboard-grid{grid-template-columns:1fr}.trainer-main-header{display:block!important}.trainer-primary-controls{justify-content:flex-start;margin-top:12px}.ui41-tabs{top:64px}}
@media(max-width:760px){.main{padding:18px 14px}.home-week-grid{grid-template-columns:1fr 1fr}.ui41-page-intro{display:block}.theory-legend{margin-top:10px}.trainer-primary-controls{align-items:stretch}.trainer-primary-controls>*{flex:1 1 120px}.ui41-tabs{position:static}}


/* === 4.1.1 — polish UI === */
.library-head-actions{justify-content:flex-end}.theory-start-card{margin:0 0 16px;border-color:rgba(242,166,90,.38);background:linear-gradient(105deg,rgba(242,166,90,.09),rgba(88,166,255,.045));display:flex;justify-content:space-between;gap:20px;align-items:center}.theory-start-card h3{margin:0 0 5px}.theory-start-route{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}.theory-start-step{font-size:12px;color:var(--muted);padding:5px 8px;border-radius:999px;border:1px solid var(--line);background:#10161d}.trainer-hardware-status{margin:10px 0 2px;padding:9px 11px;border:1px solid rgba(88,166,255,.2);border-radius:11px;background:rgba(88,166,255,.045);display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer}.trainer-hardware-main{min-width:0}.trainer-hardware-main strong{display:block;font-size:13px}.trainer-hardware-meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:4px}.trainer-hardware-chip{font-size:11px;padding:3px 7px;border:1px solid var(--line);border-radius:999px;color:var(--muted);background:#0d1117}.trainer-hardware-chip.ok{border-color:rgba(46,160,67,.5);color:#7ee787}.trainer-hardware-chip.warn{border-color:rgba(210,153,34,.5);color:#e3b341}.trainer-hardware-open{font-size:12px;color:#79c0ff;white-space:nowrap}.trainer-sound-tools{margin-bottom:16px}.trainer-sound-tools h3{margin:0}.trainer-sound-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}.trainer-sound-controls .metro-control,.trainer-sound-controls .metro-accent{margin:0}.trainer-sound-note{margin-top:9px;font-size:12px;color:var(--muted)}.trainer-sound-link{margin-left:auto}@media(max-width:760px){.theory-start-card,.trainer-hardware-status{align-items:flex-start;flex-direction:column}.trainer-hardware-open,.trainer-sound-link{margin-left:0}.library-head-actions{width:100%;justify-content:flex-start}}


/* === 4.3.0 — GuitarPath Arcade === */
.arcade-hub{display:grid;gap:16px}.arcade-hero{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:14px;padding:18px;border:1px solid rgba(210,168,255,.28);border-radius:16px;background:linear-gradient(135deg,rgba(137,87,229,.15),rgba(31,111,235,.08) 55%,rgba(13,17,23,.72))}.arcade-hero h2{margin:2px 0 7px}.arcade-kicker{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:900;color:#d2a8ff}.arcade-level{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center}.arcade-level-badge{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;border:2px solid rgba(210,168,255,.65);background:rgba(137,87,229,.13);font-weight:950;font-size:25px;box-shadow:0 0 26px rgba(137,87,229,.12)}.arcade-xp-track{height:9px;border-radius:999px;background:#0b1016;border:1px solid var(--line);overflow:hidden;margin-top:7px}.arcade-xp-track span{display:block;height:100%;background:linear-gradient(90deg,#8957e5,#58a6ff);border-radius:inherit}.arcade-daily{padding:14px;border:1px solid var(--line);border-radius:14px;background:#0d1117}.arcade-daily-list{display:grid;gap:8px;margin-top:10px}.arcade-daily-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid #30363d;border-radius:10px;background:#10161d}.arcade-daily-item.done{border-color:rgba(63,185,80,.55);background:rgba(63,185,80,.08)}.arcade-daily-check{font-weight:900}.arcade-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.arcade-game-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.arcade-game-card{position:relative;padding:15px;border:1px solid #30363d;border-radius:14px;background:linear-gradient(180deg,#111821,#0d1117);overflow:hidden;transition:.16s ease}.arcade-game-card:hover{transform:translateY(-1px);border-color:#4a5563;box-shadow:0 8px 28px rgba(0,0,0,.16)}.arcade-game-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.arcade-game-icon{font-size:28px}.arcade-game-card h3{margin:3px 0 4px}.arcade-game-record{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.arcade-record-chip{padding:5px 8px;border-radius:999px;border:1px solid var(--line);font-size:11px;color:var(--muted);background:#0b1016}.arcade-record-chip strong{color:var(--text)}.arcade-game-actions{display:grid;grid-template-columns:minmax(120px,.6fr) 1fr;gap:9px;align-items:end}.arcade-game-actions select{width:100%}.arcade-lock-note{margin-top:8px;font-size:11px;color:#ffd18a}.arcade-mission{margin-top:10px;padding:8px 10px;border-left:3px solid #58a6ff;border-radius:8px;background:rgba(88,166,255,.06);font-size:12px;color:var(--muted)}.arcade-medal{font-size:20px;white-space:nowrap}.arcade-medal.none{opacity:.38}.arcade-medal.bronze{filter:saturate(.85)}.arcade-medal.silver{filter:grayscale(.35) brightness(1.2)}.arcade-medal.gold{filter:drop-shadow(0 0 7px rgba(255,210,70,.22))}.arcade-medal.platinum{filter:drop-shadow(0 0 8px rgba(121,192,255,.3))}.arcade-hud{display:none;position:relative;margin:10px 0 0;padding:11px 13px;border:1px solid rgba(210,168,255,.38);border-radius:12px;background:linear-gradient(90deg,rgba(137,87,229,.10),rgba(13,17,23,.85));overflow:hidden}.arcade-hud.show{display:block}.arcade-hud.boss{border-color:#f0883e;box-shadow:0 0 18px rgba(240,136,62,.12)}.arcade-hud-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.arcade-hud-stats{display:flex;gap:8px;flex-wrap:wrap}.arcade-hud-chip{min-width:78px;padding:6px 9px;border:1px solid var(--line);border-radius:9px;background:#0b1016;text-align:center}.arcade-hud-chip span{display:block;color:var(--muted);font-size:10px}.arcade-hud-chip strong{display:block;font-size:17px;font-variant-numeric:tabular-nums}.arcade-hud-chip.combo strong{color:#d2a8ff}.arcade-hud-chip.mult strong{color:#ffa657}.arcade-hud-progress{height:5px;margin-top:9px;border-radius:999px;background:#0b1016;overflow:hidden}.arcade-hud-progress span{display:block;height:100%;background:linear-gradient(90deg,#58a6ff,#d2a8ff);transition:width .16s ease}.arcade-hud.boss .arcade-hud-progress span{background:linear-gradient(90deg,#f0883e,#ffa657)}.arcade-hud-flash{position:absolute;right:12px;top:7px;font-size:12px;font-weight:900;opacity:0;transform:translateY(4px);pointer-events:none}.arcade-hud-flash.pop{animation:arcadePop .55s ease}.arcade-hit-flash{animation:arcadeHit .22s ease}.arcade-miss-flash{animation:arcadeMiss .26s ease}@keyframes arcadePop{0%{opacity:0;transform:translateY(5px) scale(.92)}25%{opacity:1;transform:translateY(0) scale(1.06)}100%{opacity:0;transform:translateY(-8px) scale(1)}}@keyframes arcadeHit{50%{box-shadow:0 0 0 2px rgba(63,185,80,.38),0 0 24px rgba(63,185,80,.13)}}@keyframes arcadeMiss{50%{box-shadow:0 0 0 2px rgba(248,81,73,.34),0 0 24px rgba(248,81,73,.10)}}.arcade-boss-label{display:none;font-weight:950;color:#ffa657;letter-spacing:.08em}.arcade-hud.boss .arcade-boss-label{display:inline}.arcade-special-wrap{margin-top:14px}.arcade-target-timer{height:7px;border-radius:999px;background:#0b1016;border:1px solid var(--line);overflow:hidden;margin:10px 0}.arcade-target-timer span{display:block;height:100%;background:#58a6ff;transition:width .08s linear}.arcade-special-wrap.boss .arcade-target-timer span{background:#f0883e}.arcade-difficulty-tag{display:inline-flex;padding:4px 8px;border-radius:999px;border:1px solid var(--line);font-size:11px;font-weight:850;color:#c9d1d9}.arcade-result-overlay{position:fixed;inset:0;z-index:10050;display:none;align-items:center;justify-content:center;padding:18px;background:rgba(3,6,10,.78);backdrop-filter:blur(6px)}.arcade-result-overlay.show{display:flex}.arcade-result-card{width:min(680px,96vw);max-height:92vh;overflow:auto;border:1px solid rgba(210,168,255,.48);border-radius:20px;background:linear-gradient(160deg,#171024,#0d1117 46%,#0b1016);box-shadow:0 28px 80px rgba(0,0,0,.55);padding:22px;text-align:center}.arcade-result-medal{font-size:72px;line-height:1;margin:6px 0}.arcade-result-title{font-size:27px;font-weight:950}.arcade-result-sub{color:var(--muted);margin-top:5px}.arcade-result-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:18px 0}.arcade-result-stat{padding:11px 8px;border:1px solid var(--line);border-radius:11px;background:#0d1117}.arcade-result-stat span{display:block;color:var(--muted);font-size:10px}.arcade-result-stat strong{display:block;font-size:21px;margin-top:2px}.arcade-result-badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:12px 0}.arcade-result-badge{padding:7px 10px;border-radius:999px;border:1px solid rgba(88,166,255,.35);background:rgba(88,166,255,.08);font-size:12px;font-weight:800}.arcade-result-badge.good{border-color:rgba(63,185,80,.45);background:rgba(63,185,80,.08);color:#7ee787}.arcade-result-actions{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;margin-top:18px}.arcade-result-actions button{min-width:160px}.arcade-sfx-toggle{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted)}.arcade-sfx-toggle input{width:auto}.arcade-unlock{margin:12px 0;padding:10px;border:1px solid rgba(255,166,87,.4);border-radius:10px;background:rgba(255,166,87,.07);color:#ffd18a;font-weight:850}.special-mini-stage.arcade-mode{border-color:rgba(210,168,255,.4);background:linear-gradient(180deg,rgba(137,87,229,.10),rgba(13,17,23,.76))}.special-mini-stage.arcade-mode .special-mini-head{margin-top:8px}.mini-string-board.expert .string-name{visibility:hidden}.mini-string-board.hard .string-name{opacity:.45}.mini-string-row.target.arcade-boss-target{border-color:#f0883e;box-shadow:0 0 0 2px rgba(240,136,62,.15),0 0 24px rgba(240,136,62,.14)}
@media(max-width:920px){.arcade-hero{grid-template-columns:1fr}.arcade-game-grid{grid-template-columns:1fr}.arcade-result-stats{grid-template-columns:1fr 1fr}}@media(max-width:560px){.arcade-game-actions{grid-template-columns:1fr}.arcade-result-stats{grid-template-columns:1fr 1fr}.arcade-hud-chip{min-width:66px}.arcade-level-badge{width:58px;height:58px;font-size:20px}}


/* 4.3.0 — wydzielony salon Arcade i lekkie animacje w każdej minigrze */
#nav button[data-screen="arcade"]{border-color:rgba(210,168,255,.18);background:linear-gradient(100deg,rgba(137,87,229,.10),rgba(31,111,235,.03));color:#dbc0ff;font-weight:850}
#nav button[data-screen="arcade"].active{border-color:rgba(210,168,255,.52);background:linear-gradient(90deg,rgba(137,87,229,.26),rgba(88,166,255,.08));box-shadow:inset 3px 0 0 #bc8cff,0 0 22px rgba(137,87,229,.10);color:#fff}
.arcade-page-intro{border:1px solid rgba(210,168,255,.23);border-radius:16px;padding:16px 18px;background:linear-gradient(120deg,rgba(137,87,229,.13),rgba(88,166,255,.035),transparent)}
.arcade-main-card{background:transparent;border:none;box-shadow:none;padding:0}
#arcadeHubCard{scroll-margin-top:20px}
#arcade .arcade-hero{background:radial-gradient(ellipse at 0% 0%,rgba(137,87,229,.22),transparent 63%),linear-gradient(125deg,#1a1426,#0d1117 66%);position:relative;overflow:hidden}
#arcade .arcade-hero:after{content:'✦';position:absolute;right:23%;top:9%;font-size:43px;color:rgba(210,168,255,.12);animation:gpArcadeStar 6s ease-in-out infinite;pointer-events:none}
#arcade .arcade-level-badge{box-shadow:0 0 0 7px rgba(137,87,229,.07),0 0 30px rgba(137,87,229,.20);animation:gpArcadeBreath 3.6s ease-in-out infinite}
#arcade .arcade-xp-track span{background-image:linear-gradient(100deg,#8957e5,#58a6ff,#c88aff,#8957e5);background-size:240% 100%;animation:gpArcadeShimmer 5s linear infinite;transition:width .4s ease}
#arcade .arcade-game-card{border-color:rgba(210,168,255,.20);background:linear-gradient(145deg,#171c2a,#0d1117 70%);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
#arcade .arcade-game-card:hover,#arcade .arcade-game-card:focus-within{transform:translateY(-4px);border-color:rgba(210,168,255,.54);box-shadow:0 14px 36px rgba(0,0,0,.27),0 0 26px rgba(137,87,229,.10)}
#arcade .arcade-game-card:before{content:'';position:absolute;top:0;left:-120%;width:60%;height:100%;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.035),transparent);transition:left .65s ease;pointer-events:none}
#arcade .arcade-game-card:hover:before{left:150%}
#arcade .arcade-game-icon{display:inline-grid;place-items:center;width:52px;height:52px;font-size:31px;border-radius:15px;background:linear-gradient(135deg,rgba(137,87,229,.24),rgba(88,166,255,.09));border:1px solid rgba(210,168,255,.18);transform-origin:center}
#arcade .arcade-game-card:hover .arcade-game-icon{animation:gpArcadeIcon .55s cubic-bezier(.22,.8,.27,1.35)}
#arcade .arcade-game-card button.primary{background:linear-gradient(110deg,#6734ba,#865ce8);color:white;border-color:#9b7bf0;font-weight:900}
#arcade .arcade-game-skill{display:inline-flex;align-items:center;padding:5px 8px;margin-top:9px;font-size:11px;border-radius:999px;border:1px solid rgba(88,166,255,.25);background:rgba(88,166,255,.08);color:#9dceff}
#arcade .arcade-game-card .arcade-medal{transition:transform .25s ease}
#arcade .arcade-game-card:hover .arcade-medal{transform:scale(1.22) rotate(8deg)}
#arcade .arcade-daily-item.done{animation:gpArcadeDaily .45s ease-out}
.arcade-hud.boss,.arcade-special-wrap.boss .arcade-hud{animation:gpArcadeBoss 1.45s ease-in-out infinite alternate}
.arcade-hud-chip.combo strong,.arcade-hud-chip.mult strong{transition:transform .2s ease,color .2s ease}
.arcade-hud-progress span{background-image:linear-gradient(90deg,#58a6ff,#d2a8ff,#58a6ff);background-size:200% 100%;animation:gpArcadeShimmer 2.8s linear infinite}
.mini-string-row.target{animation:gpArcadeTarget .95s ease-in-out infinite alternate}
.mini-string-row.correct{animation:gpArcadeStringHit .48s ease-out}
.mini-string-row.wrong{animation:gpArcadeStringMiss .38s ease-out}
.arcade-special-wrap .arcade-target-timer span{background-image:linear-gradient(90deg,#4196f9,#9ecbff);box-shadow:0 0 10px rgba(88,166,255,.28)}
.arcade-feedback-float{position:fixed;z-index:10002;pointer-events:none;min-width:110px;text-align:center;color:#9affb5;font-size:27px;font-weight:1000;letter-spacing:-.04em;text-shadow:0 2px 6px #05080d,0 0 25px rgba(63,185,80,.75);animation:gpArcadeFloat .85s cubic-bezier(.2,.8,.2,1) both}
.arcade-feedback-float.miss{color:#ff9994;text-shadow:0 2px 6px #05080d,0 0 25px rgba(248,81,73,.65)}
.arcade-feedback-float.combo{color:#ffd08b;text-shadow:0 2px 6px #05080d,0 0 25px rgba(255,166,87,.75)}
.arcade-feedback-float:before,.arcade-feedback-float:after{content:'✦';position:absolute;font-size:14px;animation:gpArcadeSpark .72s ease-out both}
.arcade-feedback-float:before{left:0;top:0}.arcade-feedback-float:after{right:0;top:10px;animation-delay:.07s}
.arcade-result-overlay.show .arcade-result-card{animation:gpArcadeModal .38s cubic-bezier(.2,.85,.27,1.1) both}
.arcade-result-overlay.show .arcade-result-medal{animation:gpArcadeMedal .7s cubic-bezier(.22,.7,.25,1.3) both;filter:drop-shadow(0 0 16px rgba(210,168,255,.35))}
.arcade-result-badge.good{animation:gpArcadeDaily .55s ease-out}
@keyframes gpArcadeTarget{from{filter:brightness(1);box-shadow:0 0 0 1px rgba(88,166,255,.06)}to{filter:brightness(1.22);box-shadow:0 0 0 3px rgba(88,166,255,.25),0 0 18px rgba(88,166,255,.22)}}
@keyframes gpArcadeStringHit{0%{transform:scale(1)}30%{transform:scale(1.018);filter:brightness(1.55)}65%{transform:scale(.992)}100%{transform:scale(1)}}
@keyframes gpArcadeStringMiss{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}
@keyframes gpArcadeFloat{0%{opacity:0;transform:translate(-50%,-12%) scale(.65)}18%{opacity:1;transform:translate(-50%,-48%) scale(1.12)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-135%) scale(.93)}}
@keyframes gpArcadeSpark{from{opacity:0;transform:translate(0,0) scale(.4)}40%{opacity:1}to{opacity:0;transform:translate(23px,-31px) scale(1.5)}}
@keyframes gpArcadeBoss{from{box-shadow:0 0 8px rgba(240,136,62,.14)}to{box-shadow:0 0 24px rgba(240,136,62,.36)}}
@keyframes gpArcadeModal{from{opacity:0;transform:translateY(22px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes gpArcadeMedal{0%{opacity:0;transform:scale(.1) rotate(-24deg)}70%{opacity:1;transform:scale(1.24) rotate(6deg)}100%{transform:scale(1) rotate(0deg)}}
@keyframes gpArcadeDaily{from{opacity:.4;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
@keyframes gpArcadeIcon{0%,100%{transform:scale(1) rotate(0)}45%{transform:scale(1.18) rotate(-12deg)}72%{transform:scale(1.06) rotate(7deg)}}
@keyframes gpArcadeStar{0%,100%{transform:translateY(0) rotate(0);opacity:.55}50%{transform:translateY(13px) rotate(30deg);opacity:1}}
@keyframes gpArcadeBreath{0%,100%{box-shadow:0 0 0 7px rgba(137,87,229,.07),0 0 22px rgba(137,87,229,.12)}50%{box-shadow:0 0 0 9px rgba(137,87,229,.09),0 0 37px rgba(137,87,229,.28)}}
@keyframes gpArcadeShimmer{from{background-position:100% 0}to{background-position:-100% 0}}
@media(prefers-reduced-motion:reduce){#arcade .arcade-hero:after,#arcade .arcade-level-badge,#arcade .arcade-xp-track span,#arcade .arcade-game-card:hover .arcade-game-icon,.mini-string-row.target,.mini-string-row.correct,.mini-string-row.wrong,.arcade-hud.boss,.arcade-special-wrap.boss .arcade-hud,.arcade-hud-progress span,.arcade-feedback-float,.arcade-result-overlay.show .arcade-result-card,.arcade-result-overlay.show .arcade-result-medal,.arcade-result-badge.good{animation:none!important}#arcade .arcade-game-card{transition:none}#arcade .arcade-game-card:before{display:none}}

/* Animacje podczas pięciu gier rozgrywanych na autostradzie Graj */
#trainer.arcade-playing #tuningAlert.ok{display:none!important}
#trainer.arcade-playing .trainer-wrap{border-color:rgba(210,168,255,.52);box-shadow:0 0 0 1px rgba(137,87,229,.13),0 0 25px rgba(137,87,229,.10)}
#trainer.arcade-playing .note-chip.current{animation:gpArcadeNoteTarget 1s ease-in-out infinite alternate}
#trainer.arcade-playing .note-chip.hit{animation:gpArcadeNoteHit .5s ease-out both}
#trainer.arcade-playing .note-chip.miss{animation:gpArcadeNoteMiss .38s ease-out both}
#trainer.arcade-playing .chord-banner.current{animation:gpArcadeChord 1s ease-in-out infinite alternate}
#trainer.arcade-playing .chord-banner.hit{animation:gpArcadeNoteHit .5s ease-out both}
#trainer.arcade-playing .chord-banner.miss{animation:gpArcadeNoteMiss .38s ease-out both}
#trainer.arcade-playing .arcade-hud-chip.combo strong{color:#f0d7ff}
@keyframes gpArcadeNoteTarget{from{filter:brightness(1.07);box-shadow:0 0 0 4px rgba(255,255,255,.12),0 0 10px rgba(88,166,255,.20)}to{filter:brightness(1.42);box-shadow:0 0 0 6px rgba(255,255,255,.20),0 0 23px rgba(137,87,229,.60)}}
@keyframes gpArcadeNoteHit{0%{filter:brightness(1);opacity:1}45%{filter:brightness(1.8);opacity:1}100%{filter:brightness(1.15);opacity:1}}
@keyframes gpArcadeNoteMiss{0%,100%{filter:brightness(1);opacity:1}30%{filter:brightness(1.9) hue-rotate(-20deg)}65%{filter:brightness(.7);opacity:.7}}
@keyframes gpArcadeChord{from{filter:brightness(1.07)}to{filter:brightness(1.38) drop-shadow(0 0 12px rgba(210,168,255,.30))}}
@media(prefers-reduced-motion:reduce){#trainer.arcade-playing .note-chip.current,#trainer.arcade-playing .note-chip.hit,#trainer.arcade-playing .note-chip.miss,#trainer.arcade-playing .chord-banner.current,#trainer.arcade-playing .chord-banner.hit,#trainer.arcade-playing .chord-banner.miss{animation:none!important}}
/* GuitarArcade 4.4 — six individually animated play stages */
#nav button[data-screen="arcade"]{font-weight:850;letter-spacing:.006em}
.ga-stage{position:relative;scroll-margin-top:14px;min-height:340px}
.ga-stage.hidden{display:none!important}
.ga-shell{border:1px solid rgba(154,123,250,.25);border-radius:20px;padding:clamp(15px,2.6vw,28px);background:radial-gradient(ellipse at 95% 0%,rgba(117,68,185,.22),transparent 60%),radial-gradient(ellipse at 0% 100%,rgba(49,111,209,.10),transparent 65%),linear-gradient(130deg,#101522,#0d101b);box-shadow:0 18px 44px rgba(0,0,0,.20);color:#ebeffc;overflow:hidden}
.ga-boss .ga-shell{border-color:rgba(250,163,87,.7);box-shadow:0 0 34px rgba(244,153,63,.16),0 18px 44px rgba(0,0,0,.2)}
.ga-topline{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:14px}
.ga-kicker{font-size:10px;letter-spacing:.15em;font-weight:900;color:#bdabff}
.ga-topline h2{font-size:clamp(21px,3vw,28px);margin:5px 0}
.ga-topline p{font-size:13px;color:#aeb8d4;max-width:600px;margin:4px 0}
.ga-leave{flex-shrink:0;background:rgba(244,101,101,.07)!important;border:1px solid rgba(244,101,101,.26)!important;color:#ffb6ae!important;border-radius:11px!important}
.ga-stage .arcade-hud-row{padding:12px;border:1px solid rgba(147,154,207,.19);border-radius:12px;background:rgba(21,26,47,.5);margin-bottom:9px}
.ga-stage .arcade-boss-label{display:none}
.ga-boss .arcade-boss-label{display:inline!important}
.ga-stage .arcade-hud-progress{height:6px;overflow:hidden;border-radius:99px;background:rgba(158,163,220,.13)}
.ga-stage .arcade-hud-flash{font-weight:850;color:#b5ffa9;min-height:19px}
.ga-timebar{height:5px;border-radius:9px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:10px}
.ga-timebar span{display:block;width:100%;height:100%;background:linear-gradient(90deg,#b888fa,#56a1ff);border-radius:inherit;transition:width .08s linear}
.ga-message{padding:10px 13px;margin:12px 0 16px;border:1px solid rgba(146,155,219,.2);border-radius:11px;background:rgba(255,255,255,.035);min-height:40px;font-size:13px;color:#cbd7f1}
.ga-scene{min-height:250px}
.ga-controls{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-top:18px;padding-top:12px;border-top:1px solid rgba(160,161,220,.16);font-size:13px;color:#cbd4ed}
.ga-controls button{border-radius:10px!important}
.ga-counter{font-size:13px;font-weight:850;color:#e3e7fc}
.ga-footnote{font-size:12px;line-height:1.5;color:#9baac8;margin:14px 0 0}
/* Echo: singing cosmic planet and glitter notes */
.ga-orbit{display:flex;flex-direction:column;align-items:center;gap:10px;padding:6px 0 16px}
.ga-orbit-circle{height:100px;width:100px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 34% 29%,#ccb1ff,#7b47bf 50%,#341d70 85%);box-shadow:0 0 0 12px rgba(156,98,231,.09),0 0 42px rgba(164,93,241,.28);font-size:46px;animation:gaBreathe 2.5s ease-in-out infinite}
.ga-orbit-label{font-size:11px;letter-spacing:.2em;font-weight:900;color:#bca5fc}
.ga-note-strip{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:4px}
.ga-note-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;width:clamp(65px,11vw,110px);min-height:92px;gap:5px;border-radius:14px;border:1px solid rgba(164,143,238,.25);background:linear-gradient(145deg,#27213d,#121828);color:#c1bcdb;transition:transform .23s,border-color .23s,box-shadow .23s}
.ga-note-tile small{color:#9d9fbd;font-size:11px}.ga-note-tile strong{font-size:26px}.ga-note-tile span{font-size:10px;text-align:center}
.ga-note-tile.current{border-color:#bba2ff;box-shadow:0 0 0 3px rgba(175,128,255,.12),0 0 20px rgba(142,105,251,.2);transform:translateY(-5px)}
.ga-note-tile.done{border-color:#67d4ac;background:linear-gradient(145deg,#173a37,#102328);color:#c1f7e0}
.ga-note-tile.lit{transform:translateY(-12px) scale(1.12);background:linear-gradient(135deg,#754de3,#4746ac);box-shadow:0 0 25px rgba(194,128,255,.5);color:#fff}
/* Simon: bright live sequence keys */
.ga-simon-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:650px;margin:12px auto 18px}
.ga-simon-pad{min-height:118px;padding:15px;border:1px solid rgba(255,255,255,.13);border-radius:22px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:linear-gradient(145deg,var(--ga-pad,#4e3885),#141825);box-shadow:inset 0 -10px 20px rgba(0,0,0,.24),0 8px 16px rgba(0,0,0,.16);opacity:.72;transition:transform .15s,box-shadow .15s,opacity .15s}
.ga-simon-pad.color-0{--ga-pad:#3163bb}.ga-simon-pad.color-1{--ga-pad:#2d9b81}.ga-simon-pad.color-2{--ga-pad:#9c7b2a}.ga-simon-pad.color-3{--ga-pad:#a04892}.ga-simon-pad.color-4{--ga-pad:#b45445}.ga-simon-pad.color-5{--ga-pad:#634cb0}
.ga-simon-pad .ga-simon-num{border:1px solid rgba(255,255,255,.45);width:30px;height:30px;display:grid;place-items:center;border-radius:50%;font-size:12px}
.ga-simon-pad strong{font-size:23px}.ga-simon-pad small{height:13px}
.ga-simon-pad.lit{opacity:1;transform:scale(1.09) translateY(-3px);filter:brightness(1.45);box-shadow:0 0 0 4px rgba(255,255,255,.20),0 0 38px var(--ga-pad);z-index:1}
/* Scale snake fretboard */
.ga-fret-labels,.ga-fretboard{display:grid;grid-template-columns:68px repeat(9,minmax(0,1fr));gap:3px}
.ga-fret-labels{margin:8px 0 6px;text-align:center;color:#93a4c8;font-size:10px}
.ga-fretboard{padding:10px;border-radius:17px;border:1px solid rgba(189,148,85,.24);background:repeating-linear-gradient(165deg,#453228,#382620 15px,#3b2b20 20px);box-shadow:inset 0 0 28px rgba(0,0,0,.22);align-items:center}
.ga-fret-name{font-size:13px;font-weight:900;color:#ffddb6;text-align:center}
.ga-fret-cell{position:relative;min-height:36px;text-align:center;display:grid;place-items:center;border-left:3px solid #b2a59f;border-bottom:2px solid #ada494;color:rgba(255,255,255,.20);font-size:20px;transition:background .2s,transform .2s}
.ga-fret-cell.trail{border-radius:8px;background:rgba(65,221,130,.26);color:#98ffc1;box-shadow:0 0 14px rgba(52,225,128,.15)}
.ga-fret-cell.food{border-radius:8px;background:radial-gradient(circle,rgba(247,199,94,.36),rgba(180,92,34,.15));animation:gaPulseFood .8s ease-in-out infinite alternate;font-size:23px}
/* Defender: advancing enemies, amplifier and shots */
.ga-defender-field{position:relative;min-height:240px;border:1px solid rgba(176,134,255,.21);border-radius:18px;overflow:hidden;background:radial-gradient(ellipse at 52% 130%,rgba(133,43,129,.4),transparent 60%),linear-gradient(180deg,#131a36,#20172e 70%,#352240)}
.ga-defender-field:before{content:'';position:absolute;bottom:20%;width:100%;height:1px;background:#896cb766;box-shadow:0 0 12px #976cb7;transform:skewY(-4deg)}
.ga-amp{position:absolute;left:4%;bottom:20%;display:flex;flex-direction:column;align-items:center;font-size:66px;filter:drop-shadow(0 0 12px rgba(100,184,255,.35));z-index:1}
.ga-amp small{font-size:10px;color:#bedaff;font-weight:900}
.ga-enemy{position:absolute;bottom:24%;display:flex;align-items:center;flex-direction:column;gap:2px;transition:left .045s linear;animation:gaEnemyHover 1.1s ease-in-out infinite alternate}
.ga-enemy-monster{font-size:clamp(45px,7vw,75px);filter:drop-shadow(0 0 14px #d16cf988)}
.ga-enemy strong{background:#281b37;border:1px solid #9b70cb;border-radius:30px;padding:4px 15px;font-size:18px}
.ga-shot{position:absolute;left:12%;bottom:40%;opacity:0;font-size:48px;z-index:2;pointer-events:none}
.ga-shot.fire{opacity:1;animation:gaLaser .4s ease-out forwards}
.ga-defense-readout{display:flex;align-items:center;justify-content:center;gap:15px;flex-wrap:wrap;margin-top:13px}
.ga-tone-pills{display:flex;gap:10px}.ga-tone-pills strong{border:1px solid rgba(182,147,255,.4);padding:8px 21px;font-size:20px;border-radius:12px;background:rgba(124,80,176,.20)}
.ga-tone-pills strong.matched{background:rgba(49,181,124,.28);border-color:#69e8ae;color:#a9ffd2}
/* Ninja: flowing rhythmic objects */
.ga-ninja-stage{position:relative;height:270px;border-radius:18px;border:1px solid rgba(77,157,250,.25);overflow:hidden;background:radial-gradient(ellipse at 20% 90%,rgba(23,111,192,.35),transparent 65%),linear-gradient(135deg,#12192b,#0d1730)}
.ga-ninja-stage:after{content:'';position:absolute;bottom:30%;height:1px;width:100%;background:rgba(150,183,255,.15)}
.ga-ninja-lane{height:100%;position:relative}
.ga-ninja-hitline{position:absolute;left:24%;top:15%;height:70%;width:4px;background:#67d9ff;border-radius:9px;box-shadow:0 0 12px #67d9ff,0 0 24px #4b7fff;z-index:4}
.ga-beat{position:absolute;top:37%;width:52px;height:52px;display:grid;place-items:center;border-radius:17px;font-size:32px;font-weight:950;transform:translateX(-50%);background:linear-gradient(145deg,#8a48d6,#303cac);border:1px solid #b492ff;box-shadow:0 0 19px #7255c66b;z-index:2}
.ga-beat.good{background:rgba(37,221,132,.5);box-shadow:0 0 20px #33d392}.ga-beat.miss{background:rgba(242,84,84,.45)}
.ga-ninja-hero{position:absolute;left:11%;bottom:16%;font-size:64px;filter:drop-shadow(0 0 15px #55aaffaa)}
.ga-ninja-target{position:absolute;left:24%;top:9%;font-size:11px;color:#8fd7ff;transform:translateX(-50%);white-space:nowrap}

.ga-ninja-stage{height:340px}
.ga-ninja-hitline{left:24.5%;top:14%;height:68%}
.ga-ninja-target{left:25.5%;top:4%;font-size:11px}
.ga-ninja-fort{position:absolute;left:0;top:0;bottom:0;width:84px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:10px 8px 12px;border-right:1px solid rgba(144,171,221,.22);background:linear-gradient(180deg,rgba(20,26,42,.96),rgba(10,14,24,.96));z-index:5;box-shadow:inset -8px 0 18px rgba(0,0,0,.18)}
.ga-ninja-fort.damaged{animation:gaWallShake .4s ease}
.ga-ninja-fort-label{font-size:12px;font-weight:900;color:#f2f5ff;letter-spacing:.05em;margin:2px 0 8px}
.ga-ninja-wall{display:flex;flex-direction:column;gap:8px;flex:1;justify-content:center;width:100%}
.ga-ninja-wall-seg{display:grid;place-items:center;min-height:54px;border-radius:10px;background:linear-gradient(180deg,#c7ced8,#8a95a5);color:#26303d;font-weight:900;border:1px solid rgba(255,255,255,.35);box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 4px 10px rgba(0,0,0,.15)}
.ga-ninja-wall-seg.broken{background:linear-gradient(180deg,#653739,#361f23);color:#ffc4bb;border-color:#bb6d6d}
.ga-ninja-fort small{display:block;color:#d7e2ff;font-size:12px;font-weight:800;margin-top:6px}
.ga-ninja-feedback{left:34%;top:5%;font-size:20px;min-width:168px;padding:8px 12px;border-radius:999px;background:rgba(9,13,23,.82);border:1px solid rgba(255,255,255,.08)}
.ga-ninja-hit-burst{left:24.8%}
.ga-ninja-wall-impact{left:84px}


.ga-ninja-fort-crown{font-size:24px;line-height:1;margin-top:4px;filter:drop-shadow(0 0 8px rgba(255,212,120,.35))}
.ga-ninja-fort-label{margin-top:4px}
.ga-ninja-wall-seg{position:relative;overflow:hidden}.ga-ninja-wall-seg b{font-size:22px;letter-spacing:.06em}.ga-ninja-wall-seg i{position:absolute;width:8px;height:8px;border-radius:2px;background:rgba(70,79,93,.25);box-shadow:14px 0 0 rgba(70,79,93,.25),28px 0 0 rgba(70,79,93,.25);left:10px}.ga-ninja-wall-seg i:nth-child(2){top:12px}.ga-ninja-wall-seg i:nth-child(3){top:26px;left:18px}.ga-ninja-wall-seg i:nth-child(4){top:40px}
.ga-ninja-wall-seg.broken i{background:rgba(255,189,179,.25);box-shadow:14px 0 0 rgba(255,189,179,.22),28px 0 0 rgba(255,189,179,.22)}
.ga-ninja-duel{position:absolute;left:96px;right:14px;top:10px;height:44px;z-index:5;border-radius:999px;border:1px solid rgba(255,255,255,.10);background:linear-gradient(90deg,rgba(76,122,191,.16),rgba(143,74,76,.18));overflow:hidden}.ga-ninja-duel-track{position:absolute;inset:0;background:linear-gradient(90deg,rgba(99,191,136,.10) 0 40%,rgba(255,255,255,.05) 40% 60%,rgba(214,88,88,.12) 60%)}.ga-ninja-duel.good{box-shadow:0 0 20px rgba(63,185,80,.12)}.ga-ninja-duel.bad{box-shadow:0 0 20px rgba(248,81,73,.14)}
.ga-ninja-warrior,.ga-ninja-enemy{position:absolute;top:50%;transform:translate(-50%,-50%);font-size:25px;transition:left .25s ease}.ga-ninja-warrior{left:25%;filter:drop-shadow(0 0 8px rgba(113,209,255,.35))}.ga-ninja-enemy{left:78%;filter:drop-shadow(0 0 8px rgba(255,119,104,.30))}.ga-ninja-enemy.boss{font-size:29px}
.ga-ninja-duel-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:11px;font-weight:900;color:#f2f6ff;text-shadow:0 1px 4px rgba(0,0,0,.45);letter-spacing:.03em;white-space:nowrap}
.ga-ninja-bricks{position:absolute;left:88px;z-index:6;pointer-events:none;animation:gaBrickBurst .6s ease forwards}.ga-ninja-bricks span{position:absolute;font-size:18px}.ga-ninja-bricks span:nth-child(1){left:0;top:-14px}.ga-ninja-bricks span:nth-child(2){left:12px;top:0}.ga-ninja-bricks span:nth-child(3){left:3px;top:12px}
@keyframes gaBrickBurst{0%{opacity:0;transform:translate(-8px,-50%) scale(.45)}20%{opacity:1}100%{opacity:0;transform:translate(22px,-50%) scale(1.15)}}

/* Rocket: height follows measured cents, hold gauge */
.ga-rocket-layout{display:grid;grid-template-columns:minmax(160px,36%) 1fr;gap:22px}
.ga-rocket-track{min-height:285px;position:relative;border:1px solid rgba(123,162,234,.29);border-radius:18px;overflow:hidden;background:radial-gradient(ellipse at 50% 110%,rgba(23,130,204,.4),transparent 70%),linear-gradient(180deg,#10152e,#161f4a 50%,#21254d)}
.ga-rocket-track:before{content:'';position:absolute;left:50%;top:5%;height:90%;border-left:2px dashed rgba(180,208,255,.2)}
.ga-stars{position:absolute;top:15%;left:7%;right:0;letter-spacing:22px;color:#cde0ff;font-size:23px;animation:gaStars 5s linear infinite}
.ga-rocket-goal{position:absolute;top:4%;left:0;right:0;text-align:center;font-size:12px;color:#b8fcdf;font-weight:900}
.ga-rocket{position:absolute;left:50%;bottom:11%;font-size:52px;transform:translateX(-50%) rotate(-40deg);filter:drop-shadow(0 0 16px rgba(255,154,52,.5));transition:bottom .095s linear}
.ga-rocket-base{position:absolute;bottom:5%;left:0;right:0;text-align:center;font-size:11px;color:#cad4ed}
.ga-rocket-info{padding:10px 0}.ga-rocket-info h3{margin:0 0 10px}.ga-big-note{font-size:clamp(21px,3vw,30px);font-weight:950;color:#c9b3ff}
.ga-rocket-info p{color:#afbad8;font-size:13px;line-height:1.6}
.ga-cent-value{font-size:17px;color:#c2ffdf;font-weight:850;margin:25px 0 17px}
.ga-rocket-hold{font-size:12px;color:#c0cde6}.ga-rocket-hold strong{float:right;color:#d5ffe4}
.ga-rocket-hold>span{display:block;height:10px;margin-top:8px;border-radius:20px;background:rgba(164,172,224,.17);overflow:hidden}
.ga-rocket-hold i{display:block;width:0%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2dcf9d,#b1ffd2);transition:width .08s linear}
@keyframes gaBreathe{0%,100%{transform:scale(1);box-shadow:0 0 0 12px rgba(156,98,231,.09),0 0 42px rgba(164,93,241,.28)}50%{transform:scale(1.06);box-shadow:0 0 0 18px rgba(156,98,231,.08),0 0 68px rgba(164,93,241,.38)}}
@keyframes gaPulseFood{to{filter:brightness(1.4);transform:scale(1.07);box-shadow:0 0 23px rgba(245,188,67,.42)}}
@keyframes gaEnemyHover{to{transform:translateY(-13px)}}
@keyframes gaLaser{0%{left:12%;transform:scale(.6)}65%{opacity:1;left:70%;transform:scale(1.4)}100%{left:85%;opacity:0;transform:scale(2)}}
@keyframes gaStars{to{transform:translateY(16px)}}
@media(max-width:640px){.ga-shell{padding:12px}.ga-simon-pad{min-height:84px;border-radius:13px;padding:8px}.ga-simon-pad strong{font-size:16px}.ga-simon-grid{gap:6px}.ga-fret-labels,.ga-fretboard{grid-template-columns:36px repeat(9,minmax(0,1fr));gap:1px}.ga-fretboard{padding:5px}.ga-fret-cell{min-height:29px;font-size:12px;border-left-width:2px}.ga-fret-name{font-size:10px}.ga-rocket-layout{grid-template-columns:1fr}.ga-rocket-track{min-height:260px}.ga-defender-field{min-height:195px}.ga-topline h2{font-size:20px}}
@media(prefers-reduced-motion:reduce){.ga-orbit-circle,.ga-fret-cell.food,.ga-enemy,.ga-stars,.ga-shot.fire{animation:none!important}.ga-note-tile,.ga-simon-pad,.ga-rocket,.ga-enemy{transition:none!important}}


/* GuitarArcade 4.5 — actual playable scenes and legible fret/string feedback */
.ga-simon-guitar{display:flex;flex-direction:column;gap:8px;max-width:710px;margin:16px auto}
.ga-simon-guitar .ga-simon-pad{width:100%;min-height:63px;display:flex;flex-direction:row;gap:15px;justify-content:flex-start;text-align:left;padding:9px 14px;border-radius:13px;position:relative}
.ga-simon-wire{height:3px;flex:1;min-width:60px;background:linear-gradient(90deg,#dfe8f3,#6f84a3);box-shadow:0 0 7px #cedff9;opacity:.65;border-radius:12px}
.ga-simon-guitar .ga-simon-pad strong{min-width:26px;font-size:19px}.ga-simon-guitar .ga-simon-pad small{min-width:20px;font-size:20px}
.ga-simon-pad.ga-bad{animation:gaSimonBad .42s ease!important;border:2px solid #ff6565!important;background:#8d222f!important;opacity:1}
@keyframes gaSimonBad{0%,100%{transform:translateX(0)}25%{transform:translateX(-12px)}50%{transform:translateX(12px)}75%{transform:translateX(-6px)}}
.ga-fret-cell.open-string{border-left:0;border-bottom:2px solid #f4d4a4;box-shadow:inset -5px 0 rgba(246,228,182,.12);color:#f5e0ac;font-weight:900}
.ga-fret-cell.open-string:before{content:'';position:absolute;right:0;top:0;bottom:0;border-right:5px solid #e7c993;border-radius:4px}
.ga-fret-labels span:nth-child(2){font-weight:bold;color:#f4d4a4}
.ga-tone-pills strong small{display:block;font-size:10px;color:#d3bdf6;margin-top:6px}
.ga-defender-field{background:radial-gradient(ellipse at 52% 130%,rgba(133,43,129,.5),transparent 60%),repeating-linear-gradient(90deg,transparent,transparent 46px,rgba(180,100,230,.035) 47px),linear-gradient(180deg,#131a36,#20172e 70%,#352240)}
.ga-ninja-stage{height:340px}
.ga-ninja-lane-guide{position:absolute;width:100%;left:0;border-bottom:1px dashed rgba(139,182,252,.26);height:1px}
.ga-ninja-lane-guide>span{position:absolute;right:7px;bottom:2px;font-size:10px;color:#a6bcde;background:#141b2caa;padding:2px 4px}
.ga-ninja-stage .ga-beat{width:37px;height:37px;border-radius:12px;font-size:22px;margin-top:-18px}
.ga-ninja-hero{font-size:44px;left:10px;bottom:4px}.ga-ninja-target{top:4%}
.ga-tower-scene{height:245px;position:relative;overflow:hidden;margin:10px 0;border-radius:16px;border:1px solid #505e91;background:linear-gradient(#1d2458,#293f85 67%,#384b55)}
.ga-tower-clouds{position:absolute;top:16px;left:6%;font-size:23px;letter-spacing:20px;color:white;animation:gaClouds 12s linear infinite}
.ga-tower-structure{position:absolute;bottom:0;left:50%;transform:translateX(-50%);display:flex;flex-direction:column-reverse;align-items:center;gap:0;max-height:218px;overflow:hidden}
.ga-tower-floor{width:112px;height:21px;display:grid;place-items:center;font-size:14px;background:linear-gradient(110deg,#bdb2ca,#776d97);border:2px solid #d8c2c8;border-bottom:0;animation:gaRise .3s ease both}
.ga-tower-base{font-size:46px;height:55px;line-height:55px;z-index:1}
.ga-tower-label{position:absolute;bottom:9px;left:12px;background:#12182dbb;padding:6px 10px;border-radius:8px;color:#fff;font-weight:850;font-size:12px}
@keyframes gaRise{from{opacity:0;transform:translateY(-50px) scale(.6)}to{opacity:1;transform:none}}
@keyframes gaClouds{to{transform:translateX(60px)}}
.ga-echo-stars{color:#bba8ff;letter-spacing:9px;animation:gaClouds 4s ease-in-out infinite alternate}
@media(max-width:640px){.ga-ninja-stage{height:310px}.ga-ninja-lane-guide>span{font-size:9px}.ga-ninja-stage .ga-beat{width:32px;height:32px}.ga-ninja-fort{width:66px;padding:8px 4px}.ga-ninja-wall-seg{min-height:44px}.ga-ninja-feedback{left:46%;min-width:132px;font-size:14px;padding:6px 8px}.ga-ninja-wall-impact{left:66px}.ga-ninja-bricks{left:66px}.ga-ninja-duel{left:76px;right:8px;height:38px}.ga-ninja-warrior,.ga-ninja-enemy{font-size:20px}.ga-ninja-duel-label{font-size:9px}.ga-simon-guitar .ga-simon-pad{min-height:52px}}
@media(prefers-reduced-motion:reduce){.ga-simon-pad.ga-bad,.ga-tower-floor,.ga-tower-clouds,.ga-echo-stars{animation:none!important}}


/* GuitarArcade 4.5 - story layer over the tab-trainer challenges */
.ga-quest{margin-top:13px;padding:12px;border:1px solid #616a9b;border-radius:13px;background:linear-gradient(160deg,#1a183c,#131b2b);overflow:hidden}
.ga-quest-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;color:#d8d1ff;font-size:12px;letter-spacing:.05em}
.ga-quest-head span{color:#ffdf9a;font-weight:950}.ga-quest-field{position:relative;height:80px;margin:9px 0;background:linear-gradient(180deg,#202c56,#272657 62%,#332945);border-radius:10px;border-bottom:5px solid #82699c;overflow:hidden}
.ga-quest-field:after{content:'';position:absolute;left:5%;right:5%;bottom:6px;border-bottom:2px dashed #d8c3a988}
.ga-quest-hero{position:absolute;bottom:8px;font-size:30px;z-index:3;transform:translateX(-50%);transition:left .35s cubic-bezier(.2,.9,.1,1);filter:drop-shadow(0 0 10px #9bc4ff)}
.ga-quest-enemy{position:absolute;right:3%;bottom:21px;font-size:43px;z-index:2;filter:drop-shadow(0 0 12px #eb75f2)}
.ga-quest-checkpoints i{position:absolute;bottom:5px;width:5px;height:26px;border:1px solid #e9ce81;background:#e9ce8177}
.ga-quest-checkpoints i:after{content:'⚑';position:absolute;bottom:20px;left:-9px;color:#e9ce81;font-style:normal}
.ga-quest-checkpoints i.won{background:#78efb1;border-color:#78efb1}.ga-quest-checkpoints i.won:after{content:'✓';color:#81ffb0;font-weight:900}
.ga-quest-health{display:flex;align-items:center;gap:10px;font-size:11px;color:#cbd8e8}.ga-quest-health>div{flex:1;min-width:70px;height:9px;border:1px solid #8791c577;border-radius:100px;overflow:hidden;background:#13182c}
.ga-quest-health i{display:block;background:linear-gradient(90deg,#4bb7fc,#bf8bfb);height:100%;transition:width .3s ease}.ga-quest-health strong{color:#ffd193}
.ga-quest-tip{margin:8px 0 0;color:#bdc3db;font-size:11px;line-height:1.5}.ga-quest.boss{border-color:#ffad65;animation:gaQuestBoss 1.7s ease-in-out infinite alternate}
.ga-quest.boss .ga-quest-enemy{animation:gaEnemyHover .5s ease-in-out infinite alternate}
@keyframes gaQuestBoss{to{box-shadow:inset 0 0 24px #f99c5335}}
@media(prefers-reduced-motion:reduce){.ga-quest.boss,.ga-quest.boss .ga-quest-enemy,.ga-quest-hero{animation:none!important;transition:none!important}}


/* GuitarArcade 4.6 — bug-catching fly, hit feedback, damage and pitch diagnostics */
.ga-fly-track{flex:1;position:relative;min-height:30px;display:grid;place-items:center;pointer-events:none}
.ga-fly{font-size:30px;display:inline-block;filter:drop-shadow(0 0 8px #c7f8ff);animation:gaFlyHover .6s ease-in-out infinite alternate}
.ga-fly-escape{font-size:24px;position:absolute;animation:gaFlyAway .42s ease-in forwards}
@keyframes gaFlyHover{from{transform:translate(-7px,4px) rotate(-16deg)}to{transform:translate(8px,-5px) rotate(18deg)}}
@keyframes gaFlyAway{to{transform:translate(80px,-36px) rotate(45deg);opacity:0}}
.ga-simon-pad.ga-success{opacity:1!important;background:linear-gradient(90deg,#116c55,#308a55)!important;border:2px solid #7dffb9!important;box-shadow:0 0 26px #31df9eaa,inset 0 0 18px #72ffc344!important;animation:gaSimonWin .42s ease both}
.ga-simon-pad.ga-success .ga-simon-wire{background:#adffcc;box-shadow:0 0 16px #78ffad;opacity:1}
@keyframes gaSimonWin{0%{transform:scale(.98)}50%{transform:scale(1.045)}100%{transform:scale(1)}}
.ga-defender-field.ga-damaged{animation:gaDamage .55s ease;box-shadow:inset 0 0 90px #f04d4d66}
.ga-health{font-size:18px;color:#ffcdce;letter-spacing:2px}
.ga-cent-best{font-size:12px;line-height:1.7;color:#b4c9ff;background:#162445;border:1px solid #4b668c;border-radius:10px;padding:8px;margin-top:-10px;margin-bottom:18px}
@keyframes gaDamage{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
@media(prefers-reduced-motion:reduce){.ga-fly,.ga-fly-escape,.ga-simon-pad.ga-success,.ga-defender-field.ga-damaged{animation:none!important}}
.ga-warriors-duration-field{display:grid;gap:6px;margin-top:10px;padding:10px 12px;border:1px solid rgba(86,147,212,.3);border-radius:10px;background:rgba(31,111,235,.07)}.ga-warriors-duration-field select{width:100%;max-width:320px}.ga-temple-head #gaNinjaCountdown{font-weight:900;font-variant-numeric:tabular-nums;color:#ffe197;font-size:17px}

/* 4.15.3: voluntary creator support — never displayed as a pop-up or prerequisite. */
@media (min-width:901px){.sidebar{overflow-y:auto;scrollbar-width:thin}}
.gp-support-sidebar{padding:9px 10px 0}
.gp-support-link{display:flex;flex-direction:column;gap:4px;padding:11px 12px;border-radius:10px;border:1px solid rgba(116,183,154,.28);background:rgba(35,109,83,.10);color:#e6f8ee;text-decoration:none;font-size:13px;font-weight:750;line-height:1.35}
.gp-support-link span{font-size:11px;color:#a5beaf;font-weight:400}
.gp-support-link:hover,.gp-support-link:focus-visible{background:rgba(35,109,83,.24);border-color:#73b99a;color:#fff}
.gp-support-link:focus-visible,.gp-support-card-link:focus-visible{outline:2px solid #9ceec3;outline-offset:3px}
.gp-support-card{display:flex;align-items:center;justify-content:space-between;gap:20px}
.gp-support-card h3{margin:0 0 6px}
.gp-support-card p{margin:0;max-width:780px;line-height:1.6}
.gp-support-card-link{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:42px;padding:10px 15px;border-radius:10px;border:1px solid rgba(116,183,154,.4);background:rgba(35,109,83,.18);color:#e7fdf0;text-decoration:none;font-weight:700;font-size:13px}
.gp-support-card-link:hover{background:rgba(35,109,83,.34);border-color:#73b99a}
@media(max-width:700px){.gp-support-card{flex-direction:column;align-items:stretch}.gp-support-card-link{width:100%;box-sizing:border-box}}

/* 4.15.3: support link is always visible in the sticky top bar, before guitar/mic status. */
.gp-support-topbar-link{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 14px;border-radius:999px;border:1px solid rgba(247,189,91,.65);background:linear-gradient(110deg,rgba(144,94,32,.35),rgba(91,67,28,.24));color:#ffdf9d;text-decoration:none;font-size:13px;font-weight:850;line-height:1.2;white-space:nowrap;flex-shrink:0;box-shadow:0 0 0 1px rgba(247,189,91,.06),0 2px 12px rgba(0,0,0,.11)}
.gp-support-topbar-link:hover{color:#fff1cf;border-color:#ffd48c;background:linear-gradient(110deg,rgba(178,115,36,.46),rgba(121,85,30,.34))}
.gp-support-topbar-link:focus-visible{outline:2px solid #ffdf9d;outline-offset:3px}
.topbar-status{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap;min-width:0}
.topbar-status>.pill{white-space:nowrap}
.gp-support-home-live{margin-top:16px}
@media(max-width:1100px){.topbar{flex-wrap:wrap;align-items:flex-start}.topbar-status{margin-left:auto}}
@media(max-width:720px){.topbar-status{width:100%;justify-content:flex-start;margin-left:0}.gp-support-topbar-link{font-size:12px;padding:8px 12px}.topbar-status>.pill{font-size:11px}}


/* Fingerstyle in highway: show right-hand finger by the whole note colour instead of a floating letter badge. */
#highwayCard .note-chip.gp-pick--p:not(.hit):not(.miss),#tabCanvas .note-chip.gp-pick--p:not(.hit):not(.miss){background:var(--gp-pick-bg);border-color:var(--gp-pick-border);color:var(--gp-pick-ink)}
#highwayCard .note-chip.gp-pick--i:not(.hit):not(.miss),#tabCanvas .note-chip.gp-pick--i:not(.hit):not(.miss){background:var(--gp-pick-bg);border-color:var(--gp-pick-border);color:var(--gp-pick-ink)}
#highwayCard .note-chip.gp-pick--m:not(.hit):not(.miss),#tabCanvas .note-chip.gp-pick--m:not(.hit):not(.miss){background:var(--gp-pick-bg);border-color:var(--gp-pick-border);color:var(--gp-pick-ink)}
#highwayCard .note-chip.gp-pick--a:not(.hit):not(.miss),#tabCanvas .note-chip.gp-pick--a:not(.hit):not(.miss){background:var(--gp-pick-bg);border-color:var(--gp-pick-border);color:var(--gp-pick-ink)}
