:root{--navy:#062c4f;--navy2:#041f38;--blue:#0d86e8;--cyan:#16c7e8;--teal:#14b8a6;--ink:#12324f;--muted:#698099;--line:#dce7f1;--bg:#edf5fb;--card:#fff;--green:#0db27b;--purple:#7436e8;--danger:#e55353;--shadow:0 14px 42px rgba(5,46,82,.12);--radius:18px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.hidden{display:none!important}.eyebrow{display:inline-block;font-size:.73rem;letter-spacing:.13em;font-weight:900;color:var(--blue)}
.brand{display:flex;align-items:center;gap:.7rem;color:white}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.4);border-radius:50%;font-size:1.65rem}.brand strong{font-size:1.3rem;line-height:1}.brand em{color:var(--cyan);font-style:normal}.brand small{display:block;font-size:.72rem;opacity:.8;margin-top:.18rem}.btn{border:0;border-radius:11px;padding:.75rem 1.05rem;font-weight:800;transition:.2s}.btn:hover{transform:translateY(-1px)}.btn-primary{background:linear-gradient(135deg,var(--blue),#0667c2);color:#fff}.btn-success{background:linear-gradient(135deg,#16b880,#078c63);color:#fff}.btn-admin{background:linear-gradient(135deg,var(--purple),#5720bd);color:white}.btn-ghost{background:#eef6fd;color:#0a5f9e;border:1px solid #cfe2f3}.btn-large{padding:1rem 1.35rem;border-radius:14px}
/* landing */.landing-body{background:linear-gradient(#f7fbff,#edf5fb)}.landing-nav{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:2rem;padding:.85rem 4vw;background:linear-gradient(100deg,var(--navy2),#075381);box-shadow:0 8px 25px rgba(4,32,58,.16)}.landing-nav nav{margin-left:auto;display:flex;align-items:center;gap:1.3rem;color:#d9ecfb;font-weight:700}.landing-nav nav>a:not(.btn):hover{color:white}.hero{min-height:72vh;display:grid;grid-template-columns:minmax(380px,.85fr) minmax(520px,1.15fr);align-items:center;gap:3rem;padding:5rem 4vw;background:radial-gradient(circle at 20% 20%,rgba(22,199,232,.15),transparent 30%),linear-gradient(135deg,#f8fcff,#e8f5ff)}.hero-copy h1{font-size:clamp(2.7rem,5vw,5.4rem);line-height:.98;margin:.5rem 0 1.2rem;color:#062c4f;letter-spacing:-.045em}.hero-copy h1 span{color:#0b7ac8}.hero-copy p{font-size:1.18rem;line-height:1.7;color:#4c6680;max-width:750px}.hero-actions{display:flex;gap:.8rem;margin:1.8rem 0}.hero-pills{display:flex;flex-wrap:wrap;gap:.5rem}.hero-pills span{background:white;border:1px solid var(--line);border-radius:999px;padding:.45rem .75rem;font-size:.8rem;font-weight:800;color:#45627e}.hero-visual img{width:100%;border-radius:24px;box-shadow:0 24px 60px rgba(4,42,76,.24);border:8px solid rgba(255,255,255,.9)}.container{width:min(1200px,92vw);margin:auto}.feature-section,.account-section{padding:5rem 0}.section-head{text-align:center;margin-bottom:2rem}.section-head h2{font-size:2.2rem;margin:.3rem 0}.feature-grid,.account-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.feature-grid article,.account-grid article{background:white;border:1px solid var(--line);border-radius:18px;padding:1.4rem;box-shadow:var(--shadow)}.feature-grid article>span,.account-grid article>span{font-size:2rem}.feature-grid h3,.account-grid h3{margin:.7rem 0 .4rem}.feature-grid p,.account-grid p{color:var(--muted);line-height:1.6}.missions-preview{padding:5rem 0;background:linear-gradient(135deg,#062c4f,#074e78);color:white}.missions-preview .eyebrow{color:#67dbef}.mission-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:.9rem}.mission-cards article{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.15);border-radius:16px;padding:1.2rem}.mission-cards b{font-size:2rem;color:#62d8ee}.mission-cards p{color:#c5dded;line-height:1.55}.account-grid{grid-template-columns:repeat(3,1fr)}.student-card{border-top:4px solid var(--blue)!important}.teacher-card{border-top:4px solid var(--teal)!important}.admin-card{border-top:4px solid var(--purple)!important}.landing-footer{padding:2rem;text-align:center;background:#031c32;color:#9bc1dc}
/* app */.app-body{min-height:100vh;background:#eff6fb;overflow-x:hidden}.topbar{height:74px;position:sticky;top:0;z-index:50;display:flex;align-items:center;padding:0 18px;background:linear-gradient(95deg,#031f38,#075786);color:white;box-shadow:0 5px 20px rgba(5,43,74,.18)}.app-brand{min-width:290px}.topbar-spacer{flex:1}.status-chip{font-size:.83rem;padding:.5rem .75rem;border-radius:999px;background:rgba(255,255,255,.13);font-weight:800}.status-chip.online{color:#c6ffeb}.status-chip.offline{color:#ffe8ae}.lang-btn,.icon-btn,.user-chip{border:0;background:transparent;color:inherit}.lang-btn{font-weight:900;padding:.7rem}.lang-btn span{opacity:.4;margin:0 .35rem}.icon-btn{width:40px;height:40px;border-radius:10px;display:grid;place-items:center}.icon-btn:hover{background:rgba(255,255,255,.1)}.icon-btn.small{width:30px;height:30px;color:var(--ink)}.user-chip{display:flex;align-items:center;gap:.6rem;padding:.35rem .5rem .35rem .35rem;text-align:left;border-left:1px solid rgba(255,255,255,.2);margin-left:.35rem}.user-chip small{display:block;opacity:.7}.avatar{width:38px;height:38px;border-radius:50%;background:#dfefff;color:#174e79;display:grid;place-items:center}.app-shell{display:grid;grid-template-columns:190px 1fr;min-height:calc(100vh - 74px)}.sidebar{background:linear-gradient(180deg,#052a4a,#06223c);color:#d8ecfa;padding:1rem .7rem;position:sticky;top:74px;height:calc(100vh - 74px);display:flex;flex-direction:column}.sidebar nav{display:grid;gap:.32rem}.sidebar button{border:0;background:transparent;color:inherit;border-radius:10px;padding:.78rem .85rem;display:flex;align-items:center;gap:.75rem;text-align:left;font-weight:750}.sidebar button span{width:24px;text-align:center;font-size:1.05rem}.sidebar button:hover,.sidebar button.active{background:linear-gradient(90deg,#0a8ce5,#12a9e5);color:white}.sidebar-foot{margin-top:auto;padding:.8rem;font-size:.78rem;color:#74cde4;display:grid}.sidebar-foot span{font-size:1rem;color:white;margin-top:.2rem}.main-stage{min-width:0;padding:14px 16px 30px}.stage-toolbar{display:flex;align-items:center;gap:1rem;background:white;border:1px solid var(--line);border-radius:15px;padding:.75rem 1rem;margin-bottom:12px;box-shadow:0 7px 22px rgba(20,68,104,.07)}.stage-toolbar h1{font-size:1.2rem;margin:.1rem 0}.stage-toolbar small{color:var(--muted)}.xp-card{margin-left:auto;display:flex;align-items:center;gap:.65rem;min-width:180px}.xp-card>span{font-size:1.6rem}.progress{height:7px;background:#dbe8f3;border-radius:8px;margin-top:.3rem;overflow:hidden}.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cyan),var(--blue));transition:.4s}.view{display:none}.active-view{display:block}.lab-grid{display:grid;grid-template-columns:minmax(650px,1.55fr) minmax(360px,.75fr);gap:12px}.lab-workspace,.lab-panel>*{background:white;border:1px solid var(--line);border-radius:16px;box-shadow:0 7px 22px rgba(20,68,104,.06)}.mission-banner{padding:1rem 1.15rem;display:flex;align-items:center;gap:1rem;background:linear-gradient(100deg,#07365f,#0a76b7);color:white;border-radius:16px 16px 0 0}.mission-banner h2{font-size:1.12rem;margin:.15rem 0}.mission-banner p{margin:.15rem 0;color:#d7edf9}.mission-kicker{font-size:.65rem;letter-spacing:.12em;font-weight:900;color:#71daf1}.mission-score{margin-left:auto;text-align:center;background:rgba(255,255,255,.12);padding:.5rem .75rem;border-radius:12px}.mission-score b{font-size:1.1rem}.mission-score small{display:block;color:#cfe7f5}.bench-wrap{padding:12px}.bench-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.7rem}.bench-head small{display:block;color:var(--muted);margin-top:.2rem}.bench-actions{display:flex;gap:.4rem}.mini-btn{border:1px solid var(--line);background:#f7fbff;color:#35617f;padding:.45rem .65rem;border-radius:9px;font-weight:800}.component-tray{display:grid;grid-template-columns:repeat(5,1fr);gap:.55rem;margin-bottom:.7rem}.component-card{border:1px solid #cfe0ef;background:#f8fcff;border-radius:13px;padding:.55rem;display:flex;align-items:center;gap:.5rem;min-height:62px;text-align:left;color:var(--ink);transition:.2s}.component-card:hover,.component-card.selected{border-color:#1e9be7;box-shadow:0 0 0 3px rgba(30,155,231,.12)}.component-card.placed{opacity:.35}.device{width:54px;height:38px;display:grid;place-items:center;border-radius:7px;background:#16334a;color:#97ffc5;font:700 .72rem monospace;box-shadow:inset 0 0 0 2px #0b1c2a}.device.resistor{background:#d99c52;color:#4d2d0f;font-size:1.4rem}.device.switch{font-size:1.5rem;color:#eaf7ff}.circuit-board{position:relative;min-height:370px;border-radius:16px;overflow:hidden;background:linear-gradient(rgba(255,255,255,.86),rgba(255,255,255,.86)),linear-gradient(#cfe1ef 1px,transparent 1px),linear-gradient(90deg,#cfe1ef 1px,transparent 1px);background-size:auto,28px 28px,28px 28px;border:1px solid #cbddea;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:1fr 1fr;gap:18px;padding:44px 36px}.circuit-board:before{content:"STÓŁ LABORATORYJNY";position:absolute;left:18px;top:13px;font-size:.65rem;letter-spacing:.14em;font-weight:900;color:#6b8ca5}.drop-slot{position:relative;z-index:2;border:2px dashed #9ab9cf;border-radius:15px;min-height:115px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(247,252,255,.9);color:#6f8aa0;text-align:center}.drop-slot small{font-size:.7rem}.drop-slot strong{font-size:.78rem;margin-top:.2rem}.drop-slot.filled{border-style:solid;border-color:#209ce7;background:white;color:#164b73;box-shadow:0 8px 18px rgba(5,62,100,.12)}.drop-slot.filled:after{content:"✓";position:absolute;right:8px;top:7px;width:22px;height:22px;border-radius:50%;background:#0cb47e;color:white;display:grid;place-items:center;font-weight:900}.drop-slot.wrong{border-color:var(--danger);animation:shake .25s}.drop-slot .placed-device{font-size:2rem}.drop-slot .placed-device small{display:block;font-size:.7rem;color:#698099;margin-top:.25rem}.parallel-slot{grid-column:3;grid-row:2}.wire-decoration{position:absolute;border:5px solid #e44e45;border-radius:50%;opacity:.18}.wire-a{width:72%;height:58%;left:12%;top:15%}.wire-b{width:30%;height:45%;right:12%;bottom:7%;border-color:#202c38}.controls-row{display:grid;grid-template-columns:1.4fr .7fr auto auto;gap:.7rem;align-items:end;margin-top:.7rem}.controls-row label{font-size:.78rem;font-weight:800;color:#42617a}.controls-row input[type=range]{width:100%;margin-top:.4rem}.controls-row select{width:100%;padding:.72rem;border:1px solid var(--line);border-radius:10px;background:white}.lab-panel{display:grid;gap:10px;align-content:start}.metric-cards{display:grid!important;grid-template-columns:repeat(3,1fr);gap:8px;background:transparent!important;border:0!important;box-shadow:none!important}.metric-cards article{background:white;border:1px solid var(--line);border-radius:14px;padding:.8rem;text-align:center}.metric-cards small{display:block;font-size:.7rem;font-weight:900;color:var(--blue)}.metric-cards b{font-size:1.08rem}.panel-card{padding:.9rem}.panel-card p{font-size:.86rem;line-height:1.5;color:#567087}.panel-title{display:flex;align-items:center;gap:.5rem;margin-bottom:.7rem}.panel-title b{font-size:.92rem}.panel-title button{margin-left:auto}.table-scroll{overflow:auto}.table-card table{width:100%;border-collapse:collapse;font-size:.76rem}.table-card th,.table-card td{padding:.42rem .35rem;border-bottom:1px solid #e8f0f6;text-align:center}.table-card th{background:#f3f8fc;color:#577088}.empty-row td{color:#8aa0b1;padding:1rem}.chart-card canvas{width:100%;height:185px;border-radius:8px;background:#fbfdff}.choice-list{display:grid;gap:.45rem}.choice-list button{border:1px solid var(--line);background:#f8fbfe;text-align:left;padding:.65rem;border-radius:9px;color:#35546d}.choice-list button.correct{border-color:#21ad7e;background:#eafaf4}.choice-list button.wrong{border-color:#ef8d8d;background:#fff1f1}.conclusion-result{margin:.55rem 0 0!important;font-weight:800}.content-card{background:white;border:1px solid var(--line);border-radius:18px;padding:1.25rem;box-shadow:var(--shadow)}.section-head-inline{display:flex;align-items:center}.section-head-inline .btn{margin-left:auto}.mission-list{display:grid;gap:.7rem;margin-top:1rem}.mission-item{display:grid;grid-template-columns:50px 1fr auto;gap:.8rem;align-items:center;border:1px solid var(--line);border-radius:13px;padding:.75rem}.mission-number{width:42px;height:42px;border-radius:12px;background:#edf7ff;color:#0a80cf;display:grid;place-items:center;font-weight:900}.mission-item.done .mission-number{background:#e8faf4;color:#079a68}.mission-item h3{margin:0;font-size:1rem}.mission-item p{margin:.2rem 0 0;color:var(--muted);font-size:.82rem}.mission-item button{border:0;border-radius:9px;padding:.55rem .75rem;background:#edf6fd;color:#0a6baa;font-weight:800}.setting{display:block;margin:.8rem 0}.toast-host{position:fixed;right:18px;bottom:18px;z-index:100;display:grid;gap:.5rem}.toast{background:#0a2e4c;color:white;padding:.8rem 1rem;border-radius:12px;box-shadow:0 14px 30px rgba(0,0,0,.18);max-width:330px;animation:toastIn .25s}.toast.ok{border-left:4px solid #23c994}.toast.warn{border-left:4px solid #ffbf3d}.toast.error{border-left:4px solid #f16d6d}
/* modal */.modal-backdrop{position:fixed;inset:0;z-index:90;background:rgba(3,24,42,.64);backdrop-filter:blur(7px);display:grid;place-items:center;padding:1rem}.modal-backdrop.closed{display:none}.account-modal{width:min(920px,96vw);max-height:92vh;overflow:auto;background:white;border-radius:22px;box-shadow:0 30px 90px rgba(0,0,0,.3)}.modal-head{display:flex;align-items:center;padding:1.2rem 1.3rem;border-bottom:1px solid var(--line)}.modal-head h2{margin:.2rem 0 0}.modal-head .icon-btn{margin-left:auto;color:#43627a}.account-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;padding:1rem 1.2rem 0}.account-tabs button{border:1px solid var(--line);background:#f5f9fc;padding:.8rem;border-radius:11px;font-weight:850;color:#486781}.account-tabs button.active{background:#e9f5ff;color:#0877c6;border-color:#a8d4f0}.account-pane{display:none;padding:1rem 1.2rem 1.2rem}.account-pane.active{display:block}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.login-box{border:1px solid var(--line);background:#fbfdff;border-radius:15px;padding:1rem}.login-box.single{max-width:520px;margin:auto}.login-box h3{margin:.1rem 0}.login-box p{color:var(--muted);font-size:.86rem}.login-box label{display:block;font-size:.78rem;font-weight:800;color:#47647b;margin:.65rem 0}.login-box input{display:block;width:100%;margin-top:.3rem;border:1px solid #cdddea;border-radius:9px;padding:.7rem;background:white}.login-box .btn{width:100%;margin-top:.25rem}.login-box hr{border:0;border-top:1px solid var(--line);margin:1rem 0}.profile-list{display:grid;gap:.4rem;margin-top:.7rem}.profile-list button{border:1px solid var(--line);background:white;border-radius:9px;padding:.65rem;text-align:left;color:#375a74;font-weight:800}
.high-contrast{--bg:#fff;--ink:#000;--muted:#222;--line:#000}.reduced-motion *{animation:none!important;transition:none!important}@keyframes shake{50%{transform:translateX(6px)}}@keyframes toastIn{from{transform:translateY(10px);opacity:0}}.mobile-only{display:none}
@media(max-width:1200px){.lab-grid{grid-template-columns:1fr}.lab-panel{grid-template-columns:1fr 1fr}.metric-cards{grid-column:1/-1}.conclusion-card{grid-column:1/-1}.hero{grid-template-columns:1fr}.feature-grid{grid-template-columns:repeat(2,1fr)}.mission-cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.landing-nav nav>a:not(.btn){display:none}.landing-nav{padding:.7rem 1rem}.hero{padding:3rem 1rem}.hero-copy h1{font-size:2.8rem}.feature-grid,.account-grid,.mission-cards{grid-template-columns:1fr}.topbar{height:64px}.app-brand{min-width:0}.app-brand small{display:none}.mobile-only{display:grid}.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-230px;top:64px;width:220px;height:calc(100vh - 64px);z-index:60;transition:.25s}.sidebar.open{left:0}.main-stage{padding:8px}.user-chip span:not(.avatar){display:none}.status-chip{display:none}.lab-panel{grid-template-columns:1fr}.component-tray{grid-template-columns:repeat(2,1fr)}.circuit-board{grid-template-columns:1fr 1fr;min-height:520px;padding:42px 18px}.parallel-slot{grid-column:2;grid-row:2}.controls-row{grid-template-columns:1fr 1fr}.controls-row .btn{width:100%}.two-col{grid-template-columns:1fr}.stage-toolbar{position:sticky;top:68px;z-index:30}.mission-banner{align-items:flex-start}.xp-card{min-width:130px}.metric-cards{grid-template-columns:repeat(3,1fr)} }

.admin-tools-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1rem}.server-result{font-weight:800;color:#0a6f9f}.role-nav{margin-top:.15rem}@media(max-width:820px){.admin-tools-grid{grid-template-columns:1fr}}

/* v0.1.1 — stabilny układ laboratorium + walidacja tworzenia administratora */
.lab-grid{grid-template-columns:minmax(0,1.55fr) minmax(320px,.75fr)}
.lab-workspace,.lab-panel,.bench-wrap,.circuit-board,.controls-row{min-width:0;max-width:100%;box-sizing:border-box}
.lab-workspace{overflow:hidden}
.lab-panel{min-width:0}
.circuit-board{width:100%;grid-template-columns:repeat(4,minmax(0,1fr))}
.drop-slot{min-width:0;overflow:hidden;padding:.45rem}
.drop-slot strong,.drop-slot small{max-width:100%;overflow-wrap:anywhere}
.controls-row{grid-template-columns:minmax(180px,1.4fr) minmax(105px,.7fr) minmax(145px,auto) minmax(135px,auto)}
.form-hint{margin:.4rem 0 .7rem;color:#59748a;font-size:.78rem;line-height:1.4}
#adminPasswordConfirmLabel:not(.hidden) input{border-color:#9fcce8}

/* Po uwzględnieniu 190 px menu bocznego dwa panele nie mieszczą się wygodnie
   na typowych ekranach 1280–1440 px. Prawy panel przechodzi wtedy pod laboratorium. */
@media(max-width:1480px){
  .lab-grid{grid-template-columns:minmax(0,1fr)}
  .lab-panel{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metric-cards{grid-column:1/-1}
  .conclusion-card{grid-column:1/-1}
  .lab-workspace{overflow:visible}
}
@media(max-width:980px){
  .lab-panel{grid-template-columns:minmax(0,1fr)}
  .metric-cards,.conclusion-card{grid-column:auto}
  .circuit-board{grid-template-columns:repeat(2,minmax(0,1fr));min-height:520px;padding:42px 18px}
  .parallel-slot{grid-column:2;grid-row:2}
  .controls-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}
@media(max-width:560px){
  .circuit-board{grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(105px,auto);min-height:auto;padding:42px 14px 18px}
  .parallel-slot{grid-column:auto;grid-row:auto}
  .controls-row{grid-template-columns:minmax(0,1fr)}
  .metric-cards{grid-template-columns:minmax(0,1fr)}
}


/* v0.1.2 — chowane menu boczne jak w CyberSafe EDU + stopka */
.app-shell{transition:grid-template-columns .24s ease}
.sidebar{transition:width .24s ease,left .24s ease,padding .24s ease}
.sidebar-control{display:flex;justify-content:flex-end;margin:0 0 .45rem}
.sidebar-toggle{width:100%;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06);color:#d8ecfa;border-radius:10px;padding:.58rem .7rem;display:flex;align-items:center;gap:.7rem;font-weight:800;white-space:nowrap;overflow:hidden}
.sidebar-toggle:hover{background:rgba(255,255,255,.12);color:#fff}
.sidebar-toggle>span:first-child{width:24px;min-width:24px;text-align:center;font-size:1.35rem;line-height:1;transition:transform .24s ease}
.sidebar .nav-label{min-width:0;white-space:nowrap;overflow:hidden;transition:opacity .16s ease,max-width .24s ease}
.app-shell.sidebar-collapsed{grid-template-columns:68px minmax(0,1fr)}
.app-shell.sidebar-collapsed .sidebar{padding-left:.5rem;padding-right:.5rem}
.app-shell.sidebar-collapsed .sidebar button{justify-content:center;gap:0;padding-left:.55rem;padding-right:.55rem}
.app-shell.sidebar-collapsed .sidebar button>span:first-child{width:28px;min-width:28px}
.app-shell.sidebar-collapsed .sidebar .nav-label{opacity:0;max-width:0;width:0;pointer-events:none}
.app-shell.sidebar-collapsed .sidebar-foot{display:none}
.app-shell.sidebar-collapsed .sidebar-toggle>span:first-child{transform:rotate(180deg)}
.app-shell.sidebar-collapsed .sidebar-toggle{width:100%;justify-content:center}
.main-stage{display:flex;flex-direction:column;min-height:calc(100vh - 74px)}
.active-view{flex:0 0 auto}
.app-footer{margin-top:auto;padding:1.15rem .75rem .2rem;text-align:center;color:#688197;font-size:.78rem}
.app-footer a{font-weight:850;color:#0b72b7}
.app-footer a:hover{text-decoration:underline}

@media(max-width:820px){
  .sidebar-control{display:none}
  .app-shell.sidebar-collapsed{grid-template-columns:1fr}
  .app-shell.sidebar-collapsed .sidebar{padding:1rem .7rem}
  .app-shell.sidebar-collapsed .sidebar button{justify-content:flex-start;gap:.75rem;padding:.78rem .85rem}
  .app-shell.sidebar-collapsed .sidebar .nav-label{opacity:1;max-width:none;width:auto;pointer-events:auto}
  .app-shell.sidebar-collapsed .sidebar-foot{display:grid}
  .main-stage{min-height:calc(100vh - 64px)}
  .app-footer{padding-bottom:.7rem}
}
/* korekta etykiet po dodaniu trybu zwiniętego */
.sidebar .nav-label{width:auto;text-align:left;font-size:inherit;flex:1}
.app-shell.sidebar-collapsed .sidebar .nav-label{flex:0 0 0;width:0!important}
@media(max-width:820px){.app-shell.sidebar-collapsed .sidebar .nav-label{width:auto!important;flex:1}}

/* v0.1.3 — pakiet animacji edukacyjnych i mikrointerakcji */
:root{--ease-spring:cubic-bezier(.2,.85,.25,1.12);--flow-speed:1.8s}

/* LANDING: żywe, ale lekkie tło */
.hero{position:relative;overflow:hidden;isolation:isolate}
.hero-copy,.hero-visual{position:relative;z-index:2}
.physics-floaters{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.physics-floaters span{position:absolute;color:#0875bd;font-weight:900;opacity:.09;filter:blur(.1px);animation:formulaFloat 9s ease-in-out infinite}
.physics-floaters span:nth-child(1){left:5%;top:14%;font-size:2rem;animation-delay:-1s}
.physics-floaters span:nth-child(2){left:31%;top:76%;font-size:1.35rem;animation-delay:-4s}
.physics-floaters span:nth-child(3){right:6%;top:10%;font-size:1.6rem;animation-delay:-2.5s}
.physics-floaters span:nth-child(4){right:33%;top:57%;font-size:4.5rem;opacity:.055;animation-delay:-6s}
.physics-floaters span:nth-child(5){left:10%;bottom:8%;font-size:1.4rem;animation-delay:-3s}
.physics-floaters span:nth-child(6){right:15%;bottom:13%;font-size:2.2rem;animation-delay:-7s}
.hero-visual{transform:perspective(1200px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .35s var(--ease-spring)}
.hero-visual img{animation:heroBreathe 5.5s ease-in-out infinite;transition:box-shadow .35s,filter .35s}
.hero-visual:hover img{box-shadow:0 32px 80px rgba(4,42,76,.3);filter:saturate(1.04)}
.reveal{opacity:0;transform:translateY(18px) scale(.99);transition:opacity .55s ease var(--reveal-delay,0ms),transform .65s var(--ease-spring) var(--reveal-delay,0ms)}
.reveal.visible{opacity:1;transform:none}
.feature-grid article,.mission-cards article,.account-grid article{transition:transform .25s var(--ease-spring),box-shadow .25s,border-color .25s}
.feature-grid article:hover,.account-grid article:hover{transform:translateY(-6px);box-shadow:0 20px 45px rgba(5,46,82,.16);border-color:#b6d8ef}
.mission-cards article:hover{transform:translateY(-6px) rotate(-.3deg);background:rgba(255,255,255,.14)}
.brand-mark{animation:atomPulse 3.8s ease-in-out infinite}
.status-chip.online::first-letter{animation:statusPulse 1.6s infinite}

/* APLIKACJA: widoki i nawigacja */
.active-view{animation:viewEnter .35s ease both}
.sidebar button{position:relative;overflow:hidden;transition:background .22s,transform .18s var(--ease-spring),color .22s}
.sidebar button:hover{transform:translateX(3px)}
.app-shell.sidebar-collapsed .sidebar button:hover{transform:translateY(-2px)}
.sidebar button.active::after{content:"";position:absolute;left:0;top:18%;bottom:18%;width:3px;border-radius:4px;background:#9cf4ff;box-shadow:0 0 12px #6fe8ff}
.sidebar-toggle>span:first-child{filter:drop-shadow(0 0 6px rgba(103,219,239,.45))}
.stage-toolbar{animation:toolbarDrop .45s ease both}

/* Laboratorium: delikatny ambient */
.lab-workspace{position:relative}
.mission-banner{position:relative;overflow:hidden}
.mission-banner::after{content:"";position:absolute;inset:-120% -40%;background:linear-gradient(110deg,transparent 42%,rgba(255,255,255,.13) 50%,transparent 58%);transform:translateX(-45%);animation:missionShine 7s ease-in-out infinite;pointer-events:none}
.mission-banner.mission-swap{animation:missionSwap .42s var(--ease-spring)}
.mission-score{transition:transform .25s var(--ease-spring),background .25s}
.mission-score.progress-pop{animation:progressPop .48s var(--ease-spring)}

.component-card{position:relative;overflow:hidden;transform-origin:center;transition:transform .2s var(--ease-spring),border-color .2s,box-shadow .2s,opacity .2s}
.component-card:hover{transform:translateY(-4px) scale(1.015)}
.component-card.selected{animation:selectedPulse 1.15s ease-in-out infinite}
.component-card.placed{transform:scale(.96);filter:saturate(.7)}
.device{transition:transform .22s var(--ease-spring),box-shadow .22s,filter .22s}
.component-card:hover .device{transform:scale(1.06)}
.drop-slot{transition:border-color .2s,background .2s,box-shadow .25s,transform .25s var(--ease-spring)}
.drop-slot.slot-hover{transform:scale(1.018);border-color:#1e9be7;background:#edf8ff;box-shadow:0 0 0 5px rgba(30,155,231,.1)}
.drop-slot.just-placed{animation:slotPlace .52s var(--ease-spring)}
.drop-slot.filled:after{animation:checkPop .38s var(--ease-spring)}
.drop-slot .placed-device{animation:deviceLand .45s var(--ease-spring)}

.circuit-board{--flow-speed:1.8s;transition:box-shadow .35s,border-color .35s,background .35s}
.circuit-board.circuit-live{border-color:#78d6ef;box-shadow:inset 0 0 34px rgba(19,190,225,.08),0 0 0 3px rgba(20,199,232,.06)}
.wire-decoration{transition:opacity .35s,border-color .35s,filter .35s}
.circuit-board.circuit-live .wire-decoration{opacity:.44;filter:drop-shadow(0 0 4px rgba(255,90,80,.35));animation:wireGlow 1.4s ease-in-out infinite alternate}
.circuit-board.circuit-live .wire-b{filter:drop-shadow(0 0 4px rgba(34,89,126,.4))}
.current-flow{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .25s}
.circuit-board.circuit-live .current-flow{opacity:1}
.current-flow i{position:absolute;width:8px;height:8px;border-radius:50%;background:#42e5ff;box-shadow:0 0 10px #18c7e8,0 0 18px rgba(24,199,232,.65);left:15%;top:20%;animation:chargeLoop var(--flow-speed) linear infinite}
.current-flow i:nth-child(2){animation-delay:calc(var(--flow-speed) * -.125)}
.current-flow i:nth-child(3){animation-delay:calc(var(--flow-speed) * -.25)}
.current-flow i:nth-child(4){animation-delay:calc(var(--flow-speed) * -.375)}
.current-flow i:nth-child(5){animation-delay:calc(var(--flow-speed) * -.5)}
.current-flow i:nth-child(6){animation-delay:calc(var(--flow-speed) * -.625)}
.current-flow i:nth-child(7){animation-delay:calc(var(--flow-speed) * -.75)}
.current-flow i:nth-child(8){animation-delay:calc(var(--flow-speed) * -.875)}
.circuit-board.circuit-live .drop-slot.filled{box-shadow:0 8px 18px rgba(5,62,100,.12),0 0 18px rgba(22,199,232,.1)}
.circuit-board.circuit-live .drop-slot[data-slot="switch"] .placed-device{animation:switchClick .35s var(--ease-spring)}

.circuit-status{margin-left:auto;display:flex;align-items:center;gap:.45rem;border:1px solid #d6e4ee;border-radius:999px;padding:.38rem .62rem;font-size:.72rem;font-weight:850;color:#657e91;background:#f7fbfe;white-space:nowrap;transition:.25s}
.circuit-status i{width:8px;height:8px;border-radius:50%;background:#9bb0c0;box-shadow:0 0 0 3px rgba(155,176,192,.12);transition:.25s}
.circuit-status.live{color:#067653;border-color:#a9e6d3;background:#edfbf6}
.circuit-status.live i{background:#10b981;box-shadow:0 0 0 4px rgba(16,185,129,.12),0 0 12px rgba(16,185,129,.55);animation:statusPulse 1.15s infinite}

.metric-cards article{position:relative;overflow:hidden;transition:transform .22s var(--ease-spring),box-shadow .22s}
.metric-cards article.metric-pulse{animation:metricPulse .45s var(--ease-spring)}
.metric-cards article::after{content:"";position:absolute;inset:auto 0 0;height:2px;background:linear-gradient(90deg,transparent,#16c7e8,transparent);transform:translateX(-100%)}
.circuit-board.circuit-live~.controls-row{} /* marker dla czytelności CSS */
.metric-cards.live article::after{animation:meterSweep 1.9s linear infinite}

.table-card tbody tr.measurement-new{animation:rowIn .48s var(--ease-spring)}
.chart-card{position:relative;overflow:hidden}
.chart-card.chart-pulse{animation:chartPulse .5s var(--ease-spring)}
.choice-list button{transition:transform .2s var(--ease-spring),border-color .2s,background .2s,box-shadow .2s}
.choice-list button:hover{transform:translateX(4px)}
.choice-list button.correct{animation:correctAnswer .55s var(--ease-spring)}
.choice-list button.wrong{animation:shake .3s}

/* XP, sukces, konfetti */
.xp-card>span{display:inline-block;transform-origin:center}
.xp-card.xp-gain>span{animation:starBurst .7s var(--ease-spring)}
.xp-card.xp-gain b{animation:xpGlow .75s ease}
.progress i{position:relative;overflow:visible}
.progress i::after{content:"";position:absolute;right:-4px;top:-3px;width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 0 12px #16c7e8;opacity:.9}
.celebration-layer{position:fixed;inset:0;z-index:120;pointer-events:none;display:grid;place-items:center;overflow:hidden}
.success-badge{position:relative;z-index:2;min-width:min(360px,86vw);text-align:center;color:#fff;background:linear-gradient(135deg,#063d66,#0a8dd3);border:1px solid rgba(255,255,255,.24);border-radius:22px;padding:1.3rem 1.5rem;box-shadow:0 28px 80px rgba(3,32,55,.34);animation:successBadge 1.5s ease both}
.success-badge .success-icon{display:block;font-size:3rem;animation:trophyBounce .7s var(--ease-spring)}
.success-badge b{display:block;font-size:1.35rem;margin:.25rem 0}
.success-badge small{color:#c9effa;font-weight:800}
.confetti-piece{position:absolute;left:50%;top:44%;width:8px;height:14px;border-radius:2px;background:hsl(var(--hue),85%,58%);transform:translate(-50%,-50%) rotate(var(--rot));animation:confettiFly 1.25s cubic-bezier(.15,.7,.25,1) forwards;animation-delay:var(--delay)}

/* Toasty, ripple i przyciski */
.toast{position:relative;overflow:hidden;transform-origin:right bottom;animation:toastIn .32s var(--ease-spring),toastOut .25s ease 2.95s forwards}
.toast::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:rgba(255,255,255,.45);transform-origin:left;animation:toastTimer 3.05s linear forwards}
.btn,.mini-btn,.mission-item button{position:relative;overflow:hidden;transition:transform .16s var(--ease-spring),box-shadow .2s,filter .2s}
.btn:active,.mini-btn:active,.mission-item button:active{transform:scale(.965)}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.38);transform:translate(-50%,-50%) scale(0);animation:ripple .52s ease-out;pointer-events:none}

/* Pasek zakresu: lekko aktywny wizualnie */
input[type="range"]{accent-color:#0d86e8}
input[type="range"]::-webkit-slider-thumb{transition:transform .16s var(--ease-spring);cursor:grab}
input[type="range"]:active::-webkit-slider-thumb{transform:scale(1.25);cursor:grabbing}

/* Keyframes */
@keyframes formulaFloat{0%,100%{transform:translate3d(0,0,0) rotate(-2deg)}50%{transform:translate3d(10px,-18px,0) rotate(2deg)}}
@keyframes heroBreathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes atomPulse{0%,100%{box-shadow:0 0 0 rgba(22,199,232,0)}50%{box-shadow:0 0 18px rgba(22,199,232,.25)}}
@keyframes viewEnter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes toolbarDrop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes missionShine{0%,70%,100%{transform:translateX(-55%)}85%{transform:translateX(55%)}}
@keyframes missionSwap{0%{opacity:.55;transform:translateY(-4px)}100%{opacity:1;transform:none}}
@keyframes progressPop{40%{transform:scale(1.12);background:rgba(255,255,255,.22)}}
@keyframes selectedPulse{0%,100%{transform:translateY(-2px);box-shadow:0 0 0 3px rgba(30,155,231,.12)}50%{transform:translateY(-4px) scale(1.02);box-shadow:0 0 0 6px rgba(30,155,231,.07)}}
@keyframes slotPlace{0%{transform:scale(.9);opacity:.45}65%{transform:scale(1.035)}100%{transform:scale(1);opacity:1}}
@keyframes checkPop{0%{transform:scale(0) rotate(-90deg)}75%{transform:scale(1.18) rotate(5deg)}100%{transform:scale(1)}}
@keyframes deviceLand{0%{transform:translateY(-12px) scale(.8);opacity:0}65%{transform:translateY(2px) scale(1.08)}100%{transform:none;opacity:1}}
@keyframes wireGlow{from{filter:drop-shadow(0 0 2px rgba(255,90,80,.22))}to{filter:drop-shadow(0 0 8px rgba(255,90,80,.52))}}
@keyframes chargeLoop{0%{left:15%;top:20%}25%{left:78%;top:20%}50%{left:78%;top:69%}75%{left:15%;top:69%}100%{left:15%;top:20%}}
@keyframes switchClick{0%{transform:rotate(-10deg) scale(.9)}70%{transform:rotate(4deg) scale(1.08)}100%{transform:none}}
@keyframes statusPulse{0%,100%{opacity:.65;transform:scale(.92)}50%{opacity:1;transform:scale(1.16)}}
@keyframes metricPulse{50%{transform:translateY(-3px) scale(1.02);box-shadow:0 12px 26px rgba(13,134,232,.14)}}
@keyframes meterSweep{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes rowIn{0%{opacity:0;transform:translateX(16px);background:#dff8ff}60%{background:#eafbf5}100%{opacity:1;transform:none;background:transparent}}
@keyframes chartPulse{50%{transform:scale(1.01);box-shadow:0 10px 30px rgba(13,134,232,.12)}}
@keyframes correctAnswer{35%{transform:translateX(7px) scale(1.01);box-shadow:0 0 0 4px rgba(33,173,126,.1)}}
@keyframes starBurst{0%{transform:scale(.75) rotate(-18deg)}55%{transform:scale(1.45) rotate(18deg);filter:drop-shadow(0 0 8px #ffcf4d)}100%{transform:none}}
@keyframes xpGlow{50%{color:#0a89d8;text-shadow:0 0 12px rgba(22,199,232,.55)}}
@keyframes successBadge{0%{opacity:0;transform:translateY(25px) scale(.78)}18%,76%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-16px) scale(.96)}}
@keyframes trophyBounce{0%{transform:scale(.5) rotate(-18deg)}65%{transform:scale(1.2) rotate(8deg)}100%{transform:none}}
@keyframes confettiFly{0%{opacity:1;transform:translate(-50%,-50%) rotate(var(--rot))}100%{opacity:0;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) rotate(calc(var(--rot) + 430deg))}}
@keyframes toastOut{to{opacity:0;transform:translateX(18px) scale(.97)}}
@keyframes toastTimer{to{transform:scaleX(0)}}
@keyframes ripple{to{transform:translate(-50%,-50%) scale(5);opacity:0}}

/* Dostępność — respektuj ustawienia systemu także bez JS */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .physics-floaters,.current-flow{display:none!important}
}
.system-reduced-motion .physics-floaters{display:none}
.reduced-motion .physics-floaters,.reduced-motion .current-flow{display:none!important}
.reduced-motion .hero-visual,.system-reduced-motion .hero-visual{transform:none!important}

@media(max-width:980px){.circuit-status{order:3;margin-left:0}.bench-head{flex-wrap:wrap;gap:.55rem}}
@media(max-width:560px){.physics-floaters{display:none}.success-badge{min-width:82vw;padding:1rem}.circuit-status{width:100%;justify-content:center}}

/* === v0.2.0: misje 6–10, Centrum Pomocy, PL/EN === */
.mission-task-panel{display:flex;align-items:flex-start;gap:.9rem;margin:.8rem 0 1rem;padding:.9rem 1rem;border:1px solid #b9ddf4;background:linear-gradient(135deg,#eef9ff,#f7fbff);border-radius:18px;box-shadow:0 10px 28px rgba(6,44,79,.06);animation:viewEnter .28s ease both}
.mission-task-panel.hidden{display:none!important}.mission-task-icon{width:42px;height:42px;flex:0 0 42px;border-radius:14px;display:grid;place-items:center;background:#0d86e8;color:#fff;font-size:1.15rem;box-shadow:0 7px 16px rgba(13,134,232,.22)}
.mission-task-copy{min-width:0;flex:1}.mission-task-copy>small{display:block;color:#55748c;font-size:.7rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.mission-task-copy>b{display:block;color:#143b57;margin:.1rem 0 .2rem}.mission-task-copy p{margin:.25rem 0;color:#476579;line-height:1.45}
.mission-answer{display:flex;align-items:end;gap:.65rem;flex-wrap:wrap;margin-top:.6rem}.mission-answer label{display:flex;align-items:center;gap:.45rem;font-weight:700;color:#234b66}.mission-answer input{width:110px;border:1px solid #b8cddd;border-radius:10px;padding:.55rem .65rem;background:#fff;color:#143b57;font:inherit}

.help-center{min-height:580px}.help-head{display:flex;justify-content:space-between;gap:1.2rem;align-items:flex-end;margin-bottom:1rem}.help-head h2{margin:.15rem 0}.help-head p{margin:.2rem 0;color:#607a8d}.help-search{display:flex;align-items:center;gap:.45rem;min-width:min(340px,100%);background:#f5f9fc;border:1px solid #d5e2eb;border-radius:14px;padding:.55rem .7rem}.help-search input{border:0;outline:0;background:transparent;width:100%;font:inherit;color:#183d56}
.help-layout{display:grid;grid-template-columns:minmax(210px,280px) minmax(0,1fr);gap:1rem;align-items:start}.help-topics{display:flex;flex-direction:column;gap:.35rem;position:sticky;top:84px}.help-topics button{display:flex;gap:.65rem;align-items:center;text-align:left;border:1px solid transparent;background:#f6f9fb;color:#36566c;padding:.72rem .8rem;border-radius:12px;cursor:pointer;font:inherit;transition:.18s ease}.help-topics button:hover{transform:translateX(3px);background:#eef7fd}.help-topics button.active{background:#e6f5ff;border-color:#a9d7f5;color:#075e9b;font-weight:800;box-shadow:inset 3px 0 #0d86e8}
.help-article{min-height:360px;border:1px solid #dce7ee;border-radius:18px;padding:1.1rem 1.25rem;background:#fff;box-shadow:0 10px 30px rgba(6,44,79,.05);color:#34566d;line-height:1.62}.help-article-title{display:flex;gap:.7rem;align-items:center;padding-bottom:.7rem;margin-bottom:.8rem;border-bottom:1px solid #e3ebf1}.help-article-title span{font-size:1.35rem}.help-article-title h3{margin:0;color:#143b57;font-size:1.2rem}.help-article p{margin:.6rem 0}.help-article ol{padding-left:1.4rem}.help-article li{margin:.45rem 0}.formula-box{display:block;text-align:center;padding:.9rem 1rem;margin:.8rem 0;border-radius:14px;background:linear-gradient(135deg,#082f52,#0d6ea9);color:#fff;font-size:1.08rem;font-weight:800;letter-spacing:.02em}.help-empty{padding:2rem;text-align:center;color:#60788a}
.results-table{width:100%;border-collapse:collapse}.results-table th,.results-table td{padding:.72rem;border-bottom:1px solid #dde7ee}.results-table th{text-align:left;color:#456276;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em}.results-table td:nth-child(2),.results-table td:nth-child(3),.results-table th:nth-child(2),.results-table th:nth-child(3){text-align:center}
.lang-btn b{color:#0d86e8}.lang-btn{min-width:72px}

@media(max-width:860px){.help-layout{grid-template-columns:1fr}.help-topics{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.help-head{align-items:stretch;flex-direction:column}.help-search{min-width:0}}
@media(max-width:560px){.help-topics{grid-template-columns:1fr}.mission-task-panel{padding:.8rem}.mission-answer{align-items:stretch;flex-direction:column}.mission-answer label{justify-content:space-between}.mission-answer input{width:120px}}

/* v0.3.0 — architektura Dział → Doświadczenie → Misje */
.physics-home{display:grid;gap:1rem}
.home-intro{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;background:linear-gradient(135deg,#ffffff,#eef9ff);overflow:hidden;position:relative}
.home-intro::after{content:"⚛";position:absolute;right:2%;bottom:-38%;font-size:9rem;opacity:.035;transform:rotate(-14deg);pointer-events:none}
.home-intro h2{margin:.25rem 0 .55rem;font-size:clamp(1.7rem,3vw,2.45rem);color:#07385f}
.home-intro p{margin:0;max-width:780px;color:#5a7389;line-height:1.65}
.architecture-badge{flex:0 0 auto;display:flex;align-items:center;gap:.7rem;padding:.85rem 1rem;border-radius:16px;background:#072f50;color:white;box-shadow:0 12px 28px rgba(4,46,78,.16)}
.architecture-badge span{font-size:1.55rem;animation:atomPulse 3.8s ease-in-out infinite}.architecture-badge b{font-size:.85rem;white-space:nowrap}
.department-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.department-card{position:relative;min-height:285px;border:1px solid #dce8f1;border-radius:20px;background:white;box-shadow:0 10px 28px rgba(7,54,88,.08);overflow:hidden;animation:deptCardIn .5s var(--ease-spring) both;animation-delay:var(--card-delay,0ms);transition:transform .25s var(--ease-spring),box-shadow .25s,border-color .25s}
.department-card:hover{transform:translateY(-6px);box-shadow:0 22px 48px rgba(7,54,88,.15);border-color:#bbd9ec}
.dept-visual{height:102px;position:relative;overflow:hidden;display:flex;align-items:center;padding:0 1.15rem;background:linear-gradient(135deg,var(--dept-a,#0a6eae),var(--dept-b,#12b9cf));color:white}
.dept-visual::before{content:"";position:absolute;width:150px;height:150px;border:1px solid rgba(255,255,255,.2);border-radius:50%;right:-32px;top:-62px}.dept-visual::after{content:"";position:absolute;width:88px;height:88px;border:1px solid rgba(255,255,255,.13);border-radius:50%;right:24px;top:9px}
.dept-icon{font-size:2.5rem;filter:drop-shadow(0 7px 14px rgba(0,0,0,.16));z-index:2}.dept-art{margin-left:auto;font-size:3.2rem;opacity:.38;transform:rotate(-8deg);z-index:1}
.dept-visual i{position:absolute;width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.8);animation:deptParticle 3.5s ease-in-out infinite}.dept-visual i:nth-of-type(1){left:48%;top:26%}.dept-visual i:nth-of-type(2){left:63%;top:62%;animation-delay:-1.2s}.dept-visual i:nth-of-type(3){left:82%;top:33%;animation-delay:-2.2s}
.tone-blue{--dept-a:#1765b1;--dept-b:#45a9e8}.tone-cyan{--dept-a:#0078ae;--dept-b:#16c7e8}.tone-violet{--dept-a:#6848ae;--dept-b:#9d71dd}.tone-indigo{--dept-a:#3948a8;--dept-b:#667ce8}.tone-orange{--dept-a:#d26924;--dept-b:#f4ad3a}.tone-green{--dept-a:#18875e;--dept-b:#4bc888}.tone-teal{--dept-a:#087b7c;--dept-b:#31c7bb}.tone-rose{--dept-a:#ad4268;--dept-b:#dd7897}.tone-purple{--dept-a:#6540a5;--dept-b:#b164d1}.tone-navy{--dept-a:#0b335f;--dept-b:#315f91}
.dept-card-body{padding:1rem 1.05rem 1.05rem;display:grid;gap:.45rem}.dept-topline{display:flex;align-items:center;justify-content:space-between;gap:.5rem;color:#71869a;font-size:.7rem;font-weight:850}.dept-status{border-radius:999px;padding:.26rem .48rem;font-size:.65rem;letter-spacing:.02em}.dept-status.available{background:#e9faf4;color:#087954}.dept-status.planned{background:#f3f6f8;color:#6d7f8d}.department-card h3{margin:.1rem 0;font-size:1.1rem;color:#123d5d}.department-card p{margin:0;min-height:42px;color:#617a8e;font-size:.82rem;line-height:1.5}.department-card small{color:#8397a7;font-weight:750}
.dept-progress,.mini-progress{height:6px;border-radius:99px;background:#e9f0f5;overflow:hidden}.dept-progress i,.mini-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#11a7d6,#22c28a)}
.dept-open{margin-top:.28rem;width:100%;border:0;border-radius:10px;background:#edf7fd;color:#0873b5;padding:.64rem .75rem;font-weight:850;display:flex;align-items:center;justify-content:space-between;transition:.2s}.dept-open:hover{background:#dff2fc;transform:translateX(2px)}
.text-back{border:0;background:transparent;color:#0a74b7;font-weight:850;padding:.25rem 0;margin-bottom:.8rem}.text-back:hover{text-decoration:underline}
.department-page{min-height:620px}.department-header{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:center;padding:1rem;border-radius:18px;background:linear-gradient(135deg,#f8fcff,#eef7fd);border:1px solid #dbe9f3;margin-bottom:1rem}.department-header h2{margin:.2rem 0 .35rem;font-size:2rem;color:#0b3a5f}.department-header p{margin:0;color:#5d7589}.department-hero-icon{width:92px;height:92px;border-radius:24px;display:grid;place-items:center;position:relative;background:linear-gradient(135deg,var(--dept-a),var(--dept-b));color:white;box-shadow:0 14px 28px rgba(5,54,88,.16)}.department-hero-icon>span{font-size:2.7rem}.department-hero-icon>small{position:absolute;right:8px;bottom:5px;font-size:1.35rem;opacity:.5}.department-summary{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.65rem}.department-summary span{padding:.34rem .55rem;border-radius:999px;background:white;border:1px solid #dce9f2;color:#577086;font-size:.72rem;font-weight:850}
.experiment-grid{display:grid;gap:.85rem}.experiment-card{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:1rem;align-items:center;border:1px solid #dce8f1;border-radius:16px;padding:1rem;background:white;animation:deptCardIn .45s var(--ease-spring) both;animation-delay:var(--card-delay,0ms)}.experiment-card.is-active{border-color:#9fdaf0;box-shadow:0 12px 28px rgba(7,92,137,.09)}.experiment-card.is-planned{background:#fbfcfd}.experiment-icon{width:64px;height:64px;border-radius:17px;display:grid;place-items:center;font-size:2rem;background:linear-gradient(135deg,#eaf7ff,#f6fbff);border:1px solid #d5e8f5}.experiment-copy h3{margin:.16rem 0 .3rem;color:#143d5c}.experiment-copy p{margin:0;color:#617b90;line-height:1.5}.experiment-status{font-size:.65rem;font-weight:900;letter-spacing:.07em;color:#0a82c9}.is-planned .experiment-status{color:#8596a4}.experiment-meta{margin-top:.55rem;display:flex;align-items:center;gap:.6rem;color:#738798;font-size:.72rem;font-weight:800}.mini-progress{width:160px}.experiment-actions{display:grid;gap:.45rem;min-width:190px}.experiment-actions .btn{width:100%}.experiment-actions .btn:disabled{opacity:.55;cursor:not-allowed}
.department-empty{padding:3rem 1rem;text-align:center;border:1px dashed #cbddea;border-radius:18px;background:#f8fbfd;color:#687f91}.department-empty>span{font-size:3.5rem}.department-empty h3{margin:.5rem 0 .2rem;color:#294f6b}
@keyframes deptCardIn{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}@keyframes deptParticle{0%,100%{transform:translateY(0);opacity:.35}50%{transform:translateY(-11px);opacity:1}}
@media(max-width:1180px){.department-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.experiment-card{grid-template-columns:64px 1fr}.experiment-actions{grid-column:1/-1;grid-template-columns:1fr 1fr;min-width:0}}
@media(max-width:760px){.home-intro{display:grid}.architecture-badge{width:fit-content}.department-grid{grid-template-columns:1fr}.department-header{grid-template-columns:1fr}.department-hero-icon{width:74px;height:74px}.experiment-card{grid-template-columns:56px 1fr}.experiment-icon{width:52px;height:52px}.experiment-actions{grid-template-columns:1fr}.department-summary{gap:.3rem}}
body.reduced-motion .department-card,body.reduced-motion .experiment-card{animation:none}.reduced-motion .dept-visual i{animation:none}

/* v0.4.0 — bank misji dla wszystkich działów */
.mission-meta-line{display:flex;gap:.4rem;align-items:center;margin-bottom:.25rem;flex-wrap:wrap}
.mission-difficulty,.mission-plan-badge{display:inline-flex;align-items:center;border-radius:999px;padding:.18rem .48rem;font-size:.62rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}
.mission-difficulty{background:#edf6fd;color:#176a9f}
.mission-plan-badge{background:#fff5d9;color:#9a6410;border:1px solid #f2d48c}
.mission-planned{background:linear-gradient(90deg,#fff,#fbfdff);border-style:dashed}
.mission-planned .mission-number{background:#f4f6f8;color:#73899a}
.mission-hint-preview{display:block;margin-top:.35rem;color:#6d8394;font-size:.75rem;line-height:1.35}
.mission-planned>button{background:#f4f8fb!important;color:#39647f!important}
@media(max-width:720px){
  .mission-item{grid-template-columns:42px 1fr}
  .mission-item>button{grid-column:2;justify-self:start}
}

/* v0.5.0 — richer mission metadata */
.mission-type-badge{display:inline-flex;align-items:center;padding:.2rem .48rem;border-radius:999px;background:rgba(31,111,235,.09);color:var(--primary,#1f6feb);font-size:.68rem;font-weight:800;letter-spacing:.02em}
.mission-criteria{display:block;margin-top:.4rem;padding:.42rem .58rem;border-left:3px solid #22a06b;background:rgba(34,160,107,.07);border-radius:0 .45rem .45rem 0;color:var(--text,#203047);line-height:1.35}


/* v0.5.1 — separate mission availability from laboratory readiness */
.lab-placeholder-card{max-width:820px;margin:1rem auto;text-align:center;padding:2rem}.lab-placeholder-icon{width:92px;height:92px;margin:0 auto 1rem;border-radius:24px;display:grid;place-items:center;font-size:3rem;background:linear-gradient(135deg,#eaf8ff,#f7fbff);border:1px solid #cfe4f2;box-shadow:0 12px 30px rgba(12,82,126,.08)}.lab-placeholder-card h2{margin:.35rem 0 .5rem}.lab-placeholder-card>p{max-width:680px;margin:.35rem auto;color:var(--muted);line-height:1.6}.lab-placeholder-status{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;margin:1.25rem 0}.status-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .75rem;border-radius:999px;font-size:.78rem;font-weight:900}.status-ready{background:#e8faf4;color:#087b58;border:1px solid #bdebd9}.status-building{background:#fff7df;color:#8c6600;border:1px solid #f1dda1}.lab-placeholder-note{background:#f7fbfe;border:1px solid #dceaf4;border-radius:14px;padding:.85rem 1rem}.lab-placeholder-actions{display:flex;justify-content:center;gap:.65rem;margin-top:1.2rem;flex-wrap:wrap}.mission-detail-panel{margin-top:1rem;border:1px solid #cfe2f0;border-radius:16px;padding:1rem;background:linear-gradient(135deg,#f7fcff,#fff);box-shadow:0 10px 24px rgba(7,76,118,.07)}.mission-detail-panel h3{margin:.2rem 0 .45rem;color:#143d5c}.mission-detail-panel p{color:#567087;line-height:1.55}.mission-detail-meta{display:flex;gap:.5rem;flex-wrap:wrap;margin:.65rem 0}.mission-detail-meta span{font-size:.72rem;font-weight:900;background:#edf7ff;color:#146b9e;padding:.32rem .5rem;border-radius:999px}.mission-detail-criteria{display:block;margin-top:.7rem;padding:.7rem;border-left:4px solid #1ea879;background:#eefaf6;border-radius:8px;color:#245b4b}.mission-detail-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.9rem}.experiment-status.split-ready{color:#087b58}.experiment-lab-note{color:#987000;font-weight:800}

/* v0.6.0 — aktywne laboratorium Mechaniki: ruch */
.motion-lab-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(330px,.85fr);gap:18px;align-items:start}.motion-workspace,.motion-panel{min-width:0}.motion-banner{margin-bottom:14px}.motion-bench{background:linear-gradient(180deg,#f8fbff,#eef5fb);border:1px solid #d9e6f1;border-radius:22px;box-shadow:0 18px 45px rgba(31,77,111,.11);overflow:hidden}.motion-apparatus{display:grid;grid-template-columns:repeat(4,minmax(105px,1fr));gap:10px;padding:14px;border-bottom:1px solid #dce8f2;background:rgba(255,255,255,.72)}.motion-tool{border:1px solid #d6e3ed;background:#fff;border-radius:15px;padding:11px 8px;display:flex;gap:8px;align-items:center;justify-content:center;cursor:pointer;transition:.2s ease;min-height:58px}.motion-tool span{font-size:1.55rem}.motion-tool b{font-size:.84rem}.motion-tool:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(27,90,130,.12)}.motion-tool.placed{border-color:#29a874;background:#ecfff6;box-shadow:0 0 0 3px rgba(41,168,116,.12)}.track-scene{position:relative;height:240px;margin:18px;border-radius:20px;overflow:hidden;background:linear-gradient(#dff1fb 0 58%,#dde8d0 58% 68%,#c7c9c6 68%);border:1px solid #cddce6}.track-scene:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.8),transparent 28%),linear-gradient(90deg,rgba(255,255,255,.12),transparent 35%);pointer-events:none}.track-ruler{position:absolute;left:7%;right:7%;bottom:18px;display:flex;justify-content:space-between;font-size:.72rem;color:#526776}.track-line{position:absolute;left:7%;right:7%;bottom:56px;height:10px;border-radius:8px;background:linear-gradient(#4f5860,#23292e);box-shadow:0 5px 0 #9ba4aa}.track-line:after{content:"";position:absolute;left:0;right:0;top:3px;border-top:2px dashed rgba(255,255,255,.5)}.motion-cart{position:absolute;left:8%;bottom:69px;font-size:2.6rem;filter:drop-shadow(0 5px 3px rgba(0,0,0,.25));transform:translateX(0);z-index:3}.motion-cart.running{animation:cartBob .18s ease-in-out infinite alternate}.photogate{position:absolute;bottom:62px;width:8px;height:83px;background:#19384c;border-radius:5px 5px 0 0;opacity:.28;transition:.2s}.photogate:after{content:"";position:absolute;left:-17px;top:0;width:42px;height:5px;background:#19384c;border-radius:4px}.photogate span{position:absolute;top:-25px;left:-8px;background:#16384d;color:#fff;font-size:.7rem;border-radius:7px;padding:3px 6px}.gate-a{left:32%}.gate-b{right:9%}.photogate.active{opacity:1;box-shadow:0 0 14px rgba(39,184,227,.65)}.track-distance{position:absolute;bottom:102px;left:48%;transform:translateX(-50%);padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.87);font-size:.78rem;font-weight:700;color:#285269}.motion-controls{padding:0 18px 18px;display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:12px;align-items:end}.motion-controls label{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:13px;background:#fff;border:1px solid #dce7ef;font-size:.78rem}.motion-controls label b{font-size:.9rem}.motion-controls select{padding:8px;border-radius:8px;border:1px solid #cad8e2}.motion-control-buttons{display:flex;gap:8px;align-items:center;grid-column:1/-1}.motion-control-buttons .btn{flex:1}.motion-panel{display:grid;gap:14px}.motion-metrics{grid-template-columns:repeat(4,1fr)}.motion-metrics article{min-width:0}.motion-metrics b{font-size:1rem}.motion-method-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.motion-method-buttons .active{background:#e8f7ff;border-color:#2ea6d6;color:#11658a}.chart-switch{display:flex;gap:4px;margin-left:auto}.chart-switch button{border:1px solid #d0dde6;background:#fff;border-radius:8px;padding:4px 8px;font-size:.7rem;cursor:pointer}.chart-switch button.active{background:#1f86b7;color:#fff;border-color:#1f86b7}.motion-answer-grid{display:grid;gap:8px}.motion-answer-grid label{font-size:.8rem}.motion-answer-grid input,.motion-answer-grid select{width:100%;padding:9px;border:1px solid #ccdbe5;border-radius:9px;margin-top:4px}.motion-analysis-buttons{display:flex;gap:8px;flex-wrap:wrap}.motion-analysis-buttons button{flex:1;min-width:120px}.motion-measure-flash{animation:measureFlash .65s ease}.motion-row-new{animation:rowSlide .45s ease}.motion-lab-ready-pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 9px;background:#e9fff3;color:#187c50;font-size:.76rem;font-weight:800}@keyframes cartBob{to{transform:translateY(-2px)}}@keyframes measureFlash{50%{box-shadow:0 0 0 5px rgba(41,168,116,.22)}}@keyframes rowSlide{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}@media(max-width:1250px){.motion-lab-grid{grid-template-columns:1fr}.motion-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.motion-panel>.metric-cards,.motion-panel>.chart-card,.motion-panel>.table-card{grid-column:1/-1}}@media(max-width:760px){.motion-apparatus{grid-template-columns:repeat(2,1fr)}.motion-controls{grid-template-columns:1fr}.motion-panel{grid-template-columns:1fr}.motion-panel>*{grid-column:auto!important}.motion-metrics{grid-template-columns:repeat(2,1fr)}.track-scene{height:210px;margin:10px}.motion-method-buttons{grid-template-columns:1fr}.motion-control-buttons{flex-direction:column}.motion-control-buttons .btn{width:100%}}@media(prefers-reduced-motion:reduce){.motion-cart.running{animation:none}.motion-tool,.photogate{transition:none}}


/* v0.7.0 — aktywne laboratorium Mechaniki: równia pochyła */
.incline-lab-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(330px,.85fr);gap:18px;align-items:start}.incline-workspace,.incline-panel{min-width:0}.incline-banner{margin-bottom:14px}.incline-bench{background:linear-gradient(180deg,#f8fbff,#eef5fb);border:1px solid #d9e6f1;border-radius:22px;box-shadow:0 18px 45px rgba(31,77,111,.11);overflow:hidden}.incline-scene{position:relative;height:315px;margin:18px;border-radius:20px;overflow:hidden;background:linear-gradient(#dff2ff 0 68%,#d6e6bd 68%);border:1px solid #cddce6}.incline-sky{position:absolute;inset:15px 24px auto;display:flex;justify-content:space-between;opacity:.7;font-size:2.1rem}.incline-ground{position:absolute;left:0;right:0;bottom:0;height:70px;background:linear-gradient(#a7bd7c,#829957)}.incline-ramp{--angle:-20deg;position:absolute;left:9%;bottom:70px;width:78%;height:16px;border-radius:9px;background:linear-gradient(#667783,#303c44);transform:rotate(var(--angle));transform-origin:left center;box-shadow:0 7px 0 rgba(59,74,82,.28);transition:transform .25s ease}.incline-ruler{position:absolute;inset:2px 0 auto;height:5px;border-top:2px dashed rgba(255,255,255,.55)}.incline-block{position:absolute;left:86%;bottom:16px;font-size:2.7rem;filter:drop-shadow(0 4px 3px rgba(0,0,0,.25));transition:left .15s linear}.incline-block.running{animation:inclineBlockPulse .2s ease-in-out infinite alternate}.angle-arc{position:absolute;left:10%;bottom:82px;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.9);font-size:.8rem;font-weight:800;color:#31546c}.force-vector{position:absolute;padding:4px 7px;border-radius:8px;background:rgba(255,255,255,.9);font-size:.78rem;font-weight:700;box-shadow:0 4px 12px rgba(0,0,0,.08);transition:.2s}.force-g{left:42%;top:36%;color:#b14545}.force-n{left:51%;top:28%;color:#167e74}.force-p{left:58%;top:44%;color:#6a58a8}.incline-controls{padding:0 18px 18px;display:grid;grid-template-columns:repeat(4,minmax(125px,1fr));gap:12px;align-items:end}.incline-controls label{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:13px;background:#fff;border:1px solid #dce7ef;font-size:.78rem}.incline-controls label b{font-size:.9rem}.incline-controls select{padding:8px;border-radius:8px;border:1px solid #cad8e2}.incline-control-buttons{display:flex;gap:8px;align-items:center;grid-column:1/-1}.incline-control-buttons .btn{flex:1}.incline-panel{display:grid;gap:14px}.incline-metrics{grid-template-columns:repeat(4,1fr)}.incline-metrics b{font-size:1rem}.incline-force-buttons,.incline-choice-buttons{display:flex;flex-wrap:wrap;gap:8px}.incline-force-buttons button,.incline-choice-buttons button{flex:1;min-width:125px}.incline-force-buttons button.selected{background:#e8fff5;border-color:#39a77b;color:#176745}.incline-answer-grid{display:grid;gap:9px}.incline-answer-grid input,.incline-answer-grid select{width:100%;padding:9px;border:1px solid #ccdbe5;border-radius:9px;margin-top:4px}.incline-row-new{animation:rowSlide .45s ease}.incline-model-note{font-size:.78rem;color:#557083}.surface-swatch{display:inline-flex;align-items:center;gap:5px}.surface-swatch:before{content:"";width:9px;height:9px;border-radius:50%;background:#3c9ec3}.surface-swatch.rough:before{background:#b77745}@keyframes inclineBlockPulse{to{filter:drop-shadow(0 7px 3px rgba(0,0,0,.27));transform:translateY(-2px)}}@media(max-width:1250px){.incline-lab-grid{grid-template-columns:1fr}.incline-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.incline-panel>.metric-cards,.incline-panel>.chart-card,.incline-panel>.table-card{grid-column:1/-1}}@media(max-width:780px){.incline-controls{grid-template-columns:repeat(2,1fr)}.incline-panel{grid-template-columns:1fr}.incline-panel>*{grid-column:auto!important}.incline-metrics{grid-template-columns:repeat(2,1fr)}.incline-scene{height:260px;margin:10px}.incline-control-buttons{flex-direction:column}.incline-control-buttons .btn{width:100%}}@media(max-width:520px){.incline-controls{grid-template-columns:1fr}.incline-scene{height:230px}.force-vector{font-size:.68rem}}@media(prefers-reduced-motion:reduce){.incline-block.running{animation:none}.incline-ramp,.incline-block{transition:none}}

/* v0.8.0 — aktywne laboratorium Mechaniki: tarcie statyczne i kinetyczne */
.friction-lab-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(330px,.85fr);gap:18px;align-items:start}.friction-workspace,.friction-panel{min-width:0}.friction-banner{margin-bottom:14px}.friction-bench{background:linear-gradient(180deg,#f8fbff,#eef5fb);border:1px solid #d9e6f1;border-radius:22px;box-shadow:0 18px 45px rgba(31,77,111,.11);overflow:hidden}.friction-scene{position:relative;height:310px;margin:18px;border-radius:20px;overflow:hidden;background:linear-gradient(#dff1fb 0 54%,#eef4f7 54%);border:1px solid #cddce6}.friction-wall{position:absolute;left:0;right:0;top:0;height:54%;background:linear-gradient(180deg,#dff2ff,#ecf7fd)}.friction-wall span{position:absolute;right:22px;top:20px;font-weight:900;letter-spacing:.14em;color:#8aa9bc;font-size:.78rem}.friction-surface{position:absolute;left:5%;right:5%;bottom:52px;height:52px;border-radius:10px 10px 2px 2px;box-shadow:0 10px 18px rgba(0,0,0,.12);transition:.2s}.friction-surface.wood{background:repeating-linear-gradient(8deg,#c38a51 0 8px,#d59a5e 8px 16px)}.friction-surface.rubber{background:repeating-linear-gradient(90deg,#273038 0 10px,#323b43 10px 20px)}.friction-surface.plastic{background:linear-gradient(#f0f3f6,#c9d2d8)}.friction-surface.cork,.friction-surface.unknown{background:radial-gradient(circle at 20% 30%,#7e5a37 0 2px,transparent 3px),radial-gradient(circle at 70% 60%,#6f4c2d 0 2px,transparent 3px),#b98b5c;background-size:22px 18px}.friction-surface span{position:absolute;right:12px;top:8px;background:rgba(255,255,255,.86);padding:4px 8px;border-radius:999px;font-size:.72rem;font-weight:800;color:#445d6f}.friction-block{position:absolute;left:42%;bottom:101px;width:86px;height:58px;border-radius:9px;background:linear-gradient(135deg,#c7643f,#8e3f2e);display:flex;align-items:center;justify-content:center;gap:6px;color:white;box-shadow:0 8px 12px rgba(0,0,0,.18);z-index:4;transition:left .25s linear,width .2s,height .2s}.friction-block span{font-size:2rem}.friction-block b{font-size:.72rem}.friction-block.narrow{width:58px;height:86px}.friction-block.moving{animation:frictionBlockJitter .16s ease-in-out infinite alternate}.friction-gauge{position:absolute;left:6%;top:34%;width:180px;padding:12px;border-radius:16px;background:#12324a;color:#d8f8ff;box-shadow:0 12px 26px rgba(0,0,0,.18);z-index:5}.gauge-title{font-size:.72rem;opacity:.8}.gauge-display{display:flex;align-items:baseline;gap:5px;margin:.25rem 0}.gauge-display b{font:800 1.65rem ui-monospace,monospace;color:#99ffc3}.gauge-display span{font-size:.8rem}.gauge-track{height:8px;background:#091c29;border-radius:999px;overflow:hidden}.gauge-track i{display:block;height:100%;width:0;background:linear-gradient(90deg,#4bd399,#ffd166,#ef6c68);transition:width .12s linear}.friction-gauge small{display:block;margin-top:7px;color:#93c7da}.friction-rope{position:absolute;left:24%;top:55%;width:22%;height:4px;background:#67523d;transform-origin:left center;z-index:3;box-shadow:0 1px 0 rgba(255,255,255,.35)}.friction-force-arrow{position:absolute;left:47%;top:39%;padding:5px 8px;border-radius:8px;background:rgba(255,255,255,.92);font-weight:900;color:#0d7ea9;z-index:5}.friction-scale{position:absolute;left:8%;right:8%;bottom:16px;display:flex;justify-content:space-between;color:#687f90;font-size:.72rem}.friction-controls{padding:0 18px 18px;display:grid;grid-template-columns:repeat(4,minmax(125px,1fr));gap:12px;align-items:end}.friction-controls label{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:13px;background:#fff;border:1px solid #dce7ef;font-size:.78rem}.friction-controls label b{font-size:.9rem}.friction-controls select{padding:8px;border-radius:8px;border:1px solid #cad8e2}.friction-control-buttons{display:flex;gap:8px;align-items:center;grid-column:1/-1}.friction-control-buttons .btn{flex:1}.friction-panel{display:grid;gap:14px}.friction-metrics{grid-template-columns:repeat(4,1fr)}.friction-metrics b{font-size:.92rem}.friction-answer-grid{display:grid;gap:9px}.friction-answer-grid label{font-size:.8rem}.friction-answer-grid input,.friction-answer-grid select{width:100%;padding:9px;border:1px solid #ccdbe5;border-radius:9px;margin-top:4px}.friction-choice-buttons{display:flex;gap:8px;flex-wrap:wrap}.friction-choice-buttons button{flex:1;min-width:130px}.friction-row-new{animation:rowSlide .45s ease}.friction-material-pill{display:inline-flex;border-radius:999px;padding:4px 8px;background:#eef6fb;font-size:.72rem;font-weight:800}.friction-status-static{color:#9d6800}.friction-status-kinetic{color:#0c8461}.friction-reference{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.friction-reference span{background:#f5f9fc;border:1px solid #dce7ef;padding:6px 8px;border-radius:8px;font-size:.75rem}@keyframes frictionBlockJitter{to{transform:translateY(-2px)}}@media(max-width:1250px){.friction-lab-grid{grid-template-columns:1fr}.friction-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.friction-panel>.metric-cards,.friction-panel>.chart-card,.friction-panel>.table-card{grid-column:1/-1}}@media(max-width:780px){.friction-controls{grid-template-columns:repeat(2,1fr)}.friction-panel{grid-template-columns:1fr}.friction-panel>*{grid-column:auto!important}.friction-metrics{grid-template-columns:repeat(2,1fr)}.friction-scene{height:280px;margin:10px}.friction-gauge{left:4%;top:20%;width:150px}.friction-control-buttons{flex-direction:column}.friction-control-buttons .btn{width:100%}}@media(max-width:520px){.friction-controls{grid-template-columns:1fr}.friction-scene{height:260px}.friction-gauge{width:135px;padding:9px}.friction-block{left:48%}.friction-rope{width:27%}}@media(prefers-reduced-motion:reduce){.friction-block.moving{animation:none}.friction-block,.friction-surface,.gauge-track i{transition:none}}


/* v0.9.0 — aktywne laboratorium Mechaniki: Prawo Hooke'a */
.hooke-lab-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(330px,.85fr);gap:18px;align-items:start}.hooke-workspace,.hooke-panel{min-width:0}.hooke-banner{margin-bottom:14px}.hooke-bench{background:linear-gradient(180deg,#f8fbff,#eef5fb);border:1px solid #d9e6f1;border-radius:22px;box-shadow:0 18px 45px rgba(31,77,111,.11);overflow:hidden}.hooke-scene{position:relative;height:350px;margin:18px;border-radius:20px;overflow:hidden;background:linear-gradient(180deg,#e5f5ff,#f7fbfd 72%,#d9e6ed 72%);border:1px solid #cddce6}.hooke-wall-title{position:absolute;right:22px;top:18px;font-weight:900;letter-spacing:.13em;color:#89aabd;font-size:.76rem}.hooke-stand{position:absolute;left:22%;top:34px;bottom:44px;width:150px}.hooke-stand-pole{position:absolute;left:17px;top:0;bottom:0;width:13px;border-radius:7px;background:linear-gradient(90deg,#607786,#a9bcc8,#536976)}.hooke-stand-top{position:absolute;left:17px;top:0;width:132px;height:13px;border-radius:7px;background:linear-gradient(#aebfc9,#5b707d)}.hooke-stand-base{position:absolute;left:0;bottom:0;width:105px;height:17px;border-radius:50%;background:#516672;box-shadow:0 6px 10px rgba(0,0,0,.18)}.hooke-anchor{position:absolute;left:calc(22% + 132px);top:42px;width:14px;height:14px;border:4px solid #465a66;border-radius:50%;z-index:3}.hooke-spring{position:absolute;left:calc(22% + 138px);top:55px;width:36px;height:115px;transform:translateX(-50%);display:flex;flex-direction:column;justify-content:space-between;transition:height .55s cubic-bezier(.2,.8,.25,1.1);z-index:2}.hooke-spring i{display:block;width:34px;height:10px;border-bottom:4px solid #416a81;transform:skewX(-38deg);border-radius:50%}.hooke-spring.stretching i{animation:springGlint .45s ease alternate 2}.hooke-mass{position:absolute;left:calc(22% + 138px);top:165px;transform:translateX(-50%);width:82px;height:58px;border-radius:10px;background:linear-gradient(135deg,#445a68,#223641);color:#fff;display:grid;place-items:center;box-shadow:0 10px 15px rgba(0,0,0,.2);transition:top .55s cubic-bezier(.2,.8,.25,1.1);z-index:4}.hooke-mass span{font-size:1.45rem;line-height:1}.hooke-mass b{font-size:.72rem}.hooke-ruler{position:absolute;left:61%;top:45px;bottom:35px;width:54px;border-left:4px solid #f0cc67;background:repeating-linear-gradient(180deg,transparent 0 9px,rgba(74,89,99,.32) 9px 10px);color:#506777}.hooke-ruler b{position:absolute;left:10px;top:-24px}.hooke-ruler span{position:absolute;left:9px;font-size:.68rem}.hooke-reference{position:absolute;left:46%;right:22%;top:166px;border-top:2px dashed #19a6b6;color:#148392;transition:top .25s}.hooke-reference span{position:absolute;right:4px;top:-23px;font-weight:900;font-size:.72rem}.hooke-extension{position:absolute;right:9%;top:45%;padding:7px 10px;border-radius:999px;background:#fff;border:1px solid #cde0ea;font-weight:900;color:#27647d;box-shadow:0 7px 16px rgba(0,0,0,.08)}.hooke-controls{padding:0 18px 18px;display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:12px;align-items:end}.hooke-controls label{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:13px;background:#fff;border:1px solid #dce7ef;font-size:.78rem}.hooke-controls label b{font-size:.9rem}.hooke-controls select{padding:8px;border-radius:8px;border:1px solid #cad8e2}.hooke-control-buttons{display:flex;gap:8px;grid-column:1/-1}.hooke-control-buttons .btn{flex:1}.hooke-panel{display:grid;gap:14px}.hooke-metrics{grid-template-columns:repeat(4,1fr)}.hooke-metrics b{font-size:.92rem}.hooke-answer-grid{display:grid;gap:9px}.hooke-answer-grid input,.hooke-answer-grid select{width:100%;padding:9px;border:1px solid #ccdbe5;border-radius:9px;margin-top:4px}.hooke-choice-buttons{display:flex;gap:8px;flex-wrap:wrap}.hooke-choice-buttons button{flex:1;min-width:130px}.hooke-row-new{animation:rowSlide .45s ease}.hooke-nonlinear{background:#fff4ed!important}.hooke-badge{display:inline-flex;padding:3px 7px;border-radius:999px;background:#edf6fb;font-size:.7rem;font-weight:850}.hooke-badge.warn{background:#fff0e6;color:#a04f18}@keyframes springGlint{to{filter:drop-shadow(0 0 5px #3ccae0)}}@media(max-width:1250px){.hooke-lab-grid{grid-template-columns:1fr}.hooke-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.hooke-panel>.metric-cards,.hooke-panel>.chart-card,.hooke-panel>.table-card{grid-column:1/-1}}@media(max-width:780px){.hooke-controls{grid-template-columns:1fr 1fr}.hooke-control-buttons{flex-direction:column}.hooke-control-buttons .btn{width:100%}.hooke-panel{grid-template-columns:1fr}.hooke-panel>*{grid-column:auto!important}.hooke-metrics{grid-template-columns:repeat(2,1fr)}.hooke-scene{height:310px;margin:10px}.hooke-ruler{left:72%}}@media(max-width:520px){.hooke-controls{grid-template-columns:1fr}.hooke-scene{height:290px}.hooke-stand{left:12%}.hooke-anchor{left:calc(12% + 132px)}.hooke-spring,.hooke-mass{left:calc(12% + 138px)}.hooke-ruler{left:78%}.hooke-extension{right:2%;font-size:.72rem}}@media(prefers-reduced-motion:reduce){.hooke-spring,.hooke-mass{transition:none}.hooke-spring.stretching i{animation:none}}


/* v1.0.0 — korekta animacji tarcia + pole L0 + aktywne wahadło */
/* Dynamometr znajduje się przed klockiem w kierunku ruchu i cały układ przesuwa się razem. */
.friction-block{left:24%!important}
.friction-gauge{left:58%!important;right:auto!important;top:34%;transition:transform .25s ease}
.friction-rope{left:calc(24% + 82px)!important;top:55%;width:22%!important;transform-origin:left center;transition:transform .25s ease}
.friction-force-arrow{left:51%!important;top:39%;transition:transform .25s ease}
.friction-block{transition:transform .25s linear,width .2s,height .2s!important}
.friction-block.moving{animation:frictionBlockJitterV10 .18s ease-in-out infinite alternate}
@keyframes frictionBlockJitterV10{to{box-shadow:0 11px 17px rgba(0,0,0,.26)}}
@media(max-width:780px){.friction-block{left:18%!important}.friction-gauge{left:55%!important;top:22%}.friction-rope{left:calc(18% + 72px)!important;width:23%!important}.friction-force-arrow{left:48%!important}}
@media(max-width:520px){.friction-block{left:12%!important}.friction-gauge{left:52%!important;width:135px}.friction-rope{left:calc(12% + 65px)!important;width:25%!important}.friction-force-arrow{left:43%!important}}

.hooke-l0-input{display:flex;align-items:center;gap:7px}.hooke-l0-input input{width:100%;padding:8px;border:1px solid #cad8e2;border-radius:8px}.hooke-l0-input span{font-weight:800;color:#597184}.hooke-controls label small{color:#7890a0;line-height:1.25}

.pendulum-lab-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(330px,.85fr);gap:18px;align-items:start}.pendulum-workspace,.pendulum-panel{min-width:0}.pendulum-banner{margin-bottom:14px}.pendulum-bench{background:linear-gradient(180deg,#f8fbff,#eef5fb);border:1px solid #d9e6f1;border-radius:22px;box-shadow:0 18px 45px rgba(31,77,111,.11);overflow:hidden}.pendulum-scene{position:relative;height:390px;margin:18px;border-radius:20px;overflow:hidden;background:linear-gradient(180deg,#e5f5ff 0 70%,#e6edf1 70%);border:1px solid #cddce6}.pendulum-wall-title{position:absolute;right:22px;top:18px;font-weight:900;letter-spacing:.13em;color:#89aabd;font-size:.76rem}.pendulum-support{position:absolute;left:20%;top:30px;bottom:34px;width:190px}.pendulum-support-pole{position:absolute;left:18px;top:0;bottom:0;width:13px;border-radius:7px;background:linear-gradient(90deg,#607786,#a9bcc8,#536976)}.pendulum-support-top{position:absolute;left:18px;top:0;width:172px;height:13px;border-radius:7px;background:linear-gradient(#aebfc9,#5b707d)}.pendulum-support-base{position:absolute;left:0;bottom:0;width:112px;height:17px;border-radius:50%;background:#516672;box-shadow:0 6px 10px rgba(0,0,0,.18)}.pendulum-pivot{position:absolute;left:calc(20% + 178px);top:37px;width:16px;height:16px;border:5px solid #465a66;border-radius:50%;z-index:6}.pendulum-arm{position:absolute;left:calc(20% + 186px);top:49px;width:2px;height:220px;transform-origin:top center;z-index:4}.pendulum-string{position:absolute;left:0;top:0;width:3px;height:185px;background:linear-gradient(#768c99,#445763);transform:translateX(-1px);border-radius:2px}.pendulum-bob{position:absolute;left:0;top:177px;transform:translateX(-50%);width:72px;height:72px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f0a65f,#b84f36 62%,#873522);color:#fff;display:grid;place-items:center;box-shadow:0 12px 18px rgba(0,0,0,.22)}.pendulum-bob span{font-size:1.55rem;line-height:.7}.pendulum-bob b{font-size:.68rem}.pendulum-angle-guide{position:absolute;left:calc(20% + 55px);top:44px;width:270px;height:110px;border-top:2px dashed rgba(45,101,131,.25);border-radius:50%;display:flex;justify-content:space-between;align-items:flex-end;color:#718b9a;font-size:.68rem}.pendulum-stopwatch{position:absolute;right:7%;top:32%;width:185px;padding:13px 14px;border-radius:16px;background:#112f46;color:#dff9ff;box-shadow:0 12px 26px rgba(0,0,0,.18);display:grid;gap:5px}.pendulum-stopwatch small{color:#9dcbd8}.pendulum-stopwatch b{font:800 1.65rem ui-monospace,monospace;color:#9effc7}.pendulum-stopwatch span{font-size:.82rem}.pendulum-world{position:absolute;right:7%;bottom:58px;padding:8px 11px;border-radius:999px;background:rgba(255,255,255,.92);font-weight:850;color:#2d6078;box-shadow:0 7px 16px rgba(0,0,0,.08)}.pendulum-controls{padding:0 18px 18px;display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:12px;align-items:end}.pendulum-controls label{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:13px;background:#fff;border:1px solid #dce7ef;font-size:.78rem}.pendulum-controls label b{font-size:.9rem}.pendulum-controls select{padding:8px;border-radius:8px;border:1px solid #cad8e2}.pendulum-control-buttons{display:flex;gap:8px;grid-column:1/-1}.pendulum-control-buttons .btn{flex:1}.pendulum-panel{display:grid;gap:14px}.pendulum-metrics{grid-template-columns:repeat(4,1fr)}.pendulum-metrics b{font-size:.88rem}.pendulum-answer-grid{display:grid;gap:9px}.pendulum-answer-grid input,.pendulum-answer-grid select{width:100%;padding:9px;border:1px solid #ccdbe5;border-radius:9px;margin-top:4px}.pendulum-choice-buttons{display:flex;gap:8px;flex-wrap:wrap}.pendulum-choice-buttons button{flex:1;min-width:120px}.pendulum-row-new{animation:rowSlide .45s ease}.pendulum-mystery{background:linear-gradient(135deg,#eef0ff,#f9f6ff);border-color:#d7d5f0}.pendulum-mystery #pendulumWorldBadge{color:#5b4b92}.pendulum-arm.swinging{filter:drop-shadow(0 5px 4px rgba(34,97,125,.22))}
@media(max-width:1250px){.pendulum-lab-grid{grid-template-columns:1fr}.pendulum-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.pendulum-panel>.metric-cards,.pendulum-panel>.chart-card,.pendulum-panel>.table-card{grid-column:1/-1}}
@media(max-width:780px){.pendulum-controls{grid-template-columns:repeat(2,1fr)}.pendulum-control-buttons{flex-direction:column}.pendulum-control-buttons .btn{width:100%}.pendulum-panel{grid-template-columns:1fr}.pendulum-panel>*{grid-column:auto!important}.pendulum-metrics{grid-template-columns:repeat(2,1fr)}.pendulum-scene{height:350px;margin:10px}.pendulum-support{left:8%}.pendulum-pivot{left:calc(8% + 178px)}.pendulum-arm{left:calc(8% + 186px)}.pendulum-angle-guide{left:calc(8% + 55px)}.pendulum-stopwatch{right:3%;top:55%;width:165px}.pendulum-world{right:3%;bottom:25px}}
@media(max-width:520px){.pendulum-controls{grid-template-columns:1fr}.pendulum-scene{height:330px}.pendulum-support{left:1%}.pendulum-pivot{left:calc(1% + 178px)}.pendulum-arm{left:calc(1% + 186px)}.pendulum-angle-guide{left:calc(1% + 55px);width:230px}.pendulum-stopwatch{width:145px;padding:9px}.pendulum-world{font-size:.68rem}}
@media(prefers-reduced-motion:reduce){.pendulum-arm{transition:none}.pendulum-arm.swinging{filter:none}}


/* v1.0.1 — korekta mechanicznego zespolu tarcia: klocek + linka + dynamometr poruszaja sie razem */
.friction-pull-assembly{position:absolute;inset:0;z-index:6;transform:translateX(0);transition:transform .95s ease-out;pointer-events:none}
.friction-pull-assembly .friction-block{left:24%!important}
.friction-pull-assembly .friction-rope{left:calc(24% + 82px)!important;top:55%;width:calc(34% - 82px)!important;min-width:110px;transform:none!important;transition:none!important}
.friction-pull-assembly .friction-gauge{left:58%!important;right:auto!important;top:34%;transform:none!important;transition:none!important}
.friction-pull-assembly .friction-force-arrow{left:51%!important;top:39%;transform:none!important;transition:none!important}
.friction-pull-assembly.moving{animation:frictionAssemblyPull .95s ease-out both}
@keyframes frictionAssemblyPull{from{transform:translateX(0)}to{transform:translateX(68px)}}
.friction-pull-assembly.moving .friction-block{animation:frictionBlockJitterV10 .18s ease-in-out infinite alternate}
@media(max-width:780px){.friction-pull-assembly .friction-block{left:18%!important}.friction-pull-assembly .friction-rope{left:calc(18% + 72px)!important;width:calc(37% - 72px)!important}.friction-pull-assembly .friction-gauge{left:55%!important;top:22%}.friction-pull-assembly .friction-force-arrow{left:48%!important}}
@media(max-width:520px){.friction-pull-assembly .friction-block{left:12%!important}.friction-pull-assembly .friction-rope{left:calc(12% + 65px)!important;width:calc(40% - 65px)!important}.friction-pull-assembly .friction-gauge{left:52%!important;width:135px}.friction-pull-assembly .friction-force-arrow{left:43%!important}}
@media(prefers-reduced-motion:reduce){.friction-pull-assembly{transition:none}.friction-pull-assembly.moving{animation:none;transform:translateX(5px)}}


/* v1.1.0 — Electricity: series / parallel circuits */
.sp-lab-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(340px,.9fr);gap:18px;align-items:start}.sp-workspace,.sp-bench{min-width:0}.sp-bench{background:var(--card,#fff);border:1px solid #dbe7f1;border-radius:22px;overflow:hidden;box-shadow:0 12px 32px rgba(18,64,95,.08)}.sp-circuit{position:relative;min-height:330px;margin:16px;background:linear-gradient(180deg,#edf8ff,#f9fcff);border:1px solid #cde3f2;border-radius:20px;overflow:hidden}.sp-source{position:absolute;left:5%;top:39%;width:110px;height:76px;border-radius:16px;background:#123d5d;color:#fff;display:grid;place-items:center;z-index:4;box-shadow:0 8px 20px #123d5d33}.sp-source span{font-size:25px}.sp-source b{font-size:14px}.sp-resistor{position:absolute;width:116px;height:64px;border-radius:14px;background:linear-gradient(135deg,#f4c16d,#d78a2d);border:3px solid #8d5c24;display:grid;place-items:center;z-index:4;box-shadow:0 8px 18px #8d5c2430;transition:.35s ease}.sp-resistor small{font-weight:900;color:#6c421b}.sp-resistor b{font-size:15px}.topology-series .sp-r1{left:42%;top:25%}.topology-series .sp-r2{left:68%;top:25%}.topology-parallel .sp-r1{left:50%;top:16%}.topology-parallel .sp-r2{left:50%;top:59%}.sp-wire{position:absolute;background:#335c78;z-index:2}.topology-series .sp-wire-top{left:15%;right:8%;top:34%;height:5px}.topology-series .sp-wire-bottom{left:15%;right:8%;top:68%;height:5px}.topology-parallel .sp-wire-top{left:15%;right:8%;top:25%;height:5px;box-shadow:0 142px 0 #335c78}.topology-parallel .sp-wire-bottom{left:36%;width:5px;top:25%;height:147px;box-shadow:260px 0 0 #335c78}.sp-node{position:absolute;width:14px;height:14px;background:#0d86e8;border-radius:50%;z-index:5}.n1{left:35%;top:calc(34% - 5px)}.n2{right:8%;top:calc(34% - 5px)}.n3{left:35%;top:calc(68% - 5px)}.n4{right:8%;top:calc(68% - 5px)}.topology-parallel .n1{left:35%;top:calc(25% - 5px)}.topology-parallel .n2{right:8%;top:calc(25% - 5px)}.topology-parallel .n3{left:35%;top:calc(68% - 5px)}.topology-parallel .n4{right:8%;top:calc(68% - 5px)}.sp-label{position:absolute;right:18px;bottom:14px;font-size:12px;font-weight:900;letter-spacing:.1em;color:#477088;background:#fff;padding:7px 10px;border-radius:999px}.parallel-label{display:none}.topology-parallel .series-label{display:none}.topology-parallel .parallel-label{display:block}.sp-circuit.live{box-shadow:inset 0 0 35px #20b88720}.sp-flow i{display:none;position:absolute;width:9px;height:9px;border-radius:50%;background:#25c79a;box-shadow:0 0 10px #25c79a}.sp-circuit.live .sp-flow i{display:block;animation:spPulse 1s infinite ease-in-out}.sp-flow i:nth-child(1){left:27%;top:32%}.sp-flow i:nth-child(2){left:40%;top:32%;animation-delay:.12s}.sp-flow i:nth-child(3){left:58%;top:32%;animation-delay:.24s}.sp-flow i:nth-child(4){left:76%;top:32%;animation-delay:.36s}.sp-flow i:nth-child(5){left:58%;top:66%;animation-delay:.48s}.sp-flow i:nth-child(6){left:30%;top:66%;animation-delay:.6s}@keyframes spPulse{0%,100%{transform:scale(.7);opacity:.35}50%{transform:scale(1.35);opacity:1}}.sp-controls{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:12px;padding:0 16px 16px}.sp-controls label{display:flex;flex-direction:column;gap:6px;font-size:13px}.sp-controls select,.sp-controls input{width:100%}.sp-control-buttons{display:flex;gap:8px;align-items:end;grid-column:span 4;flex-wrap:wrap}.sp-metrics{grid-template-columns:repeat(2,1fr)}.sp-answer-grid{display:grid;gap:10px}.sp-choice-buttons{display:flex;gap:8px;flex-wrap:wrap}.sp-answer-grid input{max-width:140px}.sp-measurement-new{animation:measurementFlash .7s ease}@media(max-width:1180px){.sp-lab-grid{grid-template-columns:1fr}.sp-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.sp-panel>.sp-metrics{grid-column:1/-1}}@media(max-width:720px){.sp-controls{grid-template-columns:1fr 1fr}.sp-control-buttons{grid-column:span 2}.sp-panel{display:block}.sp-circuit{min-height:300px}.sp-resistor{width:92px}.topology-series .sp-r1{left:38%}.topology-series .sp-r2{left:66%}.topology-parallel .sp-r1,.topology-parallel .sp-r2{left:49%}}

/* v1.2.0 — projectile motion + cosmic velocities */
.projectile-lab-grid,.cosmic-lab-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,.85fr);gap:18px;align-items:start}
.projectile-workspace,.cosmic-workspace,.projectile-panel,.cosmic-panel{min-width:0}
.projectile-bench,.cosmic-bench{background:var(--surface,#fff);border:1px solid rgba(40,76,102,.14);border-radius:22px;overflow:hidden;box-shadow:0 14px 35px rgba(34,63,86,.08)}
.projectile-scene{position:relative;background:linear-gradient(#dff4ff 0 72%,#e6d4a7 72% 76%,#8fcf72 76%);min-height:360px;overflow:hidden}
.projectile-scene canvas{display:block;width:100%;height:auto;max-height:430px}
.projectile-scene-label{position:absolute;top:14px;left:16px;background:rgba(255,255,255,.78);backdrop-filter:blur(8px);padding:7px 11px;border-radius:999px;font-size:.78rem;font-weight:800;letter-spacing:.08em;color:#315b75}
.projectile-controls,.cosmic-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px;background:#f7fbfe;border-top:1px solid #e2edf4}
.projectile-controls label,.cosmic-controls label{display:grid;gap:7px;background:#fff;border:1px solid #e1ebf2;border-radius:14px;padding:11px}
.projectile-controls label b,.cosmic-controls label b{color:#123e5d}
.projectile-controls input[type=range],.cosmic-controls input[type=range]{width:100%}
.projectile-control-buttons,.cosmic-control-buttons{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap}
.projectile-panel,.cosmic-panel{display:grid;gap:14px}
.projectile-metrics,.cosmic-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
.projectile-metrics article b{font-size:1rem}
.projectile-banner,.cosmic-banner{margin-bottom:14px}
.cosmic-scene{position:relative;min-height:390px;overflow:hidden;background:radial-gradient(circle at 78% 18%,rgba(255,209,70,.18),transparent 16%),radial-gradient(circle at 50% 50%,#17304c 0,#0b162b 52%,#050914 100%)}
.cosmic-stars{position:absolute;inset:0;background-image:radial-gradient(#fff 1px,transparent 1px),radial-gradient(#9ed7ff 1px,transparent 1px);background-size:41px 41px,67px 67px;background-position:0 0,20px 25px;opacity:.7}
.cosmic-earth{position:absolute;left:20%;top:50%;transform:translate(-50%,-50%);font-size:74px;filter:drop-shadow(0 0 24px rgba(64,176,255,.7));z-index:3}
.cosmic-orbit{position:absolute;left:20%;top:50%;width:190px;height:190px;border:1px dashed rgba(154,218,255,.55);border-radius:50%;transform:translate(-50%,-50%)}
.cosmic-sun{position:absolute;right:7%;top:13%;font-size:60px;filter:drop-shadow(0 0 28px rgba(255,196,58,.7));z-index:2}
.cosmic-rocket{position:absolute;left:31%;top:42%;font-size:34px;z-index:5;transition:transform 1.6s cubic-bezier(.18,.75,.2,1),left 1.6s cubic-bezier(.18,.75,.2,1),top 1.6s cubic-bezier(.18,.75,.2,1);transform:rotate(42deg)}
.cosmic-scene.run-orbit .cosmic-rocket{left:15%;top:24%;transform:rotate(130deg)}
.cosmic-scene.run-earth-escape .cosmic-rocket{left:58%;top:23%;transform:rotate(35deg)}
.cosmic-scene.run-solar-escape .cosmic-rocket{left:88%;top:7%;transform:rotate(35deg)}
.cosmic-scene.run-fall .cosmic-rocket{left:23%;top:55%;transform:rotate(105deg)}
.cosmic-outcome{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);z-index:8;background:rgba(7,18,36,.78);border:1px solid rgba(166,219,255,.35);color:#fff;padding:9px 15px;border-radius:999px;font-weight:800;white-space:nowrap}
.cosmic-controls select,.projectile-controls select{width:100%;padding:8px;border:1px solid #ccdce7;border-radius:9px;background:#fff}
@media(max-width:1180px){.projectile-lab-grid,.cosmic-lab-grid{grid-template-columns:1fr}.projectile-panel,.cosmic-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.projectile-panel>.metric-cards,.cosmic-panel>.metric-cards{grid-column:1/-1}}
@media(max-width:720px){.projectile-controls,.cosmic-controls{grid-template-columns:1fr}.projectile-panel,.cosmic-panel{grid-template-columns:1fr}.projectile-scene{min-height:260px}.cosmic-scene{min-height:310px}.cosmic-outcome{white-space:normal;width:80%;text-align:center}}
body.reduced-motion .cosmic-rocket{transition:none!important}
