/* VitenArena (formerly Question Race 2.0) – dashboards, forms and student pages.
   Builds on the palette and typography in style.css. */
.page{flex:1;padding:26px 0 30px}
.page-narrow{max-width:520px;margin:0 auto;width:100%}
.page-medium{max-width:900px;margin:0 auto;width:100%}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.page-head h1,.title{font:900 clamp(32px,4vw,52px)/1 'Barlow Condensed',Impact,sans-serif;margin:0;letter-spacing:.5px}
.page-head p{margin:6px 0 0;color:var(--muted);font-weight:700}
h2.section{font:900 26px 'Barlow Condensed';margin:26px 0 12px;letter-spacing:.4px}
h3{font:900 21px 'Barlow Condensed';margin:0 0 10px;letter-spacing:.3px}
a{color:#7fd3ff}
.card{background:linear-gradient(160deg,#132e52,#0a1c35);border:2px solid #2f5d8a;border-radius:16px;padding:18px;box-shadow:0 10px 30px #0006}
.card+.card{margin-top:14px}
.grid>.card+.card{margin-top:0} /* the grid gap spaces cards in a grid */
.card.highlight{border-color:#ffca33}
.playtime-chart{max-width:560px}
.safety-actions summary{cursor:pointer;font-weight:800;min-height:36px;display:flex;align-items:center}
.safety-form{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin:8px 0}
.safety-form label{display:flex;flex-direction:column;gap:4px;font-weight:700;font-size:14px}
.safety-form select,.safety-form input{min-height:40px;border-radius:10px;border:2px solid #2b537c;background:#071931;color:var(--qr-text);padding:0 10px;font:700 15px Nunito,system-ui,sans-serif}
.inline-form-small{display:inline}
.family-board .medal{font-size:22px;width:36px}
@media(max-width:639px){
  .family-board thead{display:none}
  .family-board table,.family-board tbody,.family-board tr,.family-board td{display:block;width:100%}
  .family-board tr{border:2px solid #2b537c;border-radius:12px;padding:8px 12px;margin-bottom:8px}
  .family-board .table td{display:flex;justify-content:space-between;gap:10px;border:0;padding:3px 0;text-align:left}
  .family-board td[data-label]::before{content:attr(data-label);color:var(--qr-muted);font-weight:700}
  .family-board .table td.medal{width:auto;padding:0;font-size:20px}
  .family-board .table td.medal:empty{display:none}
}
.greeting-log{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}
.register-paths{display:flex;flex-direction:column;gap:12px;margin:14px 0}
.lede-q{font-size:20px;font-weight:800;margin:6px 0}
.play-now .card{display:flex;flex-direction:column;gap:8px}
.play-now .card .actions,.play-now .card form{margin-top:auto}
.my-car__row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.my-car__row img{width:min(240px,100%)}
.dash-more{margin-top:18px}
.dash-more>summary{cursor:pointer;font:800 18px 'Barlow Condensed',sans-serif;letter-spacing:.5px;min-height:44px;display:flex;align-items:center}
.fm-modes{display:flex;flex-direction:column;gap:12px}
.fm-mode{padding:0;overflow:hidden}
.fm-mode>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:14px;padding:16px 18px;min-height:72px}
.fm-mode>summary::-webkit-details-marker{display:none}
.fm-mode>summary strong{display:block;font:900 26px/1 'Barlow Condensed',sans-serif;letter-spacing:.5px}
.fm-mode>summary small{display:block;color:var(--muted);font-weight:700;margin-top:4px}
.fm-mode__icon{font-size:34px}
.fm-mode[open]>summary{border-bottom:1px solid #2b537c}
.fm-mode__body{padding:16px 18px}
.fm-rules-box{margin-top:12px}.fm-rules-box summary{cursor:pointer;font-weight:800}
.code-box-form{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.code-box-form__row{display:flex;gap:10px;flex-wrap:wrap}
.code-box-form__row input{flex:1;min-width:0;min-height:48px;border-radius:12px;border:2px solid #2b537c;background:#071931;color:var(--qr-text);padding:0 14px;font:800 20px Nunito,system-ui,sans-serif;letter-spacing:2px;text-transform:uppercase}
.copy-link{word-break:break-all;user-select:all}
.next-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:14px}
.next-steps .card.done{opacity:.7}
.next-steps h3{margin:0 0 6px}
.parent-code{font-size:28px;letter-spacing:4px;display:inline-block;margin:6px 0}
.waiting-card{margin-bottom:14px}.waiting-card p{margin:0}
.grid{display:grid;gap:14px}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.stat{display:flex;flex-direction:column;gap:2px}
.stat strong{font:900 40px/1 'Barlow Condensed';color:#ffd54a}
.stat span{color:var(--muted);font-weight:800;font-size:13px;letter-spacing:.5px;text-transform:uppercase}
.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.actions form{margin:0}
.btn.inline,.actions .btn{width:auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none}
a.btn{display:inline-block;text-align:center;text-decoration:none}
.btn.danger{background:linear-gradient(#ff6c70,#d23744);color:#fff;border-color:#ffb3b6;box-shadow:0 4px 0 #7a1720}
.btn.success{background:linear-gradient(#5be86a,#1cac49);color:#08260f;border-color:#98ffa3;box-shadow:0 4px 0 #0d5a24}
.btn.small{padding:7px 12px;font-size:13px;box-shadow:none}
.btn.big{min-height:64px;font-size:20px}
.muted{color:var(--muted)}
.help{color:var(--muted);font-size:13px;margin:4px 0 0}
.empty{color:var(--muted);font-weight:700;padding:10px 0}

/* Forms */
.form p,.form .field{margin:0 0 14px}
.form label{display:block;font-size:12px;font-weight:900;color:#b3d8fa;letter-spacing:1px;margin:0 0 6px;text-transform:uppercase}
.form input[type=text],.form input[type=password],.form input[type=email],.form input[type=number],.form select,.form textarea{width:100%;border:2px solid #386391;border-radius:10px;background:#071931;color:#fff;padding:12px 14px;font-size:17px;outline:none}
.form input:focus,.form select:focus{border-color:#3acefb}
.form input[type=checkbox]{width:22px;height:22px;vertical-align:middle;margin-right:6px;accent-color:#ffca33}
.form .check label{display:inline;text-transform:none;letter-spacing:0;font-size:15px;color:#e3f2ff}
.form .helptext,.form .help{display:block;color:var(--muted);font-size:12px;margin-top:4px}
.form ul.errorlist,.errorlist{list-style:none;margin:6px 0;padding:8px 12px;background:#3a1625;border:1px solid #f8828c;border-radius:9px;color:#ffd5d8;font-weight:800;font-size:14px}
.form .row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
fieldset{border:1px solid #2f5d8a;border-radius:12px;padding:12px 14px;margin:0 0 14px}
legend{font-weight:900;color:#b3d8fa;padding:0 6px}

/* Messages */
.messages{list-style:none;padding:0;margin:16px 0 0}
.messages li{padding:12px 16px;border-radius:12px;font-weight:800;margin-bottom:8px;border:2px solid #3c74ae;background:#102746}
.messages .success{border-color:#5be86a;background:#0f3322}
.messages .error{border-color:#f8828c;background:#3a1625}
.messages .warning{border-color:#ffca33;background:#3a2f10}

/* Tables */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.table{width:100%;border-collapse:collapse;font-size:15px}
.table th{text-align:left;font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:#9fc6ea;padding:8px 10px;border-bottom:2px solid #2f5d8a}
.table td{padding:10px;border-bottom:1px solid #20456b;vertical-align:middle}
.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}

/* Badges and chips */
.badge{display:inline-block;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:900;letter-spacing:.4px;background:#214870;border:1px solid #4d7bb4;white-space:nowrap}
.badge.green{background:#11402a;border-color:#5be86a;color:#b9ffc4}
.badge.yellow{background:#47380d;border-color:#ffca33;color:#ffe9a0}
.badge.red{background:#4a1722;border-color:#f8828c;color:#ffd3d6}
.badge.blue{background:#0f3557;border-color:#3acefb;color:#c7efff}
.badge.gray{background:#24334a;border-color:#5a6f8c;color:#c4d2e4}
.code-box{display:inline-flex;align-items:center;gap:10px;background:#071931;border:2px dashed #ffca33;border-radius:12px;padding:8px 16px;font:900 34px 'Barlow Condensed';letter-spacing:4px;color:#ffd54a}

/* Tabs */
.tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:2px solid #2f5d8a;margin:6px 0 16px}
.tabs a{padding:10px 16px;border-radius:10px 10px 0 0;text-decoration:none;color:#cbe6ff;font-weight:900;background:#0f2442;border:2px solid transparent;border-bottom:0;margin-bottom:-2px}
.tabs a.active{background:#173a63;border-color:#2f5d8a;color:#ffd54a}

/* Nav: a few main links for the role, account actions in one menu */
.nav{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.nav>a,.user-menu summary{color:#dff1ff;text-decoration:none;font-weight:900;font-size:14px;padding:8px 12px;border-radius:10px;border:1px solid transparent}
.nav>a:hover,.user-menu summary:hover{background:#112a4b;border-color:#34618a}
.nav>a.active{background:#173a63;border-color:#4f86bd;color:#ffd54a}
.nav .badge{margin-left:4px}
.user-menu{position:relative}
.user-menu summary{list-style:none;cursor:pointer;color:var(--muted);background:#0d223f;border-color:#2b537c}
.user-menu summary::-webkit-details-marker{display:none}
.user-menu summary::after{content:' ▾'}
.user-menu .menu{position:absolute;right:0;top:calc(100% + 6px);min-width:190px;display:flex;flex-direction:column;gap:2px;padding:6px;background:#0b1d36;border:2px solid #2f5d8a;border-radius:12px;box-shadow:0 12px 30px #0008;z-index:20}
.user-menu .menu a,.user-menu .menu button{display:block;width:100%;text-align:left;color:#dff1ff;text-decoration:none;font-weight:800;font-size:14px;padding:9px 12px;border-radius:8px;background:none;border:0}
.user-menu .menu a:hover,.user-menu .menu button:hover{background:#173a63}
.user-menu .menu form{margin:0;border-top:1px solid #2b537c;padding-top:2px}


/* Home */
.home-login{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,440px);gap:28px;align-items:center}
.home-login .page-head{margin:0}
.home-extra{text-align:center;margin-top:18px}
@media(max-width:800px){.home-login{grid-template-columns:1fr}}
.choice{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit;min-height:150px;justify-content:center}
.choice strong{font:900 30px 'Barlow Condensed'}
.choice span{color:var(--muted);font-weight:700}
.choice:hover{border-color:#ffca33}

/* Student pages: big, touch-friendly */
.student .btn{min-height:56px;font-size:18px}
.race-tile{display:flex;flex-direction:column;gap:10px}
.race-tile .meta{display:flex;flex-wrap:wrap;gap:6px}
.status-line{font:900 22px 'Barlow Condensed';color:#ffd54a}
.coins{font:900 36px 'Barlow Condensed';color:#ffd54a}
.garage{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.garage form{margin:0}
.garage button{width:100%;border:3px solid #3a628c;border-radius:14px;background:#09192f;padding:8px;color:#fff;font-weight:900;min-height:120px}
.garage button.selected{border-color:#ffca33;box-shadow:0 0 0 3px #ffca3340}
.garage img{width:100%;height:auto}
.reward-list{display:flex;flex-wrap:wrap;gap:10px}
.reward{background:#0f2b4c;border:2px solid #ffca33;border-radius:14px;padding:10px 14px;font-weight:900}

/* Progress bars and charts */
.bar{height:14px;background:#0a1c33;border-radius:999px;overflow:hidden;border:1px solid #2f5d8a}
.bar>span{display:block;height:100%;background:linear-gradient(90deg,#2bb3ff,#5be86a)}
.chart{width:100%;height:auto;display:block}
.chart text{fill:#bcd6ee;font:700 15px Nunito,sans-serif}
.chart .axis{stroke:#3b6890;stroke-width:1}
.chart .grid{stroke:#1d3d61;stroke-width:1}
.chart .line{fill:none;stroke:#ffd54a;stroke-width:3}
.chart .dot{fill:#ffd54a}
.chart .barfill{fill:#2bb3ff}
.chart .barfill.alt{fill:#5be86a}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted);font-weight:800}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px}

/* Race lobby / play */
.lobby-status{text-align:center;padding:24px}
.lobby-status .status-line{font-size:34px}
.countdown{position:absolute;inset:0;display:grid;place-items:center;font:900 clamp(80px,14vw,200px) 'Barlow Condensed';color:#ffd54a;text-shadow:5px 6px #031121;pointer-events:none}
.celebrate{text-align:center}
.celebrate .big-emoji{font-size:64px}

/* Spectator / big screen */
body.bigscreen .app{max-width:none;padding:0}
body.bigscreen footer{display:none}
.bigscreen-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.2vh 1.2vw;gap:1vh;min-height:100vh}
.bigscreen-frame{width:min(100%,calc((100vh - 190px) * 16 / 9));aspect-ratio:16/9;position:relative;border:3px solid #4175ab;border-radius:18px;overflow:hidden;background:#122742}
.bigscreen-frame #race-canvas{width:100%;height:100%;aspect-ratio:auto;min-height:0}
.bigscreen-head{width:min(100%,calc((100vh - 190px) * 16 / 9));display:flex;align-items:center;justify-content:space-between;gap:12px}
.bigscreen-head h1{font:900 clamp(26px,3.4vw,56px)/1 'Barlow Condensed';margin:0}
.results{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.results .leader-chip{font-size:clamp(14px,1.4vw,22px)}

@media(max-width:1000px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:1fr 1fr}.garage{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.garage{grid-template-columns:repeat(2,minmax(0,1fr))}.page-head{align-items:flex-start}.topbar .nav{gap:2px}.nav>a,.user-menu summary{padding:6px 8px;font-size:12px}}
.form ul[id$="_topics"],.form ul[id$="_students"],.form div[id$="_topics"],.form div[id$="_students"]{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px 16px}
.form div[id$="_topics"] label,.form div[id$="_students"] label{display:inline-flex;align-items:center;text-transform:none;letter-spacing:0;font-size:15px;color:#e3f2ff;min-height:40px}
.form div[id$="_mode"],.form div[id$="_selection"]{display:flex;flex-wrap:wrap;gap:6px 18px}
.form div[id$="_mode"] label,.form div[id$="_selection"] label{display:inline-flex;align-items:center;gap:6px;text-transform:none;letter-spacing:0;font-size:15px;color:#e3f2ff;min-height:40px}
.form input[type=radio]{width:20px;height:20px;accent-color:#ffca33}
.lane-list{display:grid;gap:8px}
.lane{display:flex;align-items:center;gap:12px;background:#0b2240;border:1px solid #2f5d8a;border-radius:12px;padding:8px 12px}
.lane img{width:110px;height:auto}
.lane .lane-no{font:900 22px 'Barlow Condensed';color:#ffd54a;width:28px}
.hint-box{margin-top:10px;padding:12px 14px;border-radius:12px;background:#3a2f10;border:2px solid #ffca33;color:#fff1c2;font-weight:800}
.hint-box.explanation{background:#0f3322;border-color:#5be86a;color:#d8ffe0}
.answers button.wrong{opacity:.35;filter:grayscale(.7)}
.answers button:disabled{cursor:not-allowed}
.powers{grid-template-columns:repeat(4,1fr)}
.power.shield{background:linear-gradient(#5be86a,#1d9a48);border-color:#b3ffbd}
.power[hidden]{display:none!important}
.power.active{box-shadow:0 0 0 3px #ffca33,0 0 18px #ffca3399}
body.play .page{padding-top:6px}
@media(max-width:1000px){.powers{grid-template-columns:repeat(4,1fr)}}
@media(max-width:580px){.powers{grid-template-columns:repeat(2,1fr)}}
.plain-list{margin:0;padding-left:18px;line-height:1.9}
/* Lobby */
.lobby-layout{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:14px;align-items:start}
.lobby-layout .card+.card{margin-top:0}
.channel-list{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:4px}
.channel-list li{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:10px}
.channel-list li.active{background:#173a63}
.channel-name{background:none;border:0;color:#dff1ff;font-weight:900;font-size:15px;text-align:left;flex:1;padding:6px 4px}
.channel-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.member-list{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.member{background:#0f2442;border:2px solid #2f5d8a;border-radius:10px;color:#dff1ff;font-weight:800;padding:6px 10px}
.member.selected{border-color:#ffca33;color:#ffd54a}
.member.me{opacity:.7}
.greet-buttons{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}
.greeting-feed{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:360px;overflow:auto}
.greeting-feed li{background:#0b1d36;border:1px solid #2b537c;border-radius:10px;padding:8px 10px}
.greeting-feed li.to-me{border-color:#ffca33}
.greeting-feed .icon{margin-right:6px}
.greeting-feed .time{float:right}
@media(max-width:700px){.lobby-layout{grid-template-columns:1fr}}
.greeting-feed li.announcement{border-color:#3acefb;background:#0e2a4a}
.greeting-feed .join-link{margin-left:6px;padding:4px 10px}
/* Motivation: daily challenge, badges, class goal */
.daily-steps{display:flex;gap:8px;margin:0 0 14px}
.daily-steps span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:900;background:#0f2442;border:2px solid #2f5d8a;color:#7f9cbc}
.daily-steps span.done{background:#1cac49;border-color:#98ffa3;color:#fff}
.daily-steps span.now{border-color:#ffca33;color:#ffd54a}
.streak-badge{font:900 24px 'Barlow Condensed';color:#ffb347;background:#2a1a0a;border:2px solid #ff8c2a;border-radius:14px;padding:8px 14px}
.daily-right{border-color:#5be86a}.daily-wrong{border-color:#ffca33}
.hint-box{background:#0b1d36;border:1px dashed #ffca33;border-radius:10px;padding:8px 12px}
.new-badge{font-weight:900;color:#ffd54a}
.goal-bar{height:18px;background:#0b1d36;border:2px solid #2f5d8a;border-radius:12px;overflow:hidden}
.goal-bar span{display:block;height:100%;background:linear-gradient(90deg,#2bb3ff,#5be86a)}
.goal-bar.big{height:42px;border-radius:22px}
.goal-board{text-align:center}
.goal-numbers{font:900 34px 'Barlow Condensed'}
.goal-numbers strong{color:#ffd54a;font-size:64px}
.inline-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.badge-grid{display:flex;flex-wrap:wrap;gap:10px}
.badge-card{background:#0f2b4c;border:2px solid #3acefb;border-radius:14px;padding:10px 14px;font-weight:900}
/* Garage shop and seasons */
.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.shop-item{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;background:#0f2442;border:2px solid #2f5d8a;border-radius:14px;padding:12px;margin:0}
.shop-item.equipped{border-color:#5be86a}
.shop-item.locked{opacity:.85}
.shop-icon{font-size:34px}
.season-card{margin-top:16px}
.fact{background:#0b1d36;border-left:4px solid #3acefb;border-radius:8px;padding:8px 12px}
.weekly-summary li{margin:4px 0}
/* Login panel: futuristic, pure CSS (no scripts – CSP) */
.login-panel{--neon:#3acefb;--neon2:#ffca33;position:relative;border-radius:24px;padding:2px;isolation:isolate;
  background:conic-gradient(from var(--spin,0deg),#3acefb,#7b5cff,#ff5fc8,#ffca33,#3acefb);
  box-shadow:0 0 0 1px #3acefb33,0 18px 60px #000a,0 0 60px #3acefb22;animation:login-spin 8s linear infinite}
@property --spin{syntax:'<angle>';inherits:false;initial-value:0deg}
@keyframes login-spin{to{--spin:360deg}}
.login-panel__inner{position:relative;overflow:hidden;border-radius:22px;padding:28px 28px 22px;
  background:radial-gradient(120% 80% at 0% 0%,#1a3f7a 0%,transparent 55%),linear-gradient(165deg,#0d2346f2,#050d1ff7)}
.login-panel__inner::before{content:'';position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.35;
  background-image:linear-gradient(#3acefb14 1px,transparent 1px),linear-gradient(90deg,#3acefb14 1px,transparent 1px);
  background-size:24px 24px;mask-image:linear-gradient(180deg,#000 0%,transparent 75%)}
.login-panel__inner::after{content:'';position:absolute;left:0;right:0;top:-40%;height:40%;pointer-events:none;z-index:0;
  background:linear-gradient(180deg,transparent,#3acefb18,transparent);animation:login-scan 5s ease-in-out infinite}
@keyframes login-scan{0%{transform:translateY(0)}100%{transform:translateY(350%)}}
.login-panel__inner>*{position:relative;z-index:1}
.login-panel__head{margin:0 0 22px}
.login-panel__status{display:inline-flex;align-items:center;gap:8px;margin:0 0 10px;font:800 11px Nunito;letter-spacing:3px;
  text-transform:uppercase;color:#7fe7ff;background:#071a33;border:1px solid #3acefb55;border-radius:999px;padding:5px 12px}
.login-panel__light{width:8px;height:8px;border-radius:50%;background:#5be86a;box-shadow:0 0 10px #5be86a;animation:login-blink 1.6s ease-in-out infinite}
@keyframes login-blink{50%{opacity:.35}}
.login-panel__title{margin:0;font:900 italic clamp(44px,7vw,62px)/1.05 'Barlow Condensed',Impact,sans-serif;letter-spacing:1px;
  text-transform:uppercase;background:linear-gradient(90deg,#fff 0%,#bdf3ff 45%,#ffca33 100%);-webkit-background-clip:text;
  background-clip:text;color:transparent;filter:drop-shadow(0 0 14px #3acefb55)}
.login-panel__sub{margin:6px 0 14px;color:#a9cdf0;font-weight:700}
.login-panel__flag{height:10px;border-radius:3px;opacity:.85;
  background:repeating-conic-gradient(#f2f7ff 0 25%,#0a1830 0 50%) 0 0/10px 10px;
  mask-image:linear-gradient(90deg,#000 0%,#000 40%,transparent 100%)}
.login-panel__form{display:flex;flex-direction:column;gap:16px}
.login-field label{display:block;margin:0 0 7px;font:900 12px Nunito;letter-spacing:2px;text-transform:uppercase;color:#9fd9ff}
.login-field__box{position:relative}
.login-field__icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#5f8fbf;display:flex;transition:color .2s}
.login-field input{width:100%;height:54px;padding:0 16px 0 46px;border-radius:12px;border:1.5px solid #2c5a8a;background:#040c1cdd;
  color:#fff;font:700 17px Nunito;letter-spacing:.5px;outline:none;transition:border-color .2s,box-shadow .2s}
.login-field input:focus{border-color:var(--neon);box-shadow:0 0 0 3px #3acefb33,0 0 22px #3acefb44}
.login-field__box:focus-within .login-field__icon{color:var(--neon)}
.login-panel__go{position:relative;overflow:hidden;margin-top:6px;height:58px;border:0;border-radius:14px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:12px;color:#14122a;font:900 italic 24px 'Barlow Condensed',Impact,sans-serif;
  letter-spacing:2px;text-transform:uppercase;background:linear-gradient(90deg,#ffe066,#ffb02e 55%,#ff7a2e);
  box-shadow:0 6px 0 #a5510f,0 0 26px #ffb02e55;transition:transform .15s,box-shadow .15s}
.login-panel__go::after{content:'';position:absolute;top:0;bottom:0;width:40%;left:-60%;transform:skewX(-20deg);
  background:linear-gradient(90deg,transparent,#ffffff88,transparent);animation:login-shine 3.2s ease-in-out infinite}
@keyframes login-shine{0%,60%{left:-60%}100%{left:130%}}
.login-panel__go:hover{transform:translateY(-1px);box-shadow:0 7px 0 #a5510f,0 0 36px #ffb02e88}
.login-panel__go:active{transform:translateY(4px);box-shadow:0 2px 0 #a5510f}
.login-panel__go:focus-visible{outline:3px solid var(--neon);outline-offset:3px}
.login-panel__go span{position:relative;z-index:1}
.login-panel__arrow{letter-spacing:-3px}
.login-panel__foot{margin-top:24px;padding-top:16px;border-top:1px solid #2c5a8a66}
.login-panel__foot p{margin:0;font-size:15px;color:#cfe6ff}
.login-panel__foot a{color:#7fe7ff;font-weight:800}
.login-panel__foot .login-panel__hint{margin-top:8px;color:#7f9cbc;font-size:13px}
.login-panel .errorlist{margin:0}
@media(max-width:480px){.login-panel__inner{padding:22px 18px 18px}}
@media(prefers-reduced-motion:reduce){.login-panel,.login-panel__inner::after,.login-panel__light,.login-panel__go::after{animation:none}}
.ghost-card{border-color:#9bb8ff;background:linear-gradient(160deg,#1b2a5a,#0a1530)}
/* Backdrop for the login, home and sign-up pages: night sky, neon horizon and a moving grid floor */
.auth-scene{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;
  background:radial-gradient(60% 45% at 18% 20%,#1b3f8a55,transparent 70%),radial-gradient(50% 40% at 85% 15%,#8a1b7a44,transparent 70%),
  linear-gradient(180deg,#030714 0%,#07122b 45%,#140a2e 62%,#05030f 100%)}
.auth-scene+.app{position:relative;z-index:1}
.auth-scene__stars{position:absolute;inset:0 0 40% 0;opacity:.8;animation:auth-twinkle 6s ease-in-out infinite alternate;
  background-image:radial-gradient(1.5px 1.5px at 20px 30px,#fff,transparent),radial-gradient(1px 1px at 120px 80px,#bfe9ff,transparent),
  radial-gradient(1.5px 1.5px at 200px 20px,#ffe6ff,transparent),radial-gradient(1px 1px at 260px 140px,#fff,transparent),
  radial-gradient(1px 1px at 60px 170px,#cfe8ff,transparent);background-size:300px 200px}
@keyframes auth-twinkle{to{opacity:.45}}
.auth-scene__horizon{position:absolute;left:-10%;right:-10%;top:58%;height:2px;
  background:linear-gradient(90deg,transparent,#ff5fc8 20%,#ffca33 50%,#3acefb 80%,transparent);
  box-shadow:0 0 18px 4px #ff5fc888,0 0 60px 14px #3acefb44}
.auth-scene__horizon::before{content:'';position:absolute;left:50%;bottom:2px;width:min(46vw,520px);aspect-ratio:2/1;transform:translateX(-50%);
  border-radius:520px 520px 0 0;opacity:.55;filter:blur(1px);
  background:repeating-linear-gradient(180deg,transparent 0 10px,#05030f 10px 13px),linear-gradient(180deg,#ffca33,#ff5fc8 60%,#7b5cff)}
.auth-scene__floor{position:absolute;left:-50%;right:-50%;top:58%;bottom:-20%;transform-origin:top center;
  transform:perspective(420px) rotateX(62deg);
  background-image:linear-gradient(#3acefbcc 2px,transparent 2px),linear-gradient(90deg,#3acefb99 2px,transparent 2px);
  background-size:64px 64px;animation:auth-drive 1.1s linear infinite;
  mask-image:linear-gradient(180deg,transparent 0%,#000 25%,#000 100%)}
@keyframes auth-drive{to{background-position:0 64px}}
.auth-scene__streaks i{position:absolute;height:2px;width:160px;border-radius:2px;opacity:0;
  background:linear-gradient(90deg,transparent,#bfefff);animation:auth-streak 3.4s linear infinite}
.auth-scene__streaks i:nth-child(1){top:22%;animation-delay:0s}
.auth-scene__streaks i:nth-child(2){top:34%;animation-delay:1.1s;width:220px}
.auth-scene__streaks i:nth-child(3){top:46%;animation-delay:2.2s;background:linear-gradient(90deg,transparent,#ffb3ec)}
.auth-scene__streaks i:nth-child(4){top:12%;animation-delay:.6s;width:120px}
.auth-scene__streaks i:nth-child(5){top:52%;animation-delay:2.8s;background:linear-gradient(90deg,transparent,#ffe08a)}
@keyframes auth-streak{0%{transform:translateX(-30vw);opacity:0}10%{opacity:.9}100%{transform:translateX(130vw);opacity:0}}
@media(prefers-reduced-motion:reduce){.auth-scene__stars,.auth-scene__floor,.auth-scene__streaks i{animation:none}.auth-scene__streaks{display:none}}
/* Text over the scene stays readable */
.auth-scene~.app .page-head,.auth-scene~.app .home-extra{text-shadow:0 2px 12px #000c,0 0 2px #000}
.auth-scene~.app footer{background:#030714cc;border-radius:12px 12px 0 0;backdrop-filter:blur(4px)}
/* «Kom i gang» */
.intro-hero{margin-bottom:18px}
.intro-hero .title{margin:6px 0 8px}
.intro-hero p{margin:0 0 10px;color:#cfe6ff}
.intro-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.intro-step{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;background:linear-gradient(160deg,#132e52,#0a1c35);
  border:2px solid #2f5d8a;border-radius:16px;padding:14px 16px;transition:border-color .2s}
.intro-step.done{border-color:#3fbf6a;background:linear-gradient(160deg,#123a33,#0a1f25)}
.intro-step__body h2{margin:0 0 4px;font:900 22px 'Barlow Condensed'}
.intro-step__body p{margin:0;color:var(--muted)}
.intro-step.done .intro-step__body h2{color:#9df0b9}
.intro-step__check{margin:0;display:flex;align-items:center;gap:8px}
.intro-check{position:relative;display:inline-block;width:34px;height:34px;cursor:pointer}
.intro-check input{position:absolute;opacity:0;width:34px;height:34px;margin:0;cursor:pointer}
.intro-check span{position:absolute;inset:0;border-radius:10px;border:2px solid #3acefb;background:#071931;box-shadow:0 0 12px #3acefb33}
.intro-check input:checked+span{background:linear-gradient(135deg,#5be86a,#1cac49);border-color:#98ffa3}
.intro-check input:checked+span::after{content:'✓';position:absolute;inset:0;display:grid;place-items:center;color:#05210f;font:900 22px Nunito}
.intro-check input:focus-visible+span{outline:3px solid #ffca33;outline-offset:2px}
.intro-actions{margin-top:18px}
.intro-card{border-color:#ffca33;margin-bottom:14px}
.intro-card__head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.intro-card__head form{margin:0}
.intro-mini{list-style:none;margin:6px 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px}
.intro-mini li.done{color:#9df0b9}
@media(max-width:640px){.intro-step{grid-template-columns:auto 1fr}.intro-step>.btn{grid-column:1/-1}}
.hp{position:absolute!important;left:-10000px;width:1px;height:1px;overflow:hidden}
/* 4-minutteren: calm, readable maths (tokens from the spec, mapped to the app's palette) */
.fm-wrap{--qr-card:#112848;--qr-border:#315d88;--qr-yellow:#ffcd29;--qr-blue:#33c2ff;--qr-success:#5be86a;--qr-text:#f5f9ff;--qr-muted:#b6d5f7;
  max-width:1100px;margin:0 auto;width:100%}
.fm-head{margin:0 0 14px}.fm-head .title{margin:0 0 4px}.fm-head p{margin:0;color:var(--qr-muted);font-weight:700}
.fm-h2{font:900 26px 'Barlow Condensed';margin:0 0 10px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.fm-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:12px}
.fm-actions form{margin:0}
.fm-wrap .btn,.fm-wrap button{min-height:48px}
.fm-wrap :focus-visible{outline:3px solid var(--qr-blue);outline-offset:2px}
.fm-banner{background:#0b1d36;border:2px solid var(--qr-blue);border-radius:12px;padding:10px 14px;font-weight:800}
.fm-center{text-align:center}.fm-big{font:900 30px 'Barlow Condensed';margin:6px 0}
/* time track */
.fm-track{margin:0 0 14px}
.fm-track__label{display:flex;justify-content:space-between;font-weight:900;font-size:14px;color:var(--qr-text);margin-bottom:6px}
.fm-track__bar{height:14px;border-radius:8px;background:#1d3a60;overflow:hidden}
.fm-track__bar span{display:block;height:100%;width:0;background:var(--qr-blue);border-radius:8px;transition:width 1s linear}
.fm-clock-toggle{display:inline-flex;align-items:center;gap:6px;margin-top:6px;font-size:14px;color:var(--qr-muted);min-height:32px}
.fm-clock-toggle input{width:20px;height:20px;accent-color:var(--qr-blue)}
#fm-clock{font-weight:900;color:var(--qr-text)}
/* layout: question ~70 %, side ~30 % */
.fm-layout{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,3fr);gap:14px;align-items:start}
.fm-layout>*,.fm-main>*{min-width:0}
.fm-main{display:flex;flex-direction:column;gap:10px}
.fm-wrap .card{background:var(--qr-card);border-color:var(--qr-border)}
.fm-question{transition:box-shadow .3s}
.fm-question.glow{box-shadow:0 0 0 3px var(--qr-success),0 0 28px #5be86a66}
.fm-ask{margin:0;color:var(--qr-muted);font-weight:800}
.fm-sum{margin:6px 0 12px;font:900 clamp(40px,6vw,64px)/1.1 Nunito,system-ui,sans-serif;color:var(--qr-text);letter-spacing:1px;word-spacing:.15em}
.fm-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:6px}
.fm-choice{min-height:84px;border-radius:16px;border:3px solid #4f86bd;background:#0b2546;color:var(--qr-text);cursor:pointer;
  font:900 clamp(32px,5vw,44px) Nunito,system-ui,sans-serif;touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  transition:transform .08s,border-color .15s,background .15s}
.fm-choice:hover:not(:disabled){border-color:var(--qr-blue);background:#10305a}
.fm-choice:active:not(:disabled){transform:scale(.97)}
.fm-choice:focus-visible{outline:3px solid var(--qr-yellow);outline-offset:2px}
.fm-choice:disabled{cursor:default;opacity:1}
.fm-choice.right{border-color:var(--qr-success);background:#124436;color:#e9fff6}
.fm-choice.wrong{border-color:#ff8a6b;background:#3a1f2a;color:#ffd9cf}
.fm-choice.faded{opacity:.45}
.fm-choice.picked{border-color:var(--qr-yellow)}
.fm-track__bar.over span{background:#7aa7d6}
.fm-counter{margin:0 0 2px;font-weight:900;font-size:14px;letter-spacing:1px;text-transform:uppercase;color:var(--qr-muted)}
.fm-feedback{min-height:32px;margin:12px 0 0;font-weight:900;font-size:18px}
.fm-feedback.ok{color:var(--qr-success)}.fm-feedback.try{color:var(--qr-yellow)}.fm-feedback.info{color:var(--qr-muted)}
.fm-next{margin-top:10px}
.fm-sub{margin-top:10px}
.fm-break{align-self:flex-start}
.fm-pause{text-align:center}
/* side panel */
.fm-label{margin:0 0 4px;font-weight:900;font-size:14px;letter-spacing:1px;text-transform:uppercase;color:var(--qr-muted)}
.fm-stars{margin:0;font:900 36px 'Barlow Condensed';color:var(--qr-yellow)}
.fm-team-stars{margin:0 0 8px;font:900 26px 'Barlow Condensed';color:var(--qr-yellow)}
.fm-milestone{min-height:24px;font-weight:900;color:var(--qr-yellow)}
.fm-side #fm-team-panel,.fm-side #fm-solo-panel{margin-top:12px}
.fm-badges,.fm-members{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-weight:800}
.fm-members li.ready{color:var(--qr-success)}
.fm-tables{border:0;padding:0;margin:10px 0;display:flex;flex-wrap:wrap;gap:6px 14px}
.fm-tables legend{font-weight:900;font-size:14px;color:var(--qr-muted);margin-bottom:6px}
.fm-tables label{display:inline-flex;align-items:center;gap:6px;min-height:48px;font-weight:800}
.fm-tables input{width:22px;height:22px;accent-color:var(--qr-yellow)}
.fm-announce{margin-top:12px}.fm-announce summary{cursor:pointer;font-weight:900;min-height:44px;display:flex;align-items:center}
.fm-practice{margin-top:14px}
.fm-quick{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.fm-quick .btn{min-width:110px}
.fm-tables label.locked{opacity:.55}
.fm-free{margin-top:16px}.fm-free summary{cursor:pointer;font-weight:900;min-height:48px;display:flex;align-items:center}
/* rules and passed rounds in the lobby */
.fm-rules{margin:8px 0;padding-left:20px;display:flex;flex-direction:column;gap:4px}
.fm-rounds{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0}
.fm-rounds span{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font:900 20px Nunito;
  border:3px solid #2b537c;background:#0b1d36;color:var(--qr-muted)}
.fm-rounds span.done{border-color:var(--qr-success);background:#123a33;color:var(--qr-success)}
.fm-rounds p{margin:0 0 0 6px}
/* result */
.fm-result{text-align:center}
.fm-result__stats{display:flex;justify-content:center;gap:28px;flex-wrap:wrap}
.fm-result__stats p{margin:0;display:flex;flex-direction:column}
.fm-result__stats span{font:900 56px 'Barlow Condensed';color:var(--qr-yellow);line-height:1}
.fm-result__stats small{font-weight:800;color:var(--qr-muted)}
.fm-result .fm-badges{align-items:center;margin:10px 0}
.fm-result .fm-actions{justify-content:center}
.fm-diploma-link{margin-top:10px}
.fm-result .fm-h2{text-align:center}
.fm-coins{font:900 22px Nunito;color:var(--qr-yellow);margin:6px 0}
.fm-record{font-weight:900;color:var(--qr-blue);margin:6px 0}
.fm-observe-list{align-items:center;margin-top:10px}
.fm-verdict{font-weight:900;margin:6px 0}.fm-verdict.ok{color:var(--qr-success)}.fm-verdict.try{color:var(--qr-yellow)}
.fm-review{list-style:none;padding:0;margin:14px auto;max-width:720px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;text-align:left}
.fm-review li{padding:8px 10px;border-radius:10px;border:2px solid #2b537c;background:#0b1d36;font-weight:800}
.fm-review li.ok{border-color:#1f6e58}
.fm-review li.miss{border-color:#ff8a6b;background:#3a1f2a}
.fm-review small{display:block;color:#ffd9cf;font-weight:700}
/* diploma list */
.fm-diploma-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.fm-diploma-list li{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;background:#0f2442;border:2px solid #2b537c;border-radius:14px;padding:12px 14px}
.fm-diploma-list li.earned{border-color:var(--qr-yellow,#ffcd29)}
.fm-diploma-list li.current{border-color:#33c2ff}
.fm-diploma-list__seal{font-size:30px}
@media(max-width:1023px){.fm-layout{grid-template-columns:1fr}.fm-side{order:3}}
@media(max-width:639px){.fm-sum{font-size:clamp(36px,11vw,48px)}.fm-choice{min-height:72px}}
@media(prefers-reduced-motion:reduce){.fm-track__bar span,.fm-question,.fm-choice{transition:none}}
/* Diploma: a certificate that prints on one landscape A4 */
.diploma-actions{display:flex;justify-content:space-between;max-width:1000px;margin:0 auto 12px}
.diploma{position:relative;max-width:1000px;margin:0 auto;text-align:center;color:#132240;padding:56px 64px 48px;
  background:radial-gradient(120% 90% at 50% 0%,#fffdf4 0%,#fdf3d6 60%,#f6e3b0 100%);border-radius:18px;
  border:14px double #c99a2e;box-shadow:inset 0 0 0 3px #f6e3b0,inset 0 0 0 6px #1a3a6b,0 20px 60px #000a}
.diploma__flag{position:absolute;left:64px;right:64px;top:24px;height:12px;border-radius:3px;
  background:repeating-conic-gradient(#132240 0 25%,#fffdf4 0 50%) 0 0/12px 12px}
.diploma__flag--bottom{top:auto;bottom:22px}
.diploma__brand{margin:14px 0 0;font:900 15px Nunito;letter-spacing:5px;color:#1a3a6b}
.diploma__title{margin:6px 0 10px;font:900 italic clamp(64px,10vw,104px)/1 'Barlow Condensed',Impact,sans-serif;letter-spacing:6px;
  text-transform:uppercase;color:#1a3a6b;text-shadow:3px 3px 0 #ffcd29}
.diploma__lead{margin:4px 0;font:700 20px Nunito;color:#3a4a66}
.diploma__name{margin:6px auto 8px;font:900 italic clamp(40px,6vw,64px)/1.1 'Barlow Condensed',Impact,sans-serif;color:#0d1a33;
  border-bottom:3px solid #c99a2e;display:inline-block;padding:0 24px 4px;min-width:50%}
.diploma__what{margin:6px 0 12px;font:900 clamp(28px,4vw,40px) 'Barlow Condensed';color:#b5361c}
.diploma__tables{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:6px 0 14px}
.diploma__tables span{display:inline-grid;place-items:center;min-width:46px;height:46px;border-radius:50%;background:#1a3a6b;color:#ffcd29;font:900 18px Nunito;box-shadow:0 0 0 3px #ffcd29}
.diploma__why{margin:0 0 22px;font:700 17px Nunito;color:#3a4a66}
.diploma__foot{display:grid;grid-template-columns:1fr auto 1fr;gap:20px;align-items:end;font:700 15px Nunito;color:#3a4a66}
.diploma__line{display:block;border-bottom:2px solid #3a4a66;margin:0 10px 6px}
.diploma__seal{width:112px;height:112px;border-radius:50%;display:grid;place-items:center;align-content:center;color:#5a3b00;
  background:radial-gradient(circle at 35% 30%,#ffe9a3,#ffcd29 45%,#c99a2e 100%);box-shadow:0 0 0 6px #fff3c4,0 0 0 9px #c99a2e,0 6px 16px #0004}
.diploma__seal span{font-size:40px;line-height:1}.diploma__seal small{font:900 12px Nunito;letter-spacing:1px}
.diploma--final .diploma__title{text-shadow:3px 3px 0 #ff5fc8}
@media(max-width:639px){.diploma{padding:44px 18px 40px}.diploma__flag{left:18px;right:18px}.diploma__foot{grid-template-columns:1fr}.diploma__seal{margin:0 auto}}
@media print{
  @page{size:A4 landscape;margin:10mm}
  body{background:#fff!important}
  .topbar,footer,.no-print,.messages,.auth-scene{display:none!important}
  .app,.page{padding:0!important;margin:0!important;max-width:none!important}
  .diploma{box-shadow:none;max-width:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
.fm-card{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;border-color:#33c2ff}
.fm-card p{margin:0}

/* Player figures (avatars) */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[data-avatar] svg{width:100%;height:100%;display:block}
.avatar-presets{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.avatar-presets form{margin:0}
.avatar-preset{width:76px;height:120px;padding:4px;border-radius:12px;border:2px solid #2b537c;background:#0f2442;cursor:pointer}
.avatar-preset:hover,.avatar-preset:focus-visible{border-color:var(--qr-yellow,#ffcd29)}
.avatar-preset span{display:block;width:100%;height:100%}
.avatar-custom>summary{cursor:pointer;font-weight:900;min-height:44px;display:flex;align-items:center}
.avatar-form{display:grid;grid-template-columns:minmax(160px,220px) 1fr;gap:18px;align-items:start;margin-top:10px}
.avatar-preview{background:#14305a;border:2px solid #2b537c;border-radius:16px;aspect-ratio:3/5;padding:8px;position:sticky;top:10px}
.avatar-fields{display:flex;flex-direction:column;gap:10px;min-width:0}
.avatar-fields fieldset{border:0;padding:0;margin:0}
.avatar-fields legend,.avatar-fields>label{font-weight:800;font-size:14px}
.avatar-fields select{min-height:40px;border-radius:10px;border:2px solid #2b537c;background:#071931;color:inherit;padding:0 10px;margin-left:8px}
.swatches{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.swatch{width:34px;height:34px;border-radius:50%;border:3px solid #0b1d36;box-shadow:0 0 0 2px #2b537c;cursor:pointer;position:relative}
.swatch input{position:absolute;opacity:0;inset:0;cursor:pointer}
.swatch:has(input:checked){box-shadow:0 0 0 3px var(--qr-yellow,#ffcd29)}
.swatch:has(input:focus-visible){outline:3px solid #fff;outline-offset:2px}
.chip-radio{display:inline-flex;align-items:center;gap:6px;font-weight:800;margin-right:10px;min-height:36px}
@media(max-width:639px){.avatar-form{grid-template-columns:1fr}.avatar-preview{position:static;max-width:180px}}
.lane-face{width:44px;height:44px;border-radius:50%;overflow:hidden;background:#14305a;flex:none}
.grandstand{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:6px 10px;margin:0 0 8px;border-radius:12px;background:linear-gradient(#22406a,#132a49);border:1px solid #2b537c}
.grandstand__label,.grandstand__empty{font-weight:900;font-size:13px;color:#cfe3f7;margin-right:6px}
.grandstand__face{width:36px;height:36px;border-radius:50%;overflow:hidden;background:#0f2442;border:2px solid #3c6a99;flex:none}
.watch-card{margin-top:12px}
.power.audience{background:linear-gradient(#5be86a,#1cac49);border-color:#98ffa3}
.answers button.audience-pick{outline:4px solid #ffcd29;outline-offset:2px}
/* Race track on tablets and phones: never more than about a third of the screen height,
   so the question and the answers fit below it (iPad). Phaser fits the track inside. */
#race-canvas{aspect-ratio:auto;height:clamp(150px,34vh,460px);min-height:0}
#race-canvas,#race-canvas canvas{touch-action:pan-y}
.arena-wrap{min-height:0}
body.play .race-info{padding:6px 2px;min-height:0;gap:8px}
@media(max-height:820px){body.play .header-pill{font-size:15px;padding:5px 10px}body.play .question{margin:8px 0;padding:6px 12px}
  body.play .answers button{min-height:54px}body.play .bottom-layout{padding-top:10px}}
/* Garage workshop */
.workshop{display:grid;grid-template-columns:minmax(260px,420px) 1fr;gap:18px;align-items:start}
.workshop__stage{position:sticky;top:10px;display:flex;flex-direction:column;gap:10px;background:radial-gradient(ellipse at 50% 85%,#22406a,#0b1d36 70%);border:2px solid #2b537c;border-radius:18px;padding:14px}
.workshop__car{display:block}
.workshop__car img,.workshop__car svg{width:100%;height:auto;display:block}
.workshop__trying{margin:0;font-weight:800;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.workshop__trying[hidden]{display:none}
.workshop .shop-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.workshop .shop-item{padding:8px;gap:4px}
.workshop .shop-icon{font-size:26px}
.paint-swatch{width:30px;height:30px;border-radius:50%;border:3px solid #0b1d36;box-shadow:0 0 0 2px #3c6a99;background:var(--swatch)}
.paint-swatch--matte{--swatch:#2a2f38}.paint-swatch--pearl{--swatch:linear-gradient(135deg,#ff9ad5,#9ff3ff,#fff2b8)}.paint-swatch--chrome{--swatch:linear-gradient(135deg,#fff,#8697ad,#e9eef5)}
.paint-swatch--gold{--swatch:linear-gradient(135deg,#fff0a0,#f5c518 45%,#9a6a00)}.paint-swatch--sunset{--swatch:linear-gradient(90deg,#ff3d7f,#ffb020)}.paint-swatch--ocean{--swatch:linear-gradient(90deg,#1f5fd6,#16c7b0)}
.paint-swatch--chameleon{--swatch:linear-gradient(135deg,#14b8a6,#8a3ffc,#14b8a6)}.paint-swatch--glitter{--swatch:radial-gradient(circle at 30% 30%,#fff 0 8%,transparent 10%),radial-gradient(circle at 68% 62%,#fff 0 7%,transparent 9%),linear-gradient(135deg,#c8bdf5,#4a3a7a)}
.workshop__number{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0}
.workshop__number label{font-weight:800}
.workshop__number input{width:84px;min-height:40px;border-radius:10px;border:2px solid #2b537c;background:#071931;color:inherit;padding:0 10px;font-weight:900;font-size:18px}
.workshop__parts{display:flex;flex-direction:column;gap:6px;min-width:0}
.workshop__title{margin:10px 0 4px}
/* Garage tabs (tabs.js): one part at a time, the headings are in the tabs. */
.tab-panel[hidden]{display:none}
.tabs-on>.tab-panel>.tab-heading,.tabs-on>.tab-panel>.avatar-builder>.tab-heading{display:none}
.subtabs{display:flex;flex-wrap:wrap;gap:6px;padding:2px 0 8px}
.subtabs a{flex:none;padding:8px 14px;min-height:40px;display:inline-flex;align-items:center;border-radius:999px;text-decoration:none;font-weight:900;color:#cbe6ff;background:#0f2442;border:2px solid #2f5d8a}
.subtabs a.active{background:#ffd54a;border-color:#ffd54a;color:#0d1b2e}
.tabs a:focus-visible,.subtabs a:focus-visible{outline:3px solid #ffd54a;outline-offset:2px}
.car-look{display:inline-block}
.car-look img,.car-look svg{width:100%;height:auto;display:block}
/* car-look.js draws a wider box (room for the light beam and nitro): keep the car itself the same size. */
.car-look--drawn:not(.workshop__car) svg{width:140%;margin:-2.5% 0 -2.08% -15%;max-width:none;overflow:visible}
.lane .car-look{width:110px;flex:none}
.my-car__row .car-look{width:min(240px,100%)}


/* Workshop v3: one big car that stays in view, parts in tabs, several tried at once */
.workshop__tray{display:flex;flex-direction:column;gap:6px;max-height:34vh;overflow:auto}
.workshop__tray[hidden]{display:none}
.workshop__trying{margin:0}
.workshop__trying #workshop-total{font-weight:700;color:#cfe3f7}
.workshop__chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.workshop__chips .chip{display:inline-flex;align-items:center;gap:4px;background:#0f2442;border:2px solid #3c6a99;border-radius:999px;padding:2px 4px 2px 10px;font-weight:800;font-size:13px}
.workshop__chips .chip--locked{opacity:.7;border-style:dashed}
.workshop__chips .chip button{min-width:32px;min-height:32px;border:0;border-radius:50%;background:#173a63;color:#fff;font-weight:900;cursor:pointer}
.workshop__buy{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.workshop__buy .btn{min-height:44px}
.workshop__sub{margin:14px 0 2px}
.workshop [data-try].on{background:#ffd54a;border-color:#ffd54a;color:#0d1b2e}
.looks{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin:8px 0}
.look-card{display:flex;flex-direction:column;align-items:center;gap:6px;margin:0;padding:8px;background:#0f2442;border:2px solid #2f5d8a;border-radius:14px;min-width:0}
.look-card--empty{border-style:dashed}
.look-card__car{display:block;width:100%}
.look-card__empty{display:flex;align-items:center;justify-content:center;min-height:70px;color:#9fb8d3;font-weight:800}
.look-card__name{width:100%;min-height:40px;border-radius:10px;border:2px solid #2b537c;background:#071931;color:inherit;padding:0 10px;font-weight:800}
.look-card__buttons{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.look-card__missing{font-size:12px}
.packs{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin:8px 0}
.pack{display:flex;align-items:center;gap:8px;min-height:48px;padding:6px 12px;border-radius:14px;border:2px solid #3c6a99;background:#0f2442;color:#fff;font-weight:900;font-size:15px;cursor:pointer}
.pack[hidden]{display:none}
.pack:hover,.pack:focus-visible{border-color:#ffd54a}
.pack__icon{font-size:24px}
.pack--random{background:linear-gradient(#5a3fd1,#3b2a9a);border-color:#9b7bff}
.garage .car-look{display:block}
.garage .car-look.car-look--drawn svg{width:100%;margin:0;max-width:100%}
.look-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.look-chips form{margin:0}
.look-chips .btn{min-height:40px}
/* Tablets and phones: the car stays at the top while you choose; the tabs slide sideways */
@media(max-width:900px){
  .workshop{grid-template-columns:minmax(0,1fr);gap:10px}
  .workshop__stage{position:sticky;top:0;z-index:5;padding:8px;gap:6px;background:radial-gradient(ellipse at 50% 85%,#22406a,#0b1d36 80%)}
  .workshop__car{max-width:min(100%,340px);margin:0 auto}
  .workshop__tray{max-height:none;overflow:visible;gap:4px}
  .workshop__trying{font-size:14px}
  .workshop__chips{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}
  .workshop__chips .chip{flex:none}
  .workshop__buy{flex-wrap:nowrap}
  .subtabs,.tabs{flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
  .subtabs a,.tabs a{scroll-snap-align:center;white-space:nowrap}
  .tabs a{min-height:44px;display:inline-flex;align-items:center}
  .subtabs a{min-height:44px}
}
@media(max-width:480px){.workshop .shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.workshop__stage{padding:6px}.looks{grid-template-columns:1fr 1fr}}

/* A phone on its side is too low for a car that stays in view */
@media(max-height:520px){.workshop__stage{position:static}}

.workshop__stage,.workshop__parts{min-width:0}
.workshop__buy .btn{width:auto;margin:0;white-space:nowrap}
#workshop-apply-button{flex:2 1 0}
#workshop-reset{flex:1 1 0}

/* hidden always means hidden inside the games (their own display rules must not win) */
.fm-wrap [hidden]{display:none!important}
/* Admin page (/administrasjon/) */
.admin-link{text-decoration:none;color:inherit}
.status-list{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}
.status-list li{display:grid;grid-template-columns:auto 170px 1fr;gap:8px;align-items:baseline}
.status-list .muted-line{color:var(--muted)}
.status-list li.warn strong{color:#ffd54a}
@media(max-width:700px){.status-list li{grid-template-columns:auto 1fr}.status-list .muted-line{grid-column:2}}
.admin-inline{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.admin-inline label{margin:0}
.admin-inline input{width:auto!important;flex:1 1 220px}
.admin-filters .row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.admin-pages{justify-content:center;margin-top:12px}
.admin-log td{font-size:14px}
.admin-log .kind-login_failed td:nth-child(2),.admin-log .kind-login_blocked td:nth-child(2),.admin-log .kind-register_blocked td:nth-child(2){color:#ffb3b6}
details.confirm{display:inline-block}
details.confirm summary{list-style:none;cursor:pointer}
details.confirm summary::-webkit-details-marker{display:none}
details.confirm[open] summary{display:none}
.word-test{font-weight:900;margin:10px 0 0}.word-test.bad{color:#ffb3b6}.word-test.good{color:#7ff0a0}
.admin-settings .field.check .help{margin-left:30px}
.admin-filters input[type=date]{width:100%;border:2px solid #386391;border-radius:10px;background:#071931;color:#fff;padding:11px 12px;font-size:16px;color-scheme:dark}
.admin-settings input[type=number]{max-width:160px}
.mail-error{color:#ffb3b6;word-break:break-word}
.class-message-form input[type=date]{width:100%;max-width:220px;border:2px solid #386391;border-radius:10px;background:#071931;color:#fff;padding:11px 12px;font-size:16px;color-scheme:dark}
/* Student dashboard: «Meg» and «Klassen» tabs (classroom/class_page.py) */
.class-notice{display:flex;gap:10px;align-items:center;text-decoration:none;color:inherit;border-color:#ffd54a;margin-bottom:14px;font-size:16px}
.class-notice:hover,.class-notice:focus-visible{background:#173a63}
.class-message{border-color:#ffd54a}
.class-message__from{margin:0 0 4px;font-weight:900;color:#ffd54a}
.class-message__text{margin:0;font-size:19px;font-weight:800;white-space:pre-line}
.goal-history,.together-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:4px;font-weight:700}
.classmates{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.classmate{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;margin:0;padding:12px}
.classmate__figure{display:block;width:64px;height:96px}
.classmate__figure svg{width:100%;height:100%}
.classmate .car-look{width:120px}
.classmate strong{word-break:break-word}
.classmates>.card.classmate{margin:0}
.class-message-form textarea{font:inherit;font-size:17px}
.user-head p{margin:6px 0 0}
.temp-password__value{font:900 30px/1.2 'Barlow Condensed',monospace;letter-spacing:1px;color:#ffd54a;margin:6px 0;user-select:all}
.link-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.link-list li{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.danger-zone{margin-top:14px}.danger-zone summary{cursor:pointer;color:#ffb3b6;font-weight:800}
.check-inline{display:inline-flex;gap:6px;align-items:center;text-transform:none!important;letter-spacing:0!important;font-size:14px!important}
/* Admin page: the same space between every part (cards, rows of cards, forms and notes). */
.admin-panel{display:flex;flex-direction:column;gap:16px;margin-top:4px}
.admin-panel>*{margin:0}
.admin-panel>.grid>*{margin:0}
.admin-panel .card>h3:first-child{margin-top:0}
.admin-panel>.help{margin-top:-6px}
.word-filters{margin:12px 0 0}
.word-table td{vertical-align:middle}
.word-edit{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0}
.word-edit select{min-height:36px;border-radius:8px;border:2px solid #2b537c;background:#071931;color:inherit;padding:0 8px;font-size:14px}
.subtabs .count{display:inline-block;min-width:22px;padding:1px 6px;margin-left:4px;border-radius:999px;background:#0b1d36;color:#cbe6ff;font-size:12px;text-align:center}
.subtabs a.active .count{background:#0d1b2e;color:#ffd54a}
.top-words{margin:6px 0 0;padding-left:22px;display:grid;gap:4px}
.admin-panel textarea{font:inherit;font-size:16px}
/* Pictures with questions (learning/pictures.py): clock, money, shapes on a light card */
.question-picture{display:flex;justify-content:center;background:#f7fbff;border:3px solid #4a8cce;border-radius:14px;padding:10px;margin:10px 0 0}
.question-picture[hidden]{display:none}
.question-picture svg{max-width:100%;height:auto;max-height:220px}
body.play .question-picture svg{max-height:min(200px,24vh)}
/* «Øv selv» */
.practice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
.practice-grid>.card+.card{margin-top:0}
.practice-tile{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;text-decoration:none;color:inherit;padding:16px 12px;transition:transform .12s,border-color .12s}
.practice-tile:hover,.practice-tile:focus-visible{transform:translateY(-2px);border-color:#ffd54a}
.practice-tile__icon{font-size:40px;line-height:1}
.practice-tile strong{font-size:17px}
.practice-tile__level{font-size:13px;color:var(--muted);font-weight:700}
.practice-steps span{min-width:30px}
.answers--two{grid-template-columns:repeat(2,1fr)}
/* «Skriv svaret selv» */
.typed-answer{display:flex;gap:10px;align-items:stretch;margin-top:12px}
.typed-answer input{flex:1;min-width:0;font:900 clamp(26px,4vw,40px) 'Barlow Condensed',sans-serif;text-align:center;border:3px solid #4a8cce;border-radius:12px;background:#f7fbff;color:#091b35;padding:8px 12px}
.typed-answer input:focus{outline:3px solid #ffd54a;outline-offset:2px}
.typed-answer .btn{font-size:20px;padding:0 26px}
.typing-toggle{margin:8px 0 0}
.link-like{background:none;border:0;padding:4px 0;color:#9fd3ff;text-decoration:underline;font-weight:800;cursor:pointer}
.homework-form input[type=date]{width:100%;border:2px solid #386391;border-radius:10px;background:#071931;color:#fff;padding:11px 12px;font-size:16px;color-scheme:dark}
.homework-list{border-color:#ffd54a}
.homework-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding:8px 0;border-top:1px solid #20456b}
.homework-row:first-of-type{border-top:0}
.homework-row .help{display:block}
.homework-row.done strong{color:#7ff0a0}
.mistake-card h4{margin:12px 0 6px;font-size:15px;color:#ffd54a}
.mistake-list{margin:0;padding-left:20px;display:grid;gap:8px}
.mistake-example{font-size:14px;color:var(--muted)}
.mistake-example b{color:#ffb3b6}
.homework-list,.class-message{margin-bottom:14px}
.class-teachers .admin-inline input{flex:1 1 220px}

/* Universell utforming (WCAG 2.1 AA): contrast at least 4.5:1 for text (3:1 for large text), measured
   against the lightest part of each background; visible keyboard focus; less motion when asked for. */
:root{--muted:#c2d6ec}
a,.link-like{color:#a6e4ff}
.mistake-example b,.word-test.bad{color:#ffc7c9}
.blue,.power.skip{background:linear-gradient(#1572c4,#0a5aa8)}
.btn.danger{background:linear-gradient(#c8323f,#a3202c)}
/* Answer colours by the buttons' own order (hidden form fields before them must not count). */
.answers button:nth-child(n){background:linear-gradient(#1572c4,#0a5aa8);border-color:#71cfff;color:#fff}
.answers button:nth-of-type(1){background:linear-gradient(#1b8a3e,#116f2f);border-color:#98ffa3}
.answers button:nth-of-type(3){background:linear-gradient(#ffe34e,#ffad19);border-color:#ffec86;color:#1b2642}
.answers button:nth-of-type(4){background:linear-gradient(#c8323f,#a3202c);border-color:#ffb5b8}
.power{background:linear-gradient(#8a3ad8,#6723ba)}
.power.nitro{color:#1b2642}
:focus-visible{outline:3px solid #ffd54a;outline-offset:2px}
.skip-link{position:absolute;left:12px;top:-60px;z-index:50;background:#ffd54a;color:#0d1b2e;font-weight:900;padding:10px 16px;border-radius:10px;text-decoration:none}
.skip-link:focus{top:10px}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
.bank-help{margin:0;padding-left:20px;display:grid;gap:6px}
/* Space between a row of cards and a card (or another row) everywhere; :where() keeps it weaker than
   page-specific spacing like .admin-panel's gap. Text fields use the page font. */
:where(.grid)+:where(.card,.grid,form.card),:where(.card)+:where(.grid){margin-top:14px}
.form textarea,textarea{font:inherit}
.restore{white-space:pre-wrap;background:#071931;border:1px solid #2b537c;border-radius:10px;padding:12px;font-size:13px;overflow-x:auto}
/* The squared paper (static/js/sheet.js, learning/sheet.py) */
.sheet{position:relative;display:inline-flex;flex-direction:column;gap:10px;max-width:100%}
.sheet__grid{--cell:42px;position:relative;display:grid;width:max-content;grid-template-columns:repeat(var(--cols),var(--cell));grid-template-rows:repeat(var(--rows),var(--cell));
  background:#eaf4ff;border:2px solid #4a8cce;border-radius:10px;overflow:hidden;max-width:100%}
.sheet__cell{position:relative;border-right:1px solid #a9cbee;border-bottom:1px solid #a9cbee;display:flex;align-items:center;justify-content:center;cursor:pointer;user-select:none}
.sheet__digit{font:900 28px 'Barlow Condensed',sans-serif;color:#0d1b2e;line-height:1}
.sheet__carry{position:absolute;top:1px;right:4px;font:900 14px 'Barlow Condensed',sans-serif;color:#c62f3c}
.sheet__cell--fixed .sheet__digit{color:#0a3a7a}
.sheet__cell--active{background:#fff4c2;box-shadow:inset 0 0 0 3px #ffad19;z-index:1}
.sheet--carry .sheet__cell--active{box-shadow:inset 0 0 0 3px #c62f3c}
.sheet__cell--marked{background:#ffe1e3}
.sheet__cell--struck .sheet__digit{color:#5a6f8c}
.sheet__cell--struck::after{content:'';position:absolute;left:50%;top:50%;width:78%;height:3px;background:#c62f3c;border-radius:2px;transform:translate(-50%,-50%) rotate(-58deg);pointer-events:none}
.sheet__ten{position:absolute;left:50%;bottom:1px;transform:translateX(-50%);min-width:62%;padding:0 2px;border:2px solid #c62f3c;border-radius:50%;
  font:900 calc(var(--cell) * .36) 'Barlow Condensed',sans-serif;line-height:1.15;color:#c62f3c;text-align:center;pointer-events:none}
.sheet__ten[hidden]{display:none}
.sheet__line{align-self:end;height:3px;background:#0d1b2e;pointer-events:none;z-index:2;margin-bottom:-1.5px}
.sheet__line--double{height:9px;background:none;border-top:3px solid #0d1b2e;border-bottom:3px solid #0d1b2e;margin-bottom:-4.5px}
.sheet__input{position:absolute;width:1px;height:1px;opacity:0;border:0;padding:0;pointer-events:none}
.sheet__pad{display:flex;flex-wrap:wrap;gap:6px;max-width:calc(var(--cols,10) * 42px + 4px)}
.sheet__pad button{min-width:46px;min-height:46px;border-radius:10px;border:2px solid #3e6a91;background:#19314f;color:#ecf7ff;font:900 22px 'Barlow Condensed',sans-serif;cursor:pointer}
.sheet__pad button[aria-pressed="true"]{background:#c8323f;border-color:#ffb5b8}
.sheet__pad [data-sheet-dir],.sheet__pad [data-sheet-carry]{font-size:16px;padding:0 12px}
@media(max-width:560px){.sheet__grid{--cell:min(34px, calc((100vw - 76px) / var(--cols)))}.sheet__digit{font-size:calc(var(--cell) * .68)}.sheet__carry{font-size:calc(var(--cell) * .36)}}
/* «Oppstilt gange» (written/) */
.written-card{display:flex;flex-direction:column;gap:12px;overflow-x:auto}
.written-task{font-size:20px;margin:0}
.written-feedback{min-height:1.4em;font-weight:700}
.written-feedback.right{color:#2f9e5b}
.written-feedback.wrong{color:#ffb5b8}
.written-findings{margin:0;padding-left:20px}
.written-hint-text{background:#19314f;border:2px solid #3e6a91;border-radius:10px;padding:10px 12px;margin:0}
.written-solution{border-top:2px dashed #3e6a91;padding-top:10px}
.written-start fieldset{border:0;padding:0;margin:0 0 12px}
.written-choice{display:flex;gap:10px;align-items:center;padding:8px 10px;border:2px solid #3e6a91;border-radius:10px;margin:6px 0;cursor:pointer;min-height:44px}
.written-choice:has(input:checked){border-color:#ffad19;background:#19314f}
.written-sizes{display:flex;gap:8px;flex-wrap:wrap}
.written-sizes .written-choice{min-width:80px}
.written-skills{list-style:none;padding:0;display:grid;gap:6px}
.written-skill{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:10px;background:#19314f}
.written-skill--mestrer span{color:#7be0a0}
.written-skill--ov span{color:#ffb5b8}
.written-history{padding-left:20px}
.written-replay{display:grid;gap:10px}
.written-replay__checks{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px}
.written-replay__check{margin:0;display:flex;flex-direction:column;gap:6px;max-width:100%;overflow-x:auto}
.written-replay__check .sheet__grid{--cell:30px}
.written-replay__check .sheet__digit{font-size:20px}
.written-replay__check .sheet__carry{font-size:11px}
.sheet-form{margin-top:12px;display:flex;flex-direction:column;gap:10px;align-items:flex-start;max-width:100%;overflow-x:auto}
.sheet-form__error{color:#ffb5b8;font-weight:700;margin:0}
.sheet-layout{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;max-width:100%}
.sheet-form .sheet-layout{align-self:stretch}
.sheet-side{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px;flex:1 1 218px;min-width:218px;position:sticky;top:12px}
.sheet-side__col{display:flex;flex-direction:column;align-items:flex-start;gap:10px;flex:1 1 auto;min-width:0;max-width:320px}
.sheet-side__col .btn.primary{min-height:52px}  /* «Sjekk» to the right of the keypad, at the top */
.sheet-side .btn{width:auto}
.sheet-side__buttons{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
@media(max-width:560px){.sheet-side{position:static;max-width:none}.sheet-side__buttons{flex-direction:row;flex-wrap:wrap}}
.practice-search{display:flex;flex-direction:column;gap:6px;max-width:420px;margin:0 0 6px}
.practice-search label{font-weight:800}
.practice-search input{min-height:46px;width:100%;border:2px solid #386391;border-radius:10px;background:#071931;color:#fff;padding:10px 14px;font-size:17px}
.practice-search input:focus{border-color:#3acefb;outline:3px solid #ffad19;outline-offset:1px}
.practice-tile[hidden],[data-practice-group][hidden]{display:none}
.sheet-side .sheet__pad{display:grid;grid-template-columns:repeat(4,50px);gap:6px;max-width:none}
.sheet-side .sheet__pad button{min-width:0;min-height:50px}
.sheet-side .sheet__pad [data-sheet-carry]{font-size:15px;padding:0}
.sheet-side .sheet__pad [data-sheet-dir]{grid-column:span 2;order:1;font-size:13px;line-height:1.1;padding:0 6px}  /* 1–8 · 9 0 ⌫ Mente · ↶ ↷ retning */
@media(max-width:560px){.sheet-side .sheet__pad{grid-template-columns:repeat(6,minmax(0,1fr));width:100%}.sheet-side .sheet__pad [data-sheet-dir]{grid-column:span 3}}
@media(max-width:560px){.sheet-side [data-sheet-pad],.sheet-side #written-pad{width:100%}}
/* Progress report to parents (teacher/student_report.html): light, printable */
.report-tools__row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.report-tools__row select{min-height:38px;border-radius:8px;padding:4px 8px}
.report{background:#fff;color:#0d1b2e;border-radius:14px;padding:24px 28px;max-width:820px;margin:14px auto;font-size:15px;line-height:1.5}
.report h1{font:900 30px 'Barlow Condensed',sans-serif;margin:0 0 4px}
.report h2{font:900 20px 'Barlow Condensed',sans-serif;margin:18px 0 6px;color:#0a3a7a}
.report__head p{margin:0;color:#3b4a5e}
.report__table{width:100%;border-collapse:collapse}
.report__table th,.report__table td{border-bottom:1px solid #d6e2f0;padding:6px 8px;text-align:left}
.report__table .num{text-align:right}
.report__two{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.report__comment{width:100%;border:1px solid #b7c8dc;border-radius:8px;padding:8px;font:inherit;color:inherit;background:#fff}
.report__foot{margin-top:18px;font-size:12px;color:#5a6a7e}
@page report{size:A4 portrait;margin:14mm}  /* other printouts (diplomas) stay landscape */
@media print{.report{page:report;max-width:none;margin:0;padding:0;border-radius:0}.report__comment{border:0;resize:none}}
/* Personvern */
footer a{color:inherit;text-decoration:underline}
.privacy h3{margin:18px 0 6px}
.privacy-draft{border-color:#ffd54a;background:#2b2410}
.privacy-kids{padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:17px}
.privacy .table-wrap{overflow-x:auto}
/* Personvern */
footer a{color:inherit;text-decoration:underline}
.privacy h3{margin:18px 0 6px}
.privacy-draft{border-color:#ffd54a;background:#2b2410}
.privacy-kids{padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:17px}
.privacy .table-wrap{overflow-x:auto}
/* Straffespark (penalty/, static/js/penalty.js) */
.pk-score{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center;margin:0 0 12px}
.pk-team{display:flex;flex-direction:column;gap:2px}
.pk-team--right{align-items:flex-end;text-align:right}
.pk-name{font:900 22px 'Barlow Condensed',sans-serif}
.pk-goals{font:900 46px/1 'Barlow Condensed',sans-serif;color:var(--qr-yellow)}
.pk-dots{display:flex;gap:4px;list-style:none;padding:0;margin:0;flex-wrap:wrap}
.pk-dot{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:13px;background:#1d3a60;color:#b6d5f7}
.pk-dot--goal{background:#1f7a46;color:#fff}
.pk-dot--save,.pk-dot--over{background:#7a2a33;color:#ffd9cf}
.pk-vs{display:flex;flex-direction:column;align-items:center;font-size:34px}
.pk-vs small{font-size:13px;font-weight:800;color:var(--qr-muted);text-align:center}
.pk-code{font-family:'Barlow Condensed',sans-serif;letter-spacing:4px;color:var(--qr-yellow)}
.pk-field{position:relative;max-width:520px;margin:0 auto}
.pk-pitch{width:100%;height:auto;display:block;border-radius:14px;border:3px solid #315d88}
.pk-ball,.pk-keeper,.pk-shooter{transition:transform .9s cubic-bezier(.2,.8,.3,1);transform-box:fill-box;transform-origin:center}
.pk-shooter{transition-duration:.25s;transform-origin:bottom center}
.pk-ball{transition-duration:.85s;transition-timing-function:cubic-bezier(.15,.7,.35,1)}
.pk-net--hit{animation:pk-net .5s ease-out}
@keyframes pk-net{30%{transform:translateY(5px) scaleY(1.03)}70%{transform:translateY(-2px)}}
.pk-keeper{transition-duration:.6s}
.pk-outcome{position:absolute;left:0;right:0;top:38%;margin:0;text-align:center;font:900 clamp(34px,7vw,56px) 'Barlow Condensed',sans-serif;
  color:#fff;text-shadow:0 3px 0 #0d1b2e,0 0 18px #0d1b2e;pointer-events:none}
.pk-outcome--goal{color:#ffd54a}.pk-outcome--save{color:#9fe3ff}.pk-outcome--over{color:#ffd9cf}
.pk-role{font-weight:900;font-size:18px;text-align:center;margin:12px 0 8px}
.pk-role--shooter{color:var(--qr-yellow)}.pk-role--keeper{color:#9fe3ff}
.pk-text{font:900 clamp(26px,4.4vw,40px)/1.15 Nunito,system-ui,sans-serif;text-align:center;margin:4px 0 12px}
.pk .fm-choice{font-size:clamp(20px,3.6vw,32px);min-height:70px}
.pk .question-picture{display:flex;justify-content:center}
.pk-start{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.pk-start select,.pk-start input{min-height:46px;width:100%;border:2px solid #386391;border-radius:10px;background:#071931;color:#fff;padding:8px 12px;font-size:17px}
.pk-history{padding-left:20px}
.pk-leave{text-align:center;margin-top:12px}
.pk-outcome--final{display:flex;flex-direction:column;align-items:center;top:22%;left:50%;right:auto;transform:translateX(-50%);color:#fff;
  background:#0d1b2ecc;border-radius:16px;padding:6px 22px 10px;white-space:nowrap}
.pk-outcome--final span{font-size:clamp(48px,10vw,84px);line-height:1;color:#ffd54a}
.pk-outcome--final small{font-size:clamp(22px,4vw,32px)}
.pk-bubbles{position:absolute;top:8px;left:8px;right:8px;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;
  align-items:flex-start;pointer-events:none}
.pk-bubble{background:#ffffff;color:#0d1b2e;border-radius:14px;padding:6px 12px;font-weight:800;font-size:15px;box-shadow:0 3px 10px #0006;
  animation:pk-pop .25s ease-out}
.pk-bubble--me{align-self:flex-end;background:#ffe9a8}
@keyframes pk-pop{from{transform:scale(.6);opacity:0}to{transform:none;opacity:1}}
.pk-cheers{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-items:center;margin:12px 0}
.pk-cheers .btn{width:auto}
@media(prefers-reduced-motion:reduce){.pk-ball,.pk-keeper,.pk-shooter{transition:none}.pk-bubble,.pk-net--hit{animation:none}}

/* VitenArena logo (templates/includes/logo_mark.html) */
.logo{display:inline-flex;align-items:center;gap:.18em;font-style:normal}
.logo__mark{width:1.15em;height:1.15em;flex:none;filter:drop-shadow(2px 2px 0 #091224)}
.logo b{font-style:normal}
/* Målduellen: the sport choice (penalty/home.html) */
.md-sports{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.md-sport{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;text-decoration:none;color:#fff;border-radius:18px;
  padding:18px 14px;border:3px solid transparent;min-height:150px;justify-content:center;transition:transform .12s,border-color .12s}
.md-sport--football{background:linear-gradient(160deg,#2f8f4e,#1d6a37)}
.md-sport--handball{background:linear-gradient(160deg,#2c62a8,#e58f2e)}
.md-sport:hover,.md-sport:focus-visible{transform:translateY(-2px);border-color:#ffd54a}
.md-sport--on{border-color:#ffd54a;box-shadow:0 0 0 3px #ffd54a55}
.md-sport__icon{font-size:48px;line-height:1}
.md-sport strong{font:900 28px 'Barlow Condensed',sans-serif}
.md-sport span{font-weight:700}
.pk-sport-switch{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:10px 0 4px}
.pk-sport-switch .btn{width:auto}
/* VitenArena: the games page (arena/) */
.arena-games{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.arena-game{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;text-decoration:none;color:#fff;border-radius:20px;
  padding:24px 18px;min-height:200px;justify-content:center;border:3px solid #ffffff22;box-shadow:0 10px 30px #0006;transition:transform .12s,border-color .12s}
.arena-game--question_race{background:linear-gradient(150deg,#1f5c9d,#0b2546 70%)}
.arena-game--maalduellen{background:linear-gradient(150deg,#2f8f4e,#1d3b5f 70%)}
.arena-game:hover,.arena-game:focus-visible{transform:translateY(-3px);border-color:#ffd54a}
.arena-game__icon{font-size:56px;line-height:1}
.arena-game strong{font:900 34px 'Barlow Condensed',sans-serif}
.arena-game__variants{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.arena-subjects{margin-top:14px}
.arena-games--dash .arena-game{min-height:150px;padding:16px}
.arena-games--dash .arena-game__icon{font-size:42px}
.arena-games--dash .arena-game strong{font-size:28px}
/* Helikopterløftet (heli/, static/js/heli.js) */
.heli{max-width:1600px;margin:0 auto;padding:8px 0 16px}
.heli-play{display:grid;gap:12px;grid-template-columns:1fr}
.heli--wide .heli-play{grid-template-columns:minmax(0,1fr) 300px;align-items:start}
.heli-stage{position:relative;display:flex;justify-content:center;min-width:0}
#heli-canvas{display:block;border:3px solid #4175ab;border-radius:16px;box-shadow:0 12px 40px #0008;background:#7cc8ff;outline:none}
.heli-panel{display:flex;flex-direction:column;gap:10px}
.heli:not(.heli--wide) .heli-panel{order:-1;display:grid;grid-template-columns:auto 1fr auto;align-items:center}
.heli:not(.heli--wide) .heli-tip,.heli:not(.heli--wide) .heli-picture{display:none}
.heli-count{margin:0;font-weight:900;color:#87c8ff;letter-spacing:.5px}
.heli-question{margin:0;background:linear-gradient(#f7fbff,#dceaf6);border:3px solid #4a8cce;border-radius:12px;color:#091b35;text-align:center;padding:10px 12px;font:900 clamp(30px,3.2vw,48px)/1.1 'Barlow Condensed',Nunito,sans-serif;min-height:1.4em}
.heli-picture{background:#fff;border-radius:10px;padding:6px}
.heli-picture svg{width:100%;height:auto;max-height:170px}
.heli-stats{display:flex;gap:10px;margin:0}
.heli-stats div{flex:1;background:#07172f;border:1px solid #39658d;border-radius:10px;padding:6px 10px;text-align:center}
.heli-stats dt{font-size:12px;font-weight:900;color:#a5bedb;letter-spacing:1px;text-transform:uppercase}
.heli-stats dd{margin:0;font:900 28px 'Barlow Condensed',Nunito,sans-serif;color:#ffdc77}
.heli-tools{display:flex;gap:8px;flex-wrap:wrap}.heli-tools .btn{width:auto}
.heli kbd{display:inline-block;min-width:1.7em;padding:2px 6px;border:2px solid #5d87b3;border-bottom-width:4px;border-radius:7px;background:#102746;color:#fff;font:900 14px Nunito,sans-serif;text-align:center}
.heli-feedback{position:absolute;left:50%;top:14px;transform:translateX(-50%);margin:0;padding:0;font:900 clamp(20px,2.4vw,32px) 'Barlow Condensed',Nunito,sans-serif;text-align:center;pointer-events:none;max-width:90%}
.heli-feedback:not(:empty){padding:8px 18px;border-radius:12px;border:3px solid;box-shadow:0 8px 24px #0007}
.heli-feedback--right{background:#0f3d2a;border-color:#5fe3a0;color:#d8ffe9}
.heli-feedback--hint{background:#2a2a12;border-color:#ffcf33;color:#fff6cc}
.heli-feedback--wrong{background:#3a1f2c;border-color:#ff9aa3;color:#ffe9eb}
.heli-paused{position:absolute;inset:auto;top:50%;left:50%;transform:translate(-50%,-50%);min-width:min(420px,90%);text-align:center;z-index:2}
.heli-menu{display:grid;gap:10px}
.heli-menu .btn:focus-visible,.heli-tools .btn:focus-visible,#heli-go:focus-visible{outline:3px solid #fff;outline-offset:3px}
.heli-intro{max-width:720px;margin:20px auto;text-align:center}
.heli-howto{list-style:none;padding:0;margin:18px 0;display:grid;gap:12px;text-align:left}
.heli-howto li{display:flex;align-items:center;gap:14px;font-weight:800}
.heli-keys{display:inline-flex;gap:4px;min-width:150px;justify-content:flex-end}
.heli-keys kbd.wide{min-width:7em}
.heli-intro .btn,.heli-done .btn{width:auto}
.heli-small{max-width:640px;margin:20px auto;text-align:center;font-weight:800}
.heli-result{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}
.heli-result div{background:#07172f;border:1px solid #39658d;border-radius:12px;padding:10px}
.heli-result dt{font-size:12px;font-weight:900;color:#a5bedb;text-transform:uppercase;letter-spacing:1px}
.heli-result dd{margin:4px 0 0;font:900 32px 'Barlow Condensed',Nunito,sans-serif;color:#ffdc77}
.heli-challenge{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:12px}
.heli-challenge .btn{width:auto}
.heli-start{display:grid;gap:12px;max-width:760px}.heli-start .btn{width:auto;justify-self:start}
.heli-counts{display:flex;gap:16px;border:0;padding:0;margin:0}
.heli-worlds{border:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}.heli-worlds legend{font-weight:900;margin-bottom:6px}
.heli-world{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;border:2px solid #39658d;background:#07172f;cursor:pointer}
.heli-world input{position:absolute;opacity:0;width:1px;height:1px}
.heli-world:has(input:checked){border-color:#ffcf33;box-shadow:0 0 0 2px #ffcf33}
.heli-world:has(input:focus-visible){outline:3px solid #fff;outline-offset:2px}
.heli-world__icon{font-size:28px}.heli-world strong{display:block}.heli-world small{display:block;color:#a5bedb;font-size:13px}
.heli-world--vinterfjellet{background:linear-gradient(135deg,#0b1a3a,#1d2f5e)}.heli-world--skjaergarden{background:linear-gradient(135deg,#3a1d2f,#5e3a1d)}.heli-world--elvedalen{background:linear-gradient(135deg,#1d3a2a,#6b4a1d)}.heli-world--fiskevaeret{background:linear-gradient(135deg,#2a2350,#7a3d3a)}.heli-counts legend{font-weight:900;margin-bottom:6px}
.heli-topics{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px;border:0;padding:0}
@media(max-width:700px){.heli-result{grid-template-columns:repeat(2,minmax(0,1fr))}}
.heli-board{list-style:none;padding:12px;display:grid;gap:6px}.heli-board li{display:flex;gap:10px;align-items:center;padding:6px 10px;border-radius:10px;background:#07172f}.heli-board li.me{outline:2px solid #ffca33}
.heli-mission-line{margin:0;font-weight:900;color:#ffdc77}
.heli-brief{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(560px,92%);display:flex;gap:16px;align-items:center;z-index:2;border:3px solid #4a8cce}
.heli-brief--bonus{border-color:#ffcf33;box-shadow:0 0 0 4px #ffcf3355,0 12px 40px #0008}
.heli-brief__pilot{flex:0 0 96px;width:96px;height:96px;border-radius:50%;background:#07172f;border:3px solid #87c8ff;overflow:hidden}
.heli-brief__pilot svg{width:100%;height:100%}
.heli-brief__body{display:grid;gap:6px}.heli-brief__body p{margin:0}.heli-brief__body .btn{width:auto;justify-self:start}
.heli-brief__title{margin:0;font:900 clamp(22px,2.4vw,30px) 'Barlow Condensed',Nunito,sans-serif}
.heli-brief__go{font-size:14px}
.heli-brief__actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.heli-brief__actions .btn{width:auto}
.heli-brief__actions kbd{margin-left:6px;font-size:12px}
#heli-skip{width:auto;align-self:flex-start}
.heli-map{list-style:none;padding:0;margin:4px 0;display:flex;flex-wrap:wrap;gap:6px}
.heli-map li{padding:3px 9px;border-radius:999px;border:2px solid #39658d;font-weight:800;font-size:14px}
.heli-map li.is-here{background:#ffcf33;border-color:#ffcf33;color:#091b35}
.heli-map li.is-here::after{content:' · her'}
.heli-pilot{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:12px}.heli-pilot p{margin:0}.heli-pilot .btn{width:auto}
@media(max-width:600px){.heli-brief{flex-direction:column;text-align:center}.heli-brief__body .btn{justify-self:center}}
/* Helikopterløftet: the pupil's base (heli/base.py, static/js/heli-base.js) */
.hb-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 12px}
.hb-stats div{background:#07172f;border:1px solid #39658d;border-radius:12px;padding:10px}
.hb-stats dt{font-size:12px;font-weight:900;color:#a5bedb;text-transform:uppercase;letter-spacing:1px}
.hb-stats dd{margin:4px 0 0;font:900 26px 'Barlow Condensed',Nunito,sans-serif;color:#ffdc77}
.hb-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px;align-items:start}
.hb-field{min-width:0}
#hb-canvas{display:block;max-width:100%;border-radius:12px;border:3px solid #4175ab;outline:none}
#hb-canvas:focus-visible{outline:3px solid #fff;outline-offset:3px}
#hb-canvas.is-placing{cursor:crosshair}
.hb-status{font-weight:800;min-height:1.5em}
.hb-side{display:grid;gap:12px}
.hb-catalogue,.hb-mine{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.hb-item{width:100%;display:grid;grid-template-columns:1fr auto;gap:2px 8px;text-align:left;padding:8px 10px;border-radius:10px;border:2px solid #39658d;background:#07172f;color:inherit;font:inherit;cursor:pointer}
.hb-item[aria-pressed=true]{border-color:#ffcf33;box-shadow:0 0 0 2px #ffcf33}
.hb-item:disabled{opacity:.6;cursor:not-allowed}
.hb-item:focus-visible{outline:3px solid #fff;outline-offset:2px}
.hb-item__name{font-weight:900}.hb-item__cost{font-weight:900;color:#ffdc77}.hb-item__note{grid-column:1/-1;font-size:13px}
.hb-mine-title{margin:12px 0 6px;font-size:16px}
.hb-mine{display:flex!important;flex-wrap:wrap;gap:6px}
.hb-chip{padding:6px 12px;border-radius:999px;border:2px solid #39658d;background:#07172f;color:inherit;font:800 14px Nunito,sans-serif;cursor:pointer}
.hb-chip[aria-pressed=true]{border-color:#ffcf33;box-shadow:0 0 0 2px #ffcf33}.hb-chip:focus-visible{outline:3px solid #fff;outline-offset:2px}
.hb-placing .btn{width:auto}
.hb-helis{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.hb-heli{display:grid;gap:6px;align-content:start}.hb-heli .btn{width:auto;justify-self:start}.hb-heli p{margin:0}
.hb-heli.is-chosen{border-color:#ffcf33;box-shadow:0 0 0 2px #ffcf33}
.hb-heli.is-locked .hb-heli__preview{filter:grayscale(1);opacity:.55}
.hb-heli__preview{width:100%;max-width:220px;height:auto;background:linear-gradient(#7cc8ff,#d9f1ff);border-radius:10px}
.hb-heli__state{font-weight:900}
@media(max-width:900px){.hb-layout{grid-template-columns:1fr}.hb-stats{grid-template-columns:1fr}}
/* Miniby (miniby/, static/js/miniby.js) */
.nav-miniby{background:linear-gradient(#2f9e5b,#1e7a43);border:1px solid #6fd99a;border-radius:10px;padding:6px 12px!important;color:#fff!important}
.nav-miniby.active{box-shadow:0 0 0 2px #ffcf33}
.mb{max-width:1600px;margin:0 auto;padding:8px 0 16px}
.mb-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.mb-head h1{margin:0}.mb-head-actions{display:flex;gap:8px;flex-wrap:wrap}.mb-head-actions .btn{width:auto;min-height:48px}
.mb-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:12px;align-items:start}
@media(max-width:1000px){.mb-layout{grid-template-columns:1fr}}
.mb-map-wrap{position:relative;border:3px solid #4175ab;border-radius:16px;overflow:hidden;background:#6fb864;box-shadow:0 12px 40px #0008}
.mb-map{display:block;width:100%;height:min(70vh,720px);touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.mb-map:active{cursor:grabbing}
.mb-zoom{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:6px}
.mb-zoom .btn{width:48px;height:48px;padding:0;font-size:22px}
.mb-plot{cursor:pointer;outline:none}.mb-plot:focus-visible polygon:first-child,.mb-plot--selected polygon:first-child{stroke:#fff!important;stroke-width:3!important}
.mb-label{font:900 12px Nunito,Arial,sans-serif;fill:#10233d;paint-order:stroke;stroke:#fff;stroke-width:3px;pointer-events:none}
.mb-label--small{font-size:9px}.mb-label--mine{fill:#7a4a00}.mb-label--vote{fill:#5a3d00;font-size:13px}
.mb-scaffold{stroke:#8a6d3b;stroke-width:2}.mb-crane{stroke:#f4b400;stroke-width:3}
.mb-side{display:flex;flex-direction:column;gap:10px}
.mb-card{padding:14px}.mb-h{font:900 22px/1.15 'Barlow Condensed',Nunito,sans-serif;margin:0 0 6px}
.mb-card .btn{width:auto;min-height:44px}
.mb-progress{height:14px;background:#07172f;border:1px solid #39658d;border-radius:8px;overflow:hidden;margin:6px 0}
.mb-progress span{display:block;height:100%;background:linear-gradient(90deg,#ffcf33,#ff9a2a)}
.mb-list{list-style:none;padding:0;margin:0;display:grid;gap:6px}.mb-list li{display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap}
.mb-banner{margin:0 0 10px}
.mb-dialog{position:fixed;inset:0;background:#030b18cc;display:grid;place-items:center;z-index:20;padding:16px}
.mb-dialog[hidden]{display:none}
.mb-dialog-card{max-width:640px;width:100%;max-height:90vh;overflow:auto}
.mb-q-for{font-weight:900;color:#87c8ff;margin:0}
.mb-answers{grid-template-columns:repeat(2,1fr)}.mb-answers button{min-height:64px}
.mb-answers button.mb-right{outline:4px solid #5fe3a0}.mb-answers button.mb-wrong{outline:4px solid #ff9aa3;opacity:.6}
.mb-q-feedback{min-height:24px;font-weight:900;margin:10px 0}
.mb-q-feedback--right{color:#7dffc0}.mb-q-feedback--wrong{color:#ffc4ca}
.mb-q-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.mb-q-actions .btn{width:auto;min-height:48px}
.mb-swatches{border:0;padding:0;margin:10px 0;display:flex;flex-wrap:wrap;gap:8px}.mb-swatches legend{font-weight:900;margin-bottom:6px}
.mb-swatch{display:flex;align-items:center;gap:6px;border:2px solid #3e6a91;border-radius:10px;padding:8px 10px;cursor:pointer;min-height:44px}
.mb-swatch:has(input:checked){border-color:#ffcf33;background:#1d3a5e}
.mb-swatch input{accent-color:#ffcf33}.mb-swatch__colour{width:20px;height:20px;border-radius:6px;border:2px solid #fff}
.mb-celebrate{position:absolute;left:50%;top:18px;transform:translateX(-50%);background:#0f3d2a;border:3px solid #5fe3a0;color:#d8ffe9;border-radius:14px;padding:10px 18px;font:900 clamp(18px,2.2vw,28px) 'Barlow Condensed',Nunito,sans-serif;box-shadow:0 8px 24px #0007;animation:mb-pop .5s ease-out}
.mb-celebrate[hidden]{display:none}.mb-celebrate--still{animation:none}
@keyframes mb-pop{from{transform:translate(-50%,-20px) scale(.8);opacity:0}to{transform:translate(-50%,0) scale(1);opacity:1}}
.miniby-screen .topbar,.miniby-screen footer{display:none}.miniby-screen .mb-map{height:calc(100vh - 120px)}.miniby-screen .mb-zoom{display:none}
.mb-create{display:grid;gap:10px;max-width:640px}.mb-create .btn{width:auto;justify-self:start}
.mb-dash-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}.mb-dash-head .actions{display:flex;gap:8px}
.mb-dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-top:14px}
.mb-inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0}.mb-inline input[type=number]{width:100px}
.mb-place{border:0;padding:0;display:grid;gap:6px;margin:8px 0}
/* Tankduellen (tank/, static/js/tank.js) */
.tk{max-width:1800px;margin:0 auto;padding:6px 0 16px}
.tk:fullscreen{max-width:none;width:100%;height:100%;overflow:auto;padding:8px 16px;background:radial-gradient(circle at 20% 0,#1f5c9d 0,#091d38 42%,#071323 100%)}
.tk:-webkit-full-screen{max-width:none;width:100%;height:100%;overflow:auto;padding:8px 16px;background:#071323}
.tk-top{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:center;margin-bottom:6px}
.tk-player{display:flex;gap:10px;align-items:center}.tk-player--guest{text-align:right;justify-content:flex-end}
.tk-player-info{display:grid;gap:4px;flex:1;min-width:0}.tk-player small{color:#bcd8f2;font-weight:700}
.tk-face{flex:0 0 52px;width:52px;height:52px;border-radius:50%;background:#0d2240;border:2px solid #39658d;overflow:hidden}.tk-face svg{width:100%;height:100%}
.tk-player--host .tk-face{border-color:#7fc0ff}.tk-player--guest .tk-face{border-color:#ff9a90}
.tk-points{color:#ffdc77}
.tk-player strong{font:900 20px 'Barlow Condensed',Nunito,sans-serif}
.tk-player--host strong{color:#7fc0ff}.tk-player--guest strong{color:#ff9a90}
.tk-hp{height:16px;background:#07172f;border:2px solid #39658d;border-radius:9px;overflow:hidden}
.tk-hp span{display:block;height:100%;width:100%;background:linear-gradient(90deg,#5fe3a0,#2fbf71);transition:width .6s}
.tk-player--guest .tk-hp span{margin-left:auto}
.tk-hp--low span{background:linear-gradient(90deg,#ffcf33,#ff8a3d)}
.tk-title{font:900 clamp(22px,3vw,40px) 'Barlow Condensed',Impact,sans-serif;font-style:italic;color:#ffcf33;letter-spacing:1px;text-shadow:3px 3px #091224}
.tk-title small{display:block;text-align:center;font:800 14px Nunito,sans-serif;color:#bcd8f2;text-shadow:none;font-style:normal;letter-spacing:0}
.tk-status{text-align:center;font-weight:900;min-height:24px;margin:4px 0 8px;color:#bcd8f2}.tk-status--me{color:#ffdc77}
.tk-stage{position:relative;display:flex;justify-content:center}
#tk-canvas{display:block;border:3px solid #4175ab;border-radius:16px;box-shadow:0 12px 40px #0008;background:#8fd0ff;touch-action:none}
.tk-float{position:absolute;top:28%;left:50%;transform:translateX(-50%);margin:0;font:900 clamp(22px,3vw,40px) 'Barlow Condensed',Nunito,sans-serif;pointer-events:none;text-shadow:2px 2px #091224}
.tk-float--hit{color:#ffcf33}.tk-float--miss{color:#e8f6ff}.tk-float--saved{color:#9fe0ff}
.tk-ammo{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:min(460px,92%);z-index:3}
.tk-ammo-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tk-ammo-option small{color:#bcd8f2;font-size:13px}.tk-ammo-option:disabled{opacity:.6;cursor:not-allowed}
.tk-ammo-option{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;border:3px solid #3e6a91;border-radius:12px;background:#19314f;color:#fff;padding:12px;min-height:72px;font:inherit}
.tk-ammo-option[aria-checked="true"]{border-color:#ffcf33;background:#244a75}
.tk-ammo-option:focus-visible{outline:3px solid #fff;outline-offset:2px}
.tk-panel{margin-top:10px;display:grid;gap:8px;padding:10px 12px}
@media(min-width:1100px){.tk-panel{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);align-items:center}.tk-help{grid-column:1/-1}}
.tk-panel #tk-giveup{width:auto;justify-self:end}
.tk-readout{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:0}
.tk-r-time--low{color:#ff8a70!important}
.tk-readout div{background:#07172f;border:1px solid #39658d;border-radius:10px;padding:6px 10px}
.tk-readout dt{font-size:11px;font-weight:900;color:#a5bedb;text-transform:uppercase;letter-spacing:1px}
.tk-readout dd{margin:2px 0 0;font:900 20px/1.1 'Barlow Condensed',Nunito,sans-serif;color:#ffdc77}
.tk-power{display:block;height:14px;background:#0d2240;border-radius:7px;overflow:hidden;margin-top:6px}
.tk-power span{display:block;height:100%;width:0;background:linear-gradient(90deg,#5fe3a0,#ffcf33,#ff6b4a)}
.tk-touch{display:grid;grid-template-columns:repeat(4,56px) 1fr 2fr;gap:8px}
.tk-touch .btn{min-height:52px;width:auto;font-size:18px;padding:6px 8px}.tk-touch .tk-fire{font-size:16px;touch-action:none}
.tk-touch[hidden]{display:none}.tk-help{margin:0;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:space-between}.tk-help p{margin:0}
.tk-settings{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.tk-settings .btn{width:auto;font-size:13px;padding:4px 10px;min-height:32px;border-radius:9px;box-shadow:none}
.tk-question--defence{border-color:#7fd3ff;background:linear-gradient(180deg,#123056,#0d2240)}.tk-q-cancel{grid-column:1/-1;justify-self:start;width:auto}
.tk-defence{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;border:3px solid #7fd3ff;background:#10233f;padding:8px 14px}
.tk-defence[hidden]{display:none}.tk-def-head{flex:1 1 300px;display:grid;gap:2px}.tk-def-options{flex:2 1 340px}.tk-def-options:empty{display:none}
.tk-defence #tk-def-no{width:auto;flex:0 0 auto}
.tk-def-title{margin:0;font:900 clamp(20px,2.4vw,28px) 'Barlow Condensed',Impact,sans-serif;color:#ffcf33;letter-spacing:2px;text-shadow:2px 2px #091224}
.tk-defence p{margin:4px 0}
.tk-def-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tk-def-option{display:flex;flex-direction:column;gap:4px;align-items:center;border:3px solid #3e6a91;border-radius:12px;background:#19314f;color:#fff;padding:8px 12px;min-height:60px;font:inherit;cursor:pointer}
.tk-def-option strong{font-size:20px}.tk-def-option:hover:not(:disabled),.tk-def-option:focus-visible{border-color:#ffcf33;background:#244a75;outline:3px solid #fff;outline-offset:2px}
.tk-def-option:disabled{opacity:.55;cursor:not-allowed}
.tk-vs{position:absolute;inset:0;z-index:5;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;padding:16px;background:rgba(7,18,38,.88);border-radius:12px}
.tk-vs[hidden]{display:none}.tk-vs-side{display:grid;justify-items:center;gap:4px;color:#e8f6ff}.tk-vs-side strong{font:900 clamp(20px,3vw,34px) 'Barlow Condensed',Nunito,sans-serif}
.tk-vs-side--host strong{color:#7fc0ff}.tk-vs-side--guest strong{color:#ff9a90}
.tk-vs-figure{display:grid;justify-items:center}.tk-vs-figure svg:first-child{width:clamp(90px,14vw,170px);height:auto}.tk-vs-figure .tk-tank-pic{width:clamp(110px,15vw,190px);height:auto;margin-top:-4px}
.tk-vs-mid{font:900 clamp(40px,7vw,90px) 'Barlow Condensed',Impact,sans-serif;font-style:italic;color:#ffcf33;text-shadow:4px 4px #091224;text-align:center}
.tk-vs-mid small{display:block;font:800 16px Nunito,sans-serif;color:#bcd8f2;text-shadow:none;font-style:normal}
.tk-vs-go{grid-column:1/-1;justify-self:center;width:auto}
@media(prefers-reduced-motion:no-preference){.tk-vs-side--host{animation:tk-in-left .5s ease-out}.tk-vs-side--guest{animation:tk-in-right .5s ease-out}
  .tk-done-figure--winner svg:first-of-type{animation:tk-hop 1s ease-in-out 3}}
@keyframes tk-in-left{from{transform:translateX(-40px);opacity:0}}@keyframes tk-in-right{from{transform:translateX(40px);opacity:0}}
@keyframes tk-hop{50%{transform:translateY(-10px)}}
.tk-done-figures{display:flex;justify-content:center;gap:clamp(16px,6vw,80px);flex-wrap:wrap}
.tk-done-figure{position:relative;display:grid;justify-items:center;gap:2px}.tk-done-figure svg:first-of-type{width:clamp(90px,16vw,150px);height:auto}
.tk-done-figure .tk-tank-pic{width:clamp(110px,14vw,170px);height:auto;margin-top:-4px}.tk-done-figure strong{font-size:18px}
.tk-badge{position:absolute;top:-6px;right:-10px;font-size:34px}
.tk-again-text{min-height:22px;font-weight:800;color:#ffdc77}
.tk-panel[hidden]{display:none}
.tk-question{margin-top:10px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:10px 14px;align-items:center;padding:10px 14px;border-color:#ffcf33}
.tk-question[hidden]{display:none}
.tk-q-text{margin:4px 0 0;font-size:clamp(28px,3vw,44px)}
.tk-q-picture svg{max-height:120px;width:auto}
.tk-q-options{grid-template-columns:repeat(4,minmax(0,1fr))}.tk-q-options button{min-height:60px}
.tk-q-feedback{grid-column:1/-1;margin:0;min-height:22px}
@media(max-width:800px){.tk-question{grid-template-columns:1fr}.tk-q-options{grid-template-columns:repeat(2,minmax(0,1fr))}}.tk-summary{max-width:520px;margin:12px auto}
@media(max-width:800px){.tk-readout{grid-template-columns:repeat(2,minmax(0,1fr))}.tk-touch{grid-template-columns:repeat(4,1fr)}.tk-touch .btn:nth-child(n+5){grid-column:span 2}}
@media(max-width:800px){.tk-readout{grid-template-columns:repeat(2,minmax(0,1fr))}.tk-r-last{grid-column:1/-1}.tk-face{flex-basis:40px;width:40px;height:40px}
  .tk-top{gap:6px}.tk-ammo-list,.tk-def-options{grid-template-columns:1fr}.tk-vs{grid-template-columns:1fr 1fr;align-content:center}.tk-vs-mid{grid-column:1/-1;grid-row:1}}
/* Detektivbyrået (detective/, static/js/detective.js) */
.dt-cases{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-bottom:14px}
.dt-case{display:grid;gap:6px;text-decoration:none;color:inherit;border-color:#b5894f}.dt-case:hover{filter:brightness(1.1)}
.dt-case strong{font:900 26px 'Barlow Condensed',Nunito,sans-serif}
.dt-case__no{font-weight:900;letter-spacing:2px;color:#e7c27a;font-size:12px;margin:0}
.dt{max-width:1500px;margin:0 auto;padding:6px 0 14px;position:relative}
.dt-top{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.dt-title{margin:0;font:900 clamp(26px,3vw,40px) 'Barlow Condensed',Nunito,sans-serif}
.dt-tools{display:flex;gap:8px;flex-wrap:wrap}.dt-tools .btn{width:auto;min-height:46px}
.dt-tools kbd,.dt-act kbd{font-size:11px;border:1px solid currentColor;border-radius:5px;padding:0 4px;opacity:.7}
.dt-goal{margin:6px 0;font-weight:800;color:#ffdc77;min-height:22px}
.dt-stage{position:relative;display:flex;justify-content:center}
#dt-canvas{display:block;border:3px solid #6b5a3e;border-radius:14px;box-shadow:0 12px 40px #0008;outline:none}
.dt-prompt{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);margin:0;background:#0b1a30e6;border:2px solid #ffcf33;color:#fff;border-radius:10px;padding:6px 14px;font-weight:900;pointer-events:none}
.dt-prompt:empty{display:none}
.dt-toasts{position:absolute;top:10px;right:10px;list-style:none;margin:0;padding:0;display:grid;gap:6px;max-width:min(420px,80%)}
.dt-toasts li{background:#0f3d2a;border:2px solid #5fe3a0;color:#e8fff3;border-radius:10px;padding:8px 12px;box-shadow:0 6px 18px #0007;animation:mb-pop .3s ease-out}
.dt-touch{display:flex;gap:12px;align-items:center;justify-content:center;margin-top:10px;flex-wrap:wrap}
.dt-pad{display:grid;grid-template-columns:repeat(4,56px);gap:6px}.dt-pad .btn{min-height:52px;width:auto;padding:0;font-size:20px;touch-action:none}
.dt-act{width:auto;min-height:52px}
.dt-panel{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(620px,94vw);max-height:88vh;overflow:auto;z-index:30;border-color:#b5894f;box-shadow:0 20px 60px #000b}
.dt-panel--wide{width:min(900px,96vw)}
.dt-panel[hidden],.dt-talk[hidden]{display:none}
.dt-talk{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);width:min(900px,96vw);display:flex;gap:14px;z-index:30;border-color:#b5894f;box-shadow:0 20px 60px #000b;max-height:70vh;overflow:auto}
.dt-portrait{flex:none;width:72px;height:72px;border-radius:50%;display:grid;place-items:center;font-size:34px;border:3px solid #fff}
.dt-talk-name{margin:0;font:900 22px 'Barlow Condensed',Nunito,sans-serif;color:#ffdc77}
.dt-talk-text p{margin:6px 0;font-size:17px;line-height:1.45}
.dt-important{color:#ffdc77;font-weight:800}
.dt-talk-options{display:flex;flex-direction:column;gap:6px;margin-top:8px}.dt-talk-options .btn{width:auto;text-align:left;min-height:44px}
.dt-task-text{font-size:clamp(20px,2.4vw,28px)!important;line-height:1.3}
.dt-hints{padding-left:18px;color:#ffe9a8}
.dt-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.dt-tabs button{border:2px solid #3e6a91;background:#19314f;color:#cce9ff;border-radius:10px;padding:8px 12px;font-weight:900}
.dt-tabs button[aria-selected="true"]{border-color:#ffcf33;color:#fff;background:#244a75}
.dt-nb-goal{font-weight:800;color:#ffdc77;margin:4px 0}
.dt-nb-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.dt-nb-list li{display:flex;gap:10px;align-items:flex-start;background:#07172f;border:1px solid #39658d;border-radius:10px;padding:8px 10px}
.dt-nb-list p{margin:2px 0 0}.dt-icon{font-size:22px}.dt-time{font:900 20px 'Barlow Condensed',Nunito,sans-serif;color:#ffdc77;min-width:92px}
.dt-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin:10px 0}
.dt-deduction{background:#07172f;border:2px dashed #39658d;border-radius:12px;padding:10px}
.dt-deduction h3{margin:0 0 6px;font-size:17px}.dt-deduction--solved{border-style:solid;border-color:#5fe3a0}
.dt-deduction-options{display:flex;flex-wrap:wrap;gap:6px}.dt-deduction-options .btn{width:auto}
.dt-deduction-fb{color:#ffc4ca;min-height:20px;margin:6px 0 0}
.dt-solve-part{border:1px solid #39658d;border-radius:12px;margin:0 0 10px;padding:10px}
.dt-solve-part legend{font-weight:900}.dt-solve-part select{width:100%;margin:4px 0 8px}
.dt-solve-evidence{display:flex;flex-wrap:wrap;gap:6px 12px}.dt-solve-evidence label{display:flex;gap:4px;align-items:center;min-height:32px}
.dt-solve-fb{margin:6px 0 0;font-weight:800;min-height:20px}.dt-solve-fb--wrong{color:#ffc4ca}.dt-solve-fb--right{color:#7dffc0}
.dt-decisive{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0}.dt-decisive li{background:#07172f;border-radius:10px;padding:6px 10px}
.dt-end-maths{font-weight:800;color:#ffdc77}
/* Skattejakten (treasure/, static/js/treasure.js); shares the panels of Detektivbyrået (.dt-…) */
.tr-adventure{border-color:#e3b23c}
#tr-canvas{display:block;border:3px solid #c99a3c;border-radius:14px;box-shadow:0 12px 40px #0008;outline:none;background:#1f6fb2}
.tr-area{position:absolute;top:12px;left:12px;margin:0;padding:6px 12px;border-radius:10px;background:#0b1a30d9;border:2px solid #e3b23c;font-weight:900;opacity:0;pointer-events:none}
.tr-area--show{animation:tr-area 3s ease-out}
@keyframes tr-area{0%{opacity:0;transform:translateY(-6px)}10%,75%{opacity:1;transform:none}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.tr-area--show{animation:none;opacity:1}}
.tr-bag{list-style:none;padding:0;margin:8px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}
.tr-item{display:flex;gap:10px;align-items:flex-start;background:#07172f;border:2px solid #39658d;border-radius:12px;padding:8px 10px}
.tr-item p{margin:2px 0 0}.tr-item--fragment{border-color:#e3b23c}.tr-item--bonus{border-color:#5fe3a0}.tr-item--used{opacity:.6}
.tr-map-wrap{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-start}
#tr-map-canvas{max-width:100%;height:auto;border:4px solid #8a6d3b;border-radius:8px;box-shadow:0 6px 20px #0006}
.tr-map-legend{list-style:none;padding:0;margin:0;display:grid;gap:4px;font-weight:800}
.tr-end{border-color:#e3b23c;text-align:center}.tr-end .dt-decisive{justify-content:center}
.tr-end-canvas{width:100%;height:160px;display:block}
.admin-games{border:0;padding:0;margin:12px 0;display:grid;gap:8px}
.admin-game{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#07172f;border:1px solid #39658d;border-radius:10px;padding:10px 12px;min-height:48px}
.admin-game input{width:22px;height:22px;accent-color:#ffcf33}
/* Teacher: add pupils, login cards, a new password */
.add-pupils-card{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.add-pupils-card .btn{width:auto}
.add-pupils textarea{width:100%;font-size:17px}
.login-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-top:14px}
.login-card{background:#fff;color:#10233d;border:2px dashed #7a8aa0;border-radius:12px;padding:12px 14px;break-inside:avoid}
.login-card__who{margin:0 0 6px;font-weight:800;color:#3a4a60}
.login-card dl{margin:0;display:grid;gap:4px}.login-card dt{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:#5a6a80}
.login-card dd{margin:0 0 4px;font:900 24px/1.1 ui-monospace,Menlo,Consolas,monospace}
.login-card__where{margin:6px 0 0;font-size:12px;color:#3a4a60}
.pupil-password__value{font:900 34px ui-monospace,Menlo,Consolas,monospace;letter-spacing:2px;margin:6px 0;color:#ffdc77}
@media print{.no-print,.topbar,footer{display:none!important}.login-cards{grid-template-columns:repeat(3,1fr)}body{background:#fff}}
/* Tankduellen on a wide screen, when it gives the bigger field (tank.js chooseSide): the question, the defence and the
   controls stand in a column beside the field, so the field can use the whole height */
@media(min-width:1100px){
  #tk-play.tk-play--side{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:0 14px;align-items:start}
  .tk-play--side>.tk-stage{grid-column:1;grid-row:1/span 4}
  .tk-play--side>.tk-defence,.tk-play--side>.tk-question,.tk-play--side>.tk-panel{grid-column:2;margin:0 0 10px}
  .tk-play--side .tk-defence{flex-direction:column;align-items:stretch}.tk-play--side .tk-def-head,.tk-play--side .tk-def-options{flex:none}
  .tk-play--side .tk-def-options{grid-template-columns:1fr}
  .tk-play--side .tk-question{grid-template-columns:1fr}.tk-play--side .tk-q-options{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tk-play--side .tk-panel{grid-template-columns:1fr!important}.tk-play--side .tk-readout{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tk-play--side .tk-r-last{grid-column:1/-1}
  .tk-play--side .tk-touch{grid-template-columns:repeat(4,1fr)}.tk-play--side .tk-touch .btn:nth-child(n+5){grid-column:span 2}
  .tk-play--side .tk-help{flex-direction:column;align-items:stretch}.tk-play--side .tk-settings{justify-content:flex-start}
}
/* Tankduellen: the players, the map and the status lie over the sky of the field (the field gets all the height) */
.tk-field{position:relative;line-height:0}.tk-field>canvas{display:block}
.tk-field .tk-top{position:absolute;top:8px;left:10px;right:10px;margin:0;line-height:normal;align-items:start;gap:10px;
  grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr);pointer-events:none}
.tk-field .tk-player{width:min(330px,100%);background:rgba(7,18,38,.74);border:1px solid rgba(127,192,255,.45);border-radius:14px;padding:6px 10px}
.tk-field .tk-player--host{justify-self:start}.tk-field .tk-player--guest{justify-self:end;border-color:rgba(255,154,144,.5)}
.tk-field .tk-face{flex-basis:46px;width:46px;height:46px}
.tk-field .tk-player strong{font-size:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-field .tk-hp{height:12px}.tk-field .tk-player small{font-size:12px}
.tk-mid{display:grid;justify-items:center;gap:4px;min-width:0}
.tk-field .tk-title{font-size:clamp(16px,1.8vw,26px);line-height:1.1;background:rgba(7,18,38,.6);border-radius:10px;padding:2px 12px}
.tk-field .tk-title small{font-size:12px}
.tk-field .tk-status{margin:0;min-height:0;font-size:14px;line-height:1.3;background:rgba(7,18,38,.78);border-radius:10px;padding:4px 10px}
.tk-field .tk-status:empty{display:none}
@media(max-width:900px){.tk-field .tk-title{display:none}.tk-field .tk-face{flex-basis:34px;width:34px;height:34px}
  .tk-field .tk-player{padding:4px 8px;gap:6px}.tk-field .tk-player strong{font-size:15px}.tk-field .tk-player small{font-size:11px}
  .tk-field .tk-status{font-size:12px}.tk-field .tk-top{top:5px;left:5px;right:5px;gap:5px}}
/* «Åpne rom» (arena/rooms.py): rooms waiting for players, with a «Bli med» button each */
.open-rooms{margin:14px 0;padding:12px 16px}
.open-rooms__title{margin:0 0 8px;font:900 22px 'Barlow Condensed',Nunito,sans-serif;color:#ffdc77}
.open-rooms__items{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.open-room{display:flex;align-items:center;gap:12px;background:#0d2240;border:1px solid #39658d;border-radius:12px;padding:8px 12px}
.open-room__icon{font-size:26px}.open-room__text{flex:1;min-width:0;display:grid}
.open-room__game{font-size:12px;font-weight:900;color:#a5bedb;text-transform:uppercase;letter-spacing:1px}
.open-room__text small{color:#bcd8f2}.open-room form{margin:0}.open-room .btn{width:auto}
.open-rooms__empty{margin:0}
.open-rooms__code-only{display:flex;gap:8px;align-items:center;font-weight:700;margin:8px 0}.open-rooms__code-only input{width:20px;height:20px}
.arena-game{position:relative}
.arena-game__waiting{position:absolute;top:10px;right:10px;background:#ffcf33;color:#18213c;font-weight:900;font-size:13px;border-radius:999px;padding:3px 10px}
/* Helikopterløftet for to (heli/coop*.py, static/js/heli-coop*.js) */
.heli-coop-actions{display:flex;gap:10px;flex-wrap:wrap}.heli-coop-actions .btn{width:auto}
.co-lobby{max-width:760px;margin:16px auto;text-align:center}
.co-pilots{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
.co-pilot{display:grid;gap:4px;justify-items:center;padding:14px;border-radius:14px;background:#07172f;border:2px solid #39658d}
.co-pilot.is-here{border-color:#5fe3a0}.co-pilot small{color:#a5bedb}
.co-pilot__n{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#2e73c8;color:#fff;font:900 20px Nunito,sans-serif}
#co-guest-box .co-pilot__n{background:#e08020}
.co-code{font:900 34px 'Barlow Condensed',Nunito,sans-serif;letter-spacing:6px;color:#ffdc77}
.co-invite input{width:min(420px,100%)}
.co-lobby__actions,.co-done__actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:12px}.co-lobby__actions .btn,.co-done__actions .btn{width:auto}
.co-play{display:grid;gap:8px}
.co-hud{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.co-task{margin:0;font-weight:900;color:#ffdc77;flex:1 1 280px}
.co-gauges{display:flex;gap:14px;align-items:center}
.co-gauge{display:flex;gap:6px;align-items:center}
.co-bar{display:block;width:120px;height:14px;border-radius:7px;background:#07172f;border:2px solid #39658d;overflow:hidden}
.co-bar i{display:block;height:100%;background:linear-gradient(90deg,#f2b632,#ffdc77);transition:width .15s}
.co-bar--hp i{background:linear-gradient(90deg,#3fd08a,#9ff0c4)}
.co-bar.is-low i{background:#ff6a6a;animation:co-blink .6s infinite alternate}
@keyframes co-blink{to{opacity:.45}}
.co-time{font:900 24px 'Barlow Condensed',Nunito,sans-serif;color:#ffdc77;min-width:3em;text-align:right}
.co-qbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:linear-gradient(#f7fbff,#dceaf6);border:3px solid #4a8cce;border-radius:12px;color:#091b35;padding:6px 12px}
.co-q{flex:1 1 220px;font:900 clamp(24px,2.6vw,40px)/1.1 'Barlow Condensed',Nunito,sans-serif;display:flex;gap:10px;align-items:center}
.co-picture svg{height:56px;width:auto}
.co-answers{display:flex;gap:8px;flex-wrap:wrap}
.co-answer{min-width:76px;min-height:48px;padding:6px 14px;border-radius:12px;border:3px solid #2e73c8;background:#fff;color:#091b35;font:900 24px 'Barlow Condensed',Nunito,sans-serif;cursor:pointer}
.co-answer kbd{background:#e8f1fb;color:#2e73c8;border-color:#9bc0e8;font-size:12px}
.co-answer:hover:not(:disabled){background:#fff3c4}.co-answer:disabled{opacity:.35;text-decoration:line-through}
.co-answer:focus-visible,.co-btn:focus-visible,.co-say button:focus-visible{outline:3px solid #ffcf33;outline-offset:2px}
.co-stage{position:relative;line-height:0}
#co-canvas{width:100%;height:auto;aspect-ratio:16/9;max-height:calc(100dvh - 220px);display:block;border:3px solid #4175ab;border-radius:16px;background:#7cc8ff;touch-action:none}
.co-toast{position:absolute;left:50%;top:12px;transform:translateX(-50%);margin:0;line-height:1.2;font:900 clamp(18px,2.2vw,28px) 'Barlow Condensed',Nunito,sans-serif;pointer-events:none;text-align:center;max-width:90%}
.co-toast:not(:empty){padding:6px 16px;border-radius:12px;border:3px solid;box-shadow:0 8px 24px #0007}
.co-toast--right{background:#0f3d2a;border-color:#5fe3a0;color:#d8ffe9}.co-toast--hint{background:#2a2a12;border-color:#ffcf33;color:#fff6cc}.co-toast--wrong{background:#3a1f2c;border-color:#ff9aa3;color:#ffe9eb}
.co-lockmsg{position:absolute;left:50%;bottom:64px;transform:translateX(-50%);background:#2a2a12;border:3px solid #ffcf33;color:#fff6cc;border-radius:12px;padding:6px 14px;font:900 20px/1.2 'Barlow Condensed',Nunito,sans-serif;text-align:center}
.co-brief,.co-done,.co-away{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,92%);text-align:center;line-height:1.35;z-index:2}
.co-away{top:auto;bottom:12px;transform:translateX(-50%);width:min(520px,92%)}
.co-hints{text-align:left;margin:8px auto 14px;max-width:460px}
.co-medal{font-size:48px;margin:0}
.co-say{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);display:flex;gap:6px;line-height:1}
.co-say button{padding:6px 10px;border-radius:10px;border:2px solid #fffa;background:#10243fcc;color:#fff;font:800 15px Nunito,sans-serif;cursor:pointer;min-height:36px}
.co-touch{position:absolute;inset:0;pointer-events:none}
.co-stick{position:absolute;left:18px;bottom:16px;width:140px;height:140px;border-radius:50%;background:#10243f66;border:3px solid #ffffffaa;pointer-events:auto;touch-action:none}
.co-knob{position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;background:#ffffffcc;border:3px solid #2e73c8}
.co-btns{position:absolute;right:18px;bottom:16px;display:grid;gap:10px;justify-items:end}
.co-btn{pointer-events:auto;touch-action:none;min-width:120px;min-height:76px;border-radius:38px;border:3px solid #fff;background:#2e73c8cc;color:#fff;font:900 22px Nunito,sans-serif}
.co-btn--free{min-height:48px;min-width:96px;border-radius:24px;background:#8a4a2ecc;font-size:18px}
.co-btn.is-down{background:#ffb81fee;color:#10243f}
.co--touch .co-say{left:50%;bottom:8px}.co--touch .co-keys{display:none}
.heli--touch .heli-tip{display:none}
.co-keys{margin:0;text-align:center}
@media(max-height:520px){
  .co-hud{font-size:14px}.co-bar{width:80px}
  #co-canvas{max-height:calc(100dvh - 120px)}
  .co-qbar{padding:2px 8px}.co-q{font-size:20px}.co-answer{min-height:38px;font-size:20px;min-width:56px}
  .co-stick{width:110px;height:110px}.co-btn{min-height:60px}
  .co-say button{padding:3px 6px;min-height:28px;font-size:13px}
}
@media(max-width:700px){.co-pilots{grid-template-columns:1fr}}
/* Oppgaveøkt (worksheet/): paper-white cards, 3 × 3 per page on a PC, 2 across on a tablet, 1 on a phone */
.ws-sheet{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media(max-width:1023px){.ws-sheet{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:639px){.ws-sheet{grid-template-columns:1fr}}
.ws-page{margin-bottom:16px}.ws-page[hidden]{display:none}
.ws-page__title{font-size:18px;margin:6px 0 10px}
.ws-task{background:#fdfdfb;color:#14233a;border:2px solid #33465f;border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;min-width:0}
.ws-task__head{display:flex;align-items:center;gap:8px}
.ws-task__no{display:inline-grid;place-items:center;min-width:28px;height:28px;border-radius:50%;background:#14233a;color:#fff;font-weight:900;font-size:14px}
.ws-task__topic{font-size:12px;font-weight:800;color:#4f6079;text-transform:uppercase;letter-spacing:.4px}
.ws-task__text{margin:0;font-size:20px;font-weight:800;line-height:1.3;overflow-wrap:anywhere}
.ws-task__picture{display:flex;justify-content:center}.ws-task__picture svg{max-width:100%;height:auto;max-height:170px}
.ws-answer{margin-top:auto;width:100%;font:800 22px 'Barlow Condensed',sans-serif;text-align:center;border:2px dashed #33465f;border-radius:10px;background:#fff;color:#14233a;padding:10px}
.ws-answer:focus{outline:3px solid #ffb703;outline-offset:2px;border-style:solid}
.ws-options{border:0;margin:auto 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.ws-option{display:flex;align-items:center;gap:6px;border:2px solid #9fb0c6;border-radius:10px;padding:8px 12px;cursor:pointer;font-weight:800;min-height:44px;background:#fff}
.ws-option:has(input:checked){border-color:#1f6fd1;background:#e4efff}
.ws-option input{width:20px;height:20px;accent-color:#1f6fd1}
.ws-nav{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 12px}.ws-nav[hidden]{display:none}
.ws-nav__page{min-width:44px;min-height:44px;border-radius:10px;border:2px solid #4d7bb4;background:#132e52;color:#fff;font-weight:900;cursor:pointer}
.ws-nav__page.active{background:#ffd54a;color:#14233a;border-color:#ffd54a}
.ws-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;position:sticky;bottom:8px;z-index:5}
.ws-bar__status{margin:0;font-weight:700}
.ws-topics{border:0;padding:0;margin:0 0 10px;display:flex;flex-wrap:wrap;gap:8px}.ws-topics legend{font-weight:900;margin-bottom:6px}
.ws-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid #4d7bb4;border-radius:999px;padding:6px 12px;min-height:40px;cursor:pointer}
.ws-chip:has(input:checked){background:#1f4f86;border-color:#3acefb}
.ws-check{display:flex;gap:8px;align-items:center;margin:8px 0}
.ws-pupils{margin:8px 0}.ws-pupils .ws-topics{margin-top:8px}
.ws-list{margin:0;padding-left:20px}.ws-list li{margin:4px 0}
.ws-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.ws-result-head{display:flex;gap:16px;align-items:center;text-align:left}
.ws-avatar{width:96px;height:96px;flex:none}.ws-avatar svg{width:100%;height:100%}
@media(max-width:639px){.ws-result-head{flex-direction:column;text-align:center}}
.ws-feedback{margin:14px 0}
.ws-mark{margin-top:auto;border-top:1px solid #d4dce8;padding-top:8px}.ws-mark p{margin:2px 0}
.ws-mark .muted{color:#5a6a7e}
.ws-mark__why{font-size:14px;color:#33465f}
.ws-task--correct{border-color:#2fa64a}.ws-task--wrong{border-color:#e2453c}.ws-task--blank{border-color:#9aa6b8}.ws-task--open{border-color:#2f7de1}
.ws-confirm{text-align:center}.ws-confirm .actions{justify-content:center}
.ws-print-tools p{margin:0 0 8px}.ws-level-switch{display:inline-flex;gap:6px;align-items:center}
.ws-print-page{background:#fff;color:#14233a;border-radius:12px;padding:16px;margin:14px 0}
.ws-print-head{display:flex;gap:10px;align-items:baseline;margin-bottom:10px;font-size:18px}
.ws-print-line{flex:1;border-bottom:1.5px solid #14233a;min-width:120px}
.ws-print-meta{margin-left:auto;font-size:12px;color:#4f6079}
.ws-print-box{margin-top:auto;height:56px;border:2px dashed #33465f;border-radius:10px}
.ws-print-hint{margin:auto 0 0;font-size:13px;color:#4f6079}
.ws-print-options{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:18px;font-weight:800}
@media print{
  @page{size:A4 portrait;margin:10mm}
  body.ws-print-body{background:#fff!important}
  .ws-print-page{page-break-after:always;break-after:page;margin:0;padding:0;border-radius:0;height:277mm;display:flex;flex-direction:column}
  .ws-print-page:last-child{page-break-after:auto;break-after:auto}
  .ws-sheet--print{flex:1;grid-template-columns:repeat(3,1fr)!important;grid-template-rows:repeat(3,1fr);gap:4mm}
  .ws-sheet--print .ws-task{break-inside:avoid;border-width:1.5px;padding:3mm 4mm}
  .ws-sheet--print .ws-task__no{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ws-sheet--print .ws-task__text{font-size:17pt}
  .ws-sheet--print .ws-task__picture svg{max-height:38mm}
}
/* Omvisning (static/js/tour.js): a light box with an arrow next to what to tap; the rest of the page dimmed */
.tour{position:fixed;inset:0;z-index:1000;pointer-events:none}
.tour--center::before{content:'';position:absolute;inset:0;background:#020a16b3}
.tour__spot{position:fixed;border-radius:14px;box-shadow:0 0 0 4px #ffd54a,0 0 0 9999px #020a16a6;transition:all .25s ease}
.tour__spot[hidden]{display:none}
.tour__box{position:fixed;pointer-events:auto;background:#fdfdfb;color:#14233a;border:3px solid #ffd54a;border-radius:16px;padding:16px 18px 14px;
  box-shadow:0 14px 40px #000a;width:max-content;transition:left .25s ease,top .25s ease}
.tour__box::before{content:'';position:absolute;left:calc(var(--arrow,50%) - 10px);width:16px;height:16px;background:#fdfdfb;border:3px solid #ffd54a;transform:rotate(45deg)}
.tour__box[data-side="below"]::before{top:-11px;border-right:0;border-bottom:0}
.tour__box[data-side="above"]::before{bottom:-11px;border-left:0;border-top:0}
.tour__box[data-side=""]::before{display:none}
.tour__count{margin:0;font-size:12px;font-weight:900;color:#4f6079;letter-spacing:.4px;text-transform:uppercase}
.tour__title{margin:4px 28px 6px 0;font-size:20px;color:#14233a}
.tour__text{margin:0 0 12px;font-size:16px;line-height:1.4}
.tour__actions{display:flex;gap:8px;justify-content:flex-end}
.tour__actions [hidden]{display:none}
.tour__close{position:absolute;top:6px;right:8px;width:40px;height:40px;border:0;background:none;font-size:26px;line-height:1;color:#33465f;cursor:pointer;border-radius:10px}
.tour__close:focus-visible,.tour__box .btn:focus-visible{outline:3px solid #1f6fd1;outline-offset:2px}
.tour-help{white-space:nowrap}
@media(prefers-reduced-motion:reduce){.tour__spot,.tour__box{transition:none}}
@media print{.tour{display:none}}
