/* Livsvaulten · Natt — appversjonen. Mørk glassramme, fliser og lysende knapper.
   Palett: #f8f9fa #cfcdd1 #a9a4a2 #7f7773 · #c1d1cf #748b91 #636467 #171f22 */
@import url('https://fonts.googleapis.com/css2?family=Michroma&family=Archivo:wdth,wght@75..125,300..700&family=JetBrains+Mono:wght@400;500&display=swap');

:root{
  --lv-bg1:#20272a; --lv-bg2:#161b1d; --lv-blob1:#2f3f42; --lv-blob2:#3a3634;
  --lv-bezel:rgba(44,52,56,.55); --lv-edge:rgba(255,255,255,.14);
  --lv-tile:#2b3336; --lv-tile2:#343d41; --lv-dark:#12171a; --lv-ink:#eef0f1; --lv-muted:#a6aeb1; --lv-line:rgba(255,255,255,.1);
  --lv-steel:#9db4b9; --lv-ice:#c1d1cf; --lv-cream:#e9e6df; --lv-shadow:rgba(0,0,0,.6);
  --lv-display:"Michroma","Eurostile","Archivo",sans-serif; --lv-body:"Archivo","Helvetica Neue",Arial,sans-serif; --lv-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
}

/* Siden */
html{ background:var(--lv-bg2); }
body{ margin:0; min-height:100vh; color-scheme:dark; background:radial-gradient(45% 40% at 12% 8%,var(--lv-blob1),transparent 70%),radial-gradient(40% 45% at 92% 90%,var(--lv-blob2),transparent 70%),linear-gradient(160deg,var(--lv-bg1),var(--lv-bg2)) fixed; font-family:var(--lv-body); color:var(--lv-ink); -webkit-font-smoothing:antialiased; }
#app{ max-width:1320px; margin:0 auto; padding:14px 14px calc(24px + env(safe-area-inset-bottom)); padding-top:calc(14px + env(safe-area-inset-top)); }
/* Grunnstil */
.lv-root{ color:var(--lv-ink); font-family:var(--lv-body); font-size:15px; line-height:1.5; font-variant-numeric:tabular-nums; display:flex; flex-direction:column; gap:18px; }
.lv-root select,.lv-root input,.lv-root textarea,.lv-root button{ -webkit-tap-highlight-color:transparent; }
.lv-root input,.lv-root select,.lv-root textarea{ font-size:16px; }
.lv-root *{ box-sizing:border-box; }
.lv-root h1,.lv-root h2,.lv-root h3{ margin:0; padding:0; border:0; line-height:1.08; color:var(--lv-ink); text-wrap:balance; font-weight:400; }
.lv-root p{ margin:0; }
.lv-root button{ height:auto; box-shadow:none; background:none; border:0; border-radius:0; padding:0; margin:0; font:inherit; color:inherit; cursor:pointer; }
.lv-root select,.lv-root input,.lv-root textarea{ font:inherit; color:var(--lv-ink); }
.lv-root option{ color:#1f2629; }
.lv-root :focus-visible{ outline:2px solid var(--lv-steel); outline-offset:3px; }
.lv-mono{ font-family:var(--lv-mono); font-size:.66rem; letter-spacing:.05em; color:var(--lv-muted); }
.lv-mono b{ color:var(--lv-ink); font-weight:500; }
.lv-muted{ color:var(--lv-muted); }
.lv-row{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.lv-spread{ display:flex; justify-content:space-between; align-items:center; gap:12px; }
.lv-stack{ display:flex; flex-direction:column; gap:12px; }
.lv-tom{ color:var(--lv-muted); font-size:.9rem; padding:8px 0; display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.lv-big{ font-family:var(--lv-display); font-size:2.6rem; line-height:1; letter-spacing:-.03em; }
.lv-h1{ font-family:var(--lv-display); font-size:clamp(1.6rem,3.4vw,2.5rem); letter-spacing:-.02em; }

/* Ramme og fliser */
.lv-bezel{ position:relative; border-radius:40px; padding:12px; background:var(--lv-bezel); border:1px solid var(--lv-edge);
  -webkit-backdrop-filter:blur(24px) saturate(1.2); backdrop-filter:blur(24px) saturate(1.2); box-shadow:0 40px 80px -40px var(--lv-shadow),inset 0 1px 0 rgba(255,255,255,.08); }
.lv-dev{ display:grid; grid-template-columns:310px minmax(0,1fr); gap:12px; }
.lv-dev.full{ grid-template-columns:minmax(0,1fr); }
.lv-side,.lv-main{ display:flex; flex-direction:column; gap:12px; min-width:0; }
.lv-tile{ position:relative; border-radius:28px; background:var(--lv-tile); padding:22px; min-width:0; overflow:hidden; }
.lv-tile.glassy{ background:linear-gradient(160deg,rgba(255,255,255,.08),rgba(255,255,255,.02)); border:1px solid var(--lv-edge); }
.lv-tile.dark{ background:var(--lv-dark); }
.lv-th{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; margin-bottom:14px; flex-wrap:wrap; }
.lv-th h2{ font-family:var(--lv-display); font-size:.8rem; letter-spacing:.02em; }
.lv-trio{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.lv-duo{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:12px; }

/* Navigasjon */
.lv-navrow{ display:flex; gap:8px; align-items:stretch; }
.lv-nav{ display:flex; gap:4px; flex:1; min-width:0; padding:5px; border-radius:999px; background:var(--lv-tile2); overflow-x:auto; }
.lv-root .lv-nav .lv-b{ background:transparent; color:var(--lv-muted); border-color:transparent; box-shadow:none; }
.lv-root .lv-nav .lv-b::after{ display:none; }
.lv-root .lv-nav .lv-b.on{ color:#f3f4f4; background:linear-gradient(180deg,#3e474c,#262d31); border-color:rgba(193,209,207,.35);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -8px 14px -10px rgba(193,209,207,.8),0 0 18px -6px rgba(193,209,207,.7); }
.lv-root .lv-nav .lv-b.on::after{ display:block; }

/* Knapper: lysende */
.lv-root .lv-b{ position:relative; display:inline-flex; align-items:center; justify-content:center; gap:9px; border-radius:999px; white-space:nowrap;
  padding:11px 20px; font-size:.88rem; font-weight:500; color:var(--lv-ink); border:1px solid rgba(255,255,255,.16);
  background:linear-gradient(180deg,#3a4347,#2b3336);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 -8px 14px -10px rgba(255,255,255,.55),0 12px 22px -14px var(--lv-shadow); transition:transform .15s; }
.lv-root .lv-b::after{ content:""; position:absolute; left:18%; right:18%; bottom:-3px; height:7px; border-radius:50%; background:radial-gradient(ellipse,rgba(255,255,255,.75),transparent 70%); filter:blur(2px); pointer-events:none; }
.lv-root .lv-b:hover{ transform:translateY(-1px); }
.lv-root .lv-b svg{ width:15px; height:15px; flex:none; }
.lv-root .lv-b.dark{ color:#f3f4f4; background:linear-gradient(180deg,#3e474c,#1e2427); border-color:rgba(193,209,207,.35);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -8px 14px -10px rgba(193,209,207,.85),0 0 18px -6px rgba(193,209,207,.7),0 12px 22px -12px rgba(0,0,0,.5); }
.lv-root .lv-b.dark::after{ background:radial-gradient(ellipse,rgba(193,209,207,1),transparent 70%); }
.lv-root .lv-b.light{ color:#1f2629; background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(226,231,233,.85)); border-color:rgba(255,255,255,.6);
  box-shadow:inset 0 -8px 14px -10px #fff,0 12px 22px -14px var(--lv-shadow); }
.lv-root .lv-b.ghost{ background:transparent; box-shadow:none; }
.lv-root .lv-b.ghost::after{ display:none; }
.lv-root .lv-b.sm{ padding:7px 14px; font-size:.8rem; }
.lv-root .lv-b.full{ width:100%; }
.lv-root .lv-b.ic{ width:44px; height:44px; padding:0; }
.lv-root .lv-b.on.star{ color:#f2d27a; }
.lv-link{ display:inline-flex; align-items:center; gap:6px; color:var(--lv-ink); text-decoration:underline; text-decoration-color:var(--lv-line); text-underline-offset:3px; }
.lv-link svg{ width:15px; height:15px; }

/* Felt og små elementer */
.lv-root .lv-field{ border:1px solid var(--lv-line); background:var(--lv-tile2); border-radius:999px; padding:10px 16px; min-width:0; height:auto; color:var(--lv-ink); box-shadow:none; }
.lv-root textarea.lv-field{ border-radius:18px; resize:vertical; min-height:70px; line-height:1.4; }
.lv-root select.lv-field{ appearance:none; -webkit-appearance:none; padding-right:34px; background-image:linear-gradient(45deg,transparent 50%,var(--lv-muted) 50%),linear-gradient(-45deg,transparent 50%,var(--lv-muted) 50%); background-position:calc(100% - 19px) 52%,calc(100% - 14px) 52%; background-size:5px 5px; background-repeat:no-repeat; }
.lv-chip{ display:inline-flex; align-items:center; padding:4px 11px; border-radius:999px; border:1px solid var(--lv-line); font-size:.74rem; color:var(--lv-muted); white-space:nowrap; }
.lv-seg{ display:inline-flex; gap:3px; padding:4px; border-radius:999px; background:var(--lv-tile2); max-width:100%; overflow-x:auto; }
.lv-root .lv-seg button{ padding:8px 15px; border-radius:999px; font-size:.84rem; color:var(--lv-muted); white-space:nowrap; }
.lv-root .lv-seg button.on{ color:#f3f4f4; background:linear-gradient(180deg,#3e474c,#1e2427); box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 0 14px -6px rgba(193,209,207,.9); }
.lv-root .lv-tog{ position:relative; width:48px; height:28px; border-radius:999px; flex:none; background:var(--lv-tile2); border:1px solid var(--lv-line); }
.lv-root .lv-tog::after{ content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,.25); transition:left .2s; }
.lv-root .lv-tog.on{ background:linear-gradient(180deg,#869ca1,#5d757b); box-shadow:0 0 16px -3px rgba(193,209,207,1); }
.lv-root .lv-tog.on::after{ left:23px; }

/* Hjem: venstre fliser */
.lv-datebig{ display:flex; align-items:flex-end; gap:6px; }
.lv-datebig b{ font-family:var(--lv-display); font-size:2.6rem; font-weight:400; line-height:.85; }
.lv-just{ text-align:justify; hyphens:auto; font-size:.95rem; line-height:1.5; margin-top:22px; }
.lv-just strong{ font-weight:600; }
.lv-sels{ display:flex; gap:14px; margin-top:16px; flex-wrap:wrap; }
.lv-sels label{ display:flex; align-items:center; gap:6px; }
.lv-root .lv-sels select{ border:0; border-bottom:1px solid var(--lv-line); border-radius:0; background:none; font-weight:600; padding:2px 14px 2px 0; appearance:none; -webkit-appearance:none; height:auto; box-shadow:none; }
.lv-sum{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:16px; padding-top:14px; border-top:1px solid var(--lv-line); }
.lv-sum div{ display:flex; flex-direction:column; }
.lv-sum b{ font-family:var(--lv-display); font-size:1.45rem; font-weight:400; line-height:1.1; }
.lv-curve{ width:100%; height:auto; display:block; margin:10px 0 6px; }
.lv-curve path{ fill:none; stroke:var(--lv-muted); stroke-width:1.2; opacity:.8; }
.lv-curve circle{ fill:var(--lv-tile); stroke:var(--lv-ink); stroke-width:1.2; }
.lv-curve circle.on{ fill:var(--lv-ice); stroke:var(--lv-ice); filter:drop-shadow(0 0 5px rgba(193,209,207,.9)); }
.lv-curve circle.tdy{ stroke:var(--lv-steel); stroke-width:2.6; }
.lv-curve text{ font-family:var(--lv-mono); font-size:8.5px; fill:var(--lv-muted); }
.lv-icn{ width:50px; height:50px; border-radius:50%; background:var(--lv-cream); color:#2f373b; display:grid; place-items:center; }
.lv-icn svg{ width:21px; height:21px; }
.lv-meter{ height:46px; border-radius:10px; margin-top:16px; background:linear-gradient(90deg,#e8e9e9,#9aa5a9 var(--p),#3d464b var(--p),#2f373b); }

.lv-dagliste{ display:flex; flex-direction:column; margin-top:12px; }
.lv-root .lv-dagliste button{ width:100%; padding:10px 0; gap:10px; border-bottom:1px solid var(--lv-line); text-align:left; font-size:.88rem; }
.lv-root .lv-dagliste button:hover{ color:var(--lv-ice); }

/* Hjem: bilde */
.lv-hero{ position:relative; flex:1; border-radius:28px; overflow:hidden; min-height:560px; border:1px solid rgba(255,255,255,.25); background:#8c969a; }
.lv-scene{ position:absolute; inset:0; width:100%; height:100%; display:block; object-fit:cover; }
.lv-hero::after{ content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg,rgba(30,36,39,.15),transparent 35%,transparent 55%,rgba(30,36,39,.6)); }
.lv-scene .call{ cursor:pointer; }
.lv-scene .call line{ stroke:#fff; stroke-width:1.2; opacity:.9; }
.lv-scene .call circle{ fill:#fff; }
.lv-scene .call circle.ring{ fill:none; stroke:#fff; stroke-width:1.3; }
.lv-scene .call text{ fill:#fff; font-family:"Archivo",sans-serif; font-size:15px; letter-spacing:.5px; }
.lv-scene .call text.s{ font-size:13px; opacity:.85; }
.lv-scene .call text.sl{ font-family:"JetBrains Mono",monospace; font-size:12px; opacity:.85; letter-spacing:1px; }
.lv-scene .flowline{ fill:none; stroke:#fff; stroke-width:1.1; stroke-dasharray:3 6; opacity:.55; }
.lv-vbar{ position:absolute; z-index:3; right:18px; top:18px; display:flex; flex-direction:column; gap:10px; padding:7px; border-radius:999px; background:rgba(255,255,255,.18); border:1px solid rgba(255,255,255,.4); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); }
.lv-htitle{ position:absolute; z-index:3; left:28px; bottom:28px; max-width:min(560px,62%); display:flex; flex-direction:column; gap:16px; color:#fff; }
.lv-root .lv-htitle h1{ font-family:var(--lv-display); font-size:clamp(1.5rem,3.2vw,2.5rem); line-height:1.12; color:#fff; text-shadow:0 2px 20px rgba(0,0,0,.25); }
.lv-kick{ font-family:var(--lv-mono); font-size:.7rem; opacity:.9; }
.lv-hnote{ position:absolute; z-index:3; right:26px; bottom:28px; width:min(300px,32%); color:#fff; display:flex; flex-direction:column; gap:10px; }
.lv-hnote .who{ display:flex; align-items:center; gap:8px; }
.lv-hnote .who span{ border:1px solid rgba(255,255,255,.7); border-radius:999px; padding:3px 10px; font-size:.72rem; }
.lv-hnote p{ font-size:.86rem; line-height:1.4; text-shadow:0 1px 10px rgba(0,0,0,.3); }
.lv-mini{ width:32px; height:32px; border-radius:50%; object-fit:cover; border:1px solid rgba(255,255,255,.6); flex:none; }

/* Vaner, mål, ukeplan */
.lv-root .lv-vrow{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 0; border-bottom:1px solid var(--lv-line); text-align:left; width:100%; }
.lv-goal{ display:flex; flex-direction:column; gap:7px; padding:8px 0; width:100%; text-align:left; }
.lv-track{ display:block; height:4px; border-radius:9px; background:var(--lv-line); position:relative; }
.lv-track i{ position:absolute; left:0; top:0; bottom:0; border-radius:9px; background:var(--lv-steel); box-shadow:0 0 10px -2px rgba(193,209,207,.8); }
.lv-scroll{ overflow-x:auto; }
.lv-wk{ display:grid; grid-template-columns:70px repeat(4,minmax(120px,1fr)); min-width:640px; }
.lv-wk > *{ padding:11px 12px; border-bottom:1px solid var(--lv-line); }
.lv-wk .hd{ font-family:var(--lv-mono); font-size:.64rem; color:var(--lv-muted); }
.lv-wk .dn{ font-family:var(--lv-display); font-size:.68rem; display:flex; flex-direction:column; justify-content:center; }
.lv-wk .dn small{ font-family:var(--lv-mono); font-size:.6rem; color:var(--lv-muted); }
.lv-root .lv-wk .m{ display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:2px; text-align:left; font-size:.9rem; padding:11px 12px; border-bottom:1px solid var(--lv-line); border-radius:0; }
.lv-root .lv-wk .m:hover{ color:var(--lv-steel); }
.lv-wk .m small{ display:block; white-space:nowrap; font-family:var(--lv-mono); font-size:.6rem; color:var(--lv-muted); }
.lv-wk .tom{ color:var(--lv-muted); }
.lv-wk .tdy{ background:rgba(157,180,185,.12); }
.lv-root .lv-wk select{ width:100%; border:1px solid var(--lv-line); background:var(--lv-tile2); border-radius:12px; padding:7px 9px; height:auto; box-shadow:none; }

/* Oppskrifter */
.lv-filters{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.lv-filters .lv-field{ flex:1 1 200px; }
.lv-cards{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:12px; }
.lv-root .lv-rc{ position:relative; display:block; border-radius:26px; overflow:hidden; border:1px solid rgba(255,255,255,.18); text-align:left; background:#8c969a; aspect-ratio:4/5; color:#fff; width:100%; }
.lv-rc .pic{ position:absolute; inset:0; }
.lv-rc .pic svg,.lv-rc .pic img{ width:100%; height:100%; object-fit:cover; display:block; }
.lv-rc::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent 45%,rgba(20,25,28,.75)); pointer-events:none; }
.lv-rc .top{ position:absolute; z-index:2; top:14px; left:14px; right:14px; display:flex; justify-content:space-between; align-items:center; gap:6px; }
.lv-rc .top > span{ font-family:var(--lv-mono); font-size:.62rem; background:rgba(255,255,255,.22); border:1px solid rgba(255,255,255,.45); border-radius:999px; padding:4px 10px; -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.lv-rc .top .star{ color:#f2d27a; }
.lv-rc .bot{ position:absolute; z-index:2; left:18px; right:14px; bottom:16px; display:flex; justify-content:space-between; align-items:flex-end; gap:10px; }
.lv-root .lv-rc .bot h3{ font-family:var(--lv-display); font-size:.9rem; line-height:1.25; color:#fff; }
.lv-rc .bot p{ font-family:var(--lv-mono); font-size:.62rem; opacity:.85; margin-top:6px; }
.lv-rc .arrow{ width:40px; height:40px; border-radius:50%; display:grid; place-items:center; background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(226,231,233,.85)); color:#1f2629; flex:none; box-shadow:inset 0 -6px 10px -8px #fff; }
.lv-rc .arrow svg{ width:15px; height:15px; }
.lv-detail{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); gap:12px; }
.lv-dwin{ position:relative; border-radius:28px; overflow:hidden; min-height:520px; border:1px solid rgba(255,255,255,.2); background:#8c969a; }
.lv-dwin > svg,.lv-dwin > img.lv-foto{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.lv-dwin .lv-vbar{ top:auto; bottom:18px; }
.lv-ing{ list-style:none !important; margin:6px 0 0 !important; padding:0 !important; }
.lv-ing li{ display:flex; justify-content:space-between; gap:12px; padding:9px 0; border-bottom:1px solid var(--lv-line); margin:0; }
.lv-ing li::before{ display:none; }
.lv-ing li > span:last-child{ font-family:var(--lv-mono); font-size:.76rem; color:var(--lv-muted); white-space:nowrap; }
.lv-stepper{ display:inline-flex; align-items:center; gap:6px; }
.lv-stepper span{ min-width:70px; text-align:center; font-family:var(--lv-mono); font-size:.76rem; }
.lv-steps{ margin:0 !important; padding:0 !important; list-style:none !important; counter-reset:s; display:flex; flex-direction:column; gap:12px; }
.lv-steps li{ counter-increment:s; display:grid; grid-template-columns:36px 1fr; gap:12px; align-items:start; margin:0; }
.lv-steps li::before{ content:counter(s,decimal-leading-zero); font-family:var(--lv-display); font-size:.7rem; color:var(--lv-muted); padding-top:3px; }

/* Oppskriftsredigerer */
.lv-edit{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.lv-edit label{ display:flex; flex-direction:column; gap:6px; min-width:0; }
.lv-edit .w2{ grid-column:span 2; } .lv-edit .w4{ grid-column:1/-1; }
.lv-irow{ display:grid; grid-template-columns:90px 90px minmax(0,1fr) 32px; gap:8px; align-items:center; margin-top:8px; }
.lv-srow{ display:grid; grid-template-columns:30px minmax(0,1fr) 32px; gap:8px; align-items:start; margin-top:8px; }
.lv-srow .n{ font-family:var(--lv-display); font-size:.7rem; color:var(--lv-muted); padding-top:12px; }
.lv-rm{ color:var(--lv-muted); font-size:1.2rem; padding:6px; }

/* Handleliste */
.lv-shop{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr); gap:12px; align-items:start; }
.lv-form{ display:flex; flex-direction:column; gap:12px; }
.lv-form label{ display:flex; flex-direction:column; gap:6px; }
.lv-form label[hidden]{ display:none; }
.lv-two{ display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:end; }
.lv-picked{ display:flex; gap:6px; flex-wrap:wrap; }
.lv-pick{ display:inline-flex; align-items:center; gap:6px; padding:4px 5px 4px 12px; border-radius:999px; background:var(--lv-tile2); font-size:.84rem; }
.lv-root .lv-pick input{ width:44px; border:0; border-radius:999px; padding:2px 5px; background:var(--lv-tile); text-align:center; font-family:var(--lv-mono); font-size:.74rem; height:auto; box-shadow:none; }
.lv-grp{ margin-top:16px; }
.lv-root .lv-grp h3{ font-family:var(--lv-mono); font-size:.64rem; font-weight:500; color:var(--lv-muted); letter-spacing:.06em; margin-bottom:2px; }
.lv-item{ display:grid; grid-template-columns:20px minmax(0,1fr) auto; gap:12px; align-items:center; min-height:40px; border-bottom:1px solid var(--lv-line); cursor:pointer; }
.lv-root .lv-item input{ appearance:none; -webkit-appearance:none; width:18px; height:18px; border:1.4px solid var(--lv-muted); border-radius:50%; margin:0; display:grid; place-items:center; background:transparent; }
.lv-root .lv-item input:checked{ background:var(--lv-ice); border-color:var(--lv-ice); box-shadow:0 0 10px -2px rgba(193,209,207,.9); }
.lv-root .lv-item input:checked::after{ content:""; width:7px; height:3px; border-left:1.8px solid #1f2629; border-bottom:1.8px solid #1f2629; transform:rotate(-45deg) translate(1px,-1px); }
.lv-item .src{ font-family:var(--lv-mono); font-size:.6rem; color:var(--lv-muted); margin-left:8px; }
.lv-item .amt{ font-family:var(--lv-mono); font-size:.76rem; white-space:nowrap; }
.lv-item.done .nm,.lv-item.done .amt{ text-decoration:line-through; color:var(--lv-muted); }

/* Trening */
.lv-sets{ width:100%; border-collapse:collapse; font-size:.9rem; margin:0; }
.lv-sets td{ padding:6px 4px; border:0 !important; border-top:1px solid var(--lv-line) !important; background:none !important; }
.lv-sets .ex td{ border-top:0 !important; padding-top:16px; font-weight:600; }
.lv-root .lv-sets input{ width:66px; border:1px solid var(--lv-line); border-radius:999px; padding:4px 10px; background:var(--lv-tile2); font-family:var(--lv-mono); font-size:.76rem; height:auto; box-shadow:none; }
.lv-root .lv-dot{ width:24px; height:24px; border-radius:50%; border:1.4px solid var(--lv-muted); }
.lv-root .lv-dot.on{ background:var(--lv-ice); border-color:var(--lv-ice); box-shadow:0 0 12px -2px rgba(193,209,207,1); }
.lv-hint{ font-family:var(--lv-mono); font-size:.62rem; color:var(--lv-steel); margin-left:6px; font-weight:400; }
.lv-chart{ width:100%; height:auto; }
.lv-chart text{ fill:var(--lv-muted); font-family:var(--lv-mono); font-size:10px; }
.lv-chart .gl{ stroke:var(--lv-line); }
.lv-chart .ar{ fill:var(--lv-steel); opacity:.15; }
.lv-chart .ln{ fill:none; stroke:var(--lv-steel); stroke-width:2.2; stroke-linejoin:round; }
.lv-chart .pt{ fill:var(--lv-tile); stroke:var(--lv-steel); stroke-width:1.6; }
.lv-chart .end{ fill:var(--lv-ice); filter:drop-shadow(0 0 6px rgba(193,209,207,.9)); }
.lv-chart .lbl{ fill:var(--lv-ink); font-size:11px; }
.lv-days{ display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
.lv-root .lv-day{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:12px 0; border-radius:20px; background:var(--lv-tile2); }
.lv-day .d{ font-family:var(--lv-mono); font-size:.6rem; color:var(--lv-muted); }
.lv-day .k{ width:34px; height:34px; border-radius:50%; display:grid; place-items:center; font-family:var(--lv-display); font-size:.78rem; border:1px dashed var(--lv-muted); color:var(--lv-muted); }
.lv-day.set .k{ border:0; background:var(--lv-dark); color:#f3f4f4; box-shadow:0 0 14px -3px rgba(193,209,207,1); }
.lv-exr{ display:grid; grid-template-columns:minmax(0,1.6fr) auto auto auto 30px; gap:10px; align-items:center; padding:10px 0; border-bottom:1px solid var(--lv-line); }
.lv-root .lv-exr .nmf{ border:0; background:none; font-size:1rem; font-weight:600; padding:4px 0; border-bottom:1px solid transparent; min-width:0; height:auto; box-shadow:none; }
.lv-root .lv-exr .nmf:focus{ border-bottom-color:var(--lv-line); }
.lv-mini2{ display:flex; flex-direction:column; align-items:center; gap:3px; }
.lv-ctl{ display:inline-flex; align-items:center; background:var(--lv-tile2); border-radius:999px; }
.lv-root .lv-ctl button{ width:28px; height:28px; color:var(--lv-muted); }
.lv-ctl span{ width:36px; text-align:center; font-family:var(--lv-mono); font-size:.76rem; }
.lv-root .lv-ctl input{ width:48px; border:0; background:transparent; text-align:center; font-family:var(--lv-mono); font-size:.76rem; padding:0; height:28px; box-shadow:none; color:var(--lv-ink); border-radius:0; }
.lv-root .lv-ctl input:focus{ outline:none; background:var(--lv-tile); }
.lv-addex{ display:flex; gap:8px; margin-top:14px; flex-wrap:wrap; }
.lv-addex .lv-field{ flex:1 1 200px; }

.lv-toast{ position:fixed; left:50%; bottom:40px; transform:translateX(-50%); z-index:9999; padding:11px 20px; border-radius:999px; color:#f3f4f4; font-size:.88rem;
  background:rgba(31,38,41,.94); border:1px solid rgba(193,209,207,.35); box-shadow:0 0 24px -6px rgba(193,209,207,.6); }

/* Smal skjerm og mobil */
@media (max-width:980px){
  .lv-dev{ grid-template-columns:minmax(0,1fr); }
  .lv-side{ display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); order:2; }
  .lv-trio,.lv-duo,.lv-detail,.lv-shop{ grid-template-columns:minmax(0,1fr); }
}
@media (max-width:640px){
  .lv-bezel{ border-radius:28px; padding:8px; }
  .lv-tile{ padding:22px 20px; border-radius:24px; }
  .lv-dev,.lv-side,.lv-main,.lv-stack,.lv-trio,.lv-duo{ gap:14px; }
  .lv-root{ gap:20px; }
  .lv-th{ margin-bottom:16px; }
  .lv-hero{ min-height:640px; }
  .lv-htitle{ bottom:24px; gap:14px; }
  .lv-wk{ min-width:560px; grid-template-columns:58px repeat(4,minmax(115px,1fr)); }
  .lv-wk .dn{ font-size:.6rem; }
  .lv-nav .lv-b span{ display:none; }
  .lv-hero{ min-height:600px; }
  .lv-htitle{ max-width:none; right:18px; left:18px; }
  .lv-hnote{ display:none; }
  .lv-exr{ grid-template-columns:minmax(0,1fr) auto auto 30px; } .lv-exr .kg{ display:none; }
  .lv-edit{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); } .lv-edit .w2{ grid-column:1/-1; }
  .lv-irow{ grid-template-columns:70px 70px minmax(0,1fr) 28px; }
}
@media (max-width:640px){ .lv-scene .call text, .lv-scene .call circle.ring, .lv-scene .flowline{ display:none; } }

/* Innlogging, feil og tilkobling */
.lv-login{ max-width:520px; margin:8vh auto 0; }
.lv-loginbox{ display:flex; flex-direction:column; align-items:flex-start; padding:34px 30px; }
.lv-loginbox .lv-h1{ margin-top:6px; }
.lv-feil{ margin-top:14px; padding:10px 14px; border-radius:14px; background:rgba(226,120,44,.12); border:1px solid rgba(226,120,44,.4); color:#f3c9a6; font-size:.9rem; }
.lv-offline{ position:fixed; left:50%; top:10px; transform:translateX(-50%); z-index:9998; padding:8px 16px; border-radius:999px; background:rgba(31,38,41,.94); border:1px solid rgba(226,120,44,.5); color:#f3c9a6; font-size:.78rem; max-width:90vw; text-align:center; }
.lv-root .lv-navrow > .lv-b.ic{ flex:none; }
.lv-root .lv-wk .m{ background:none; }
.lv-root .lv-link{ padding:0; }
.lv-root .lv-goal{ cursor:pointer; }
@media (max-width:640px){ #app{ padding-left:8px; padding-right:8px; } .lv-login{ margin-top:4vh; } .lv-loginbox{ padding:28px 22px; } }

/* Dra ned for å oppdatere: siden følger fingeren, ringen ligger i mellomrommet over */
html,body{ overscroll-behavior-y:none; }
.lv-ptr{ position:fixed; left:50%; top:calc(14px + env(safe-area-inset-top)); z-index:9997; width:48px; height:48px; margin-left:-24px; display:grid; place-items:center; opacity:0; pointer-events:none; will-change:transform,opacity; }
.lv-ptr.vis{ opacity:1; }
.lv-ptr svg{ width:40px; height:40px; overflow:visible; }
.lv-ptr circle,.lv-ptrbtn circle{ fill:var(--lv-muted); opacity:0; }
.lv-ptr.klar circle,.lv-ptr.spin circle,.lv-ptrbtn circle{ fill:var(--lv-ice); filter:drop-shadow(0 0 4px rgba(193,209,207,.8)); }
.lv-ptr.spin svg,.lv-ptrbtn.spin svg{ animation:lv-spin .9s steps(12) infinite; }
@keyframes lv-spin{ to{ transform:rotate(360deg); } }
/* under dra og henting: skru av tung uskarphet så animasjonen blir jevn */
body.lv-drar .lv-bezel, body.lv-drar .lv-rc .top > span, body.lv-drar .lv-vbar{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
body.lv-drar #app{ will-change:transform; }
.lv-ptrbtn{ display:none; position:fixed; right:22px; bottom:22px; z-index:9997; width:44px; height:44px; border-radius:50%; background:linear-gradient(180deg,#3a4347,#2b3336); border:1px solid rgba(255,255,255,.16); box-shadow:0 12px 22px -14px rgba(0,0,0,.6); cursor:pointer; padding:0; place-items:center; opacity:.6; transition:opacity .2s; }
.lv-ptrbtn:hover{ opacity:1; }
.lv-ptrbtn svg{ width:26px; height:26px; }
.lv-ptrbtn circle{ opacity:.9; }
.lv-ptrbtn circle:nth-child(n+10){ opacity:0; }
@media (hover:hover) and (min-width:700px){ .lv-ptrbtn{ display:grid; } }
.lv-offline{ top:calc(8px + env(safe-area-inset-top)); max-width:min(92vw,420px); line-height:1.3; }

/* Næringsinnhold */
.lv-makro{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
.lv-makro div{ display:flex; flex-direction:column; gap:2px; }
.lv-makro b{ font-family:var(--lv-display); font-size:1.2rem; font-weight:400; }
.lv-ntab{ width:100%; border-collapse:collapse; font-size:.86rem; min-width:520px; }
.lv-ntab th{ font-family:var(--lv-mono); font-size:.62rem; font-weight:500; color:var(--lv-muted); text-align:right; padding:6px 6px; border-bottom:1px solid var(--lv-line); letter-spacing:.05em; }
.lv-ntab th:first-child,.lv-ntab td:first-child{ text-align:left; }
.lv-ntab td{ padding:7px 6px; border-bottom:1px solid var(--lv-line); text-align:right; font-variant-numeric:tabular-nums; }
.lv-ntab tr.mangler td{ color:var(--lv-muted); text-align:left; }
.lv-root .lv-ntab.edit input{ width:72px; padding:6px 10px; font-family:var(--lv-mono); font-size:.76rem; text-align:right; }
@media (max-width:640px){ .lv-makro{ grid-template-columns:repeat(3,minmax(0,1fr)); } }

/* Bunnbar på mobil: «magic navigation» */
.lv-tab{ display:none; position:fixed; left:0; right:0; bottom:0; z-index:9000; padding:0; pointer-events:none; }
.lv-tab.skjul{ display:none !important; }
.lv-tabbg{ position:absolute; left:0; right:0; bottom:0; height:calc(62px + max(0px, env(safe-area-inset-bottom) - 20px)); background:var(--lv-bg2); }
.lv-tabbg::before{ content:""; position:absolute; left:0; right:0; top:-30px; height:30px; background:linear-gradient(180deg,transparent,var(--lv-bg2)); }
.lv-tab ul{ position:relative; margin:0; padding:0 26px max(0px, env(safe-area-inset-bottom) - 20px); list-style:none; display:flex; height:calc(54px + max(0px, env(safe-area-inset-bottom) - 20px)); pointer-events:auto; }
.lv-tabsvg{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; filter:drop-shadow(0 -6px 16px rgba(0,0,0,.35)); }
.lv-tabsvg .fyll{ fill:url(#lvtabg); }
.lv-tabsvg .kant{ fill:none; stroke:rgba(255,255,255,.14); stroke-width:1; }
.lv-tab li{ position:relative; flex:1; z-index:2; }
.lv-tab button{ position:relative; width:100%; height:54px; display:flex; align-items:center; justify-content:center; background:none; border:0; padding:0; color:var(--lv-muted); cursor:pointer; -webkit-tap-highlight-color:transparent; }
.lv-tab .ic{ display:block; width:22px; height:22px; transition:transform .48s cubic-bezier(.2,.8,.2,1), color .3s; }
.lv-tab .ic svg{ width:22px; height:22px; }
.lv-tab li.on .ic{ transform:translateY(-12px) scale(1.22); color:#f3f4f4; filter:drop-shadow(0 0 6px rgba(193,209,207,.9)); }
.lv-tabind{ position:absolute; left:0; top:0; width:50px; height:50px; border-radius:50%; z-index:1; will-change:transform;
  background:linear-gradient(180deg,#3e474c,#1e2427); border:1px solid rgba(193,209,207,.45);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25), inset 0 -8px 14px -10px rgba(193,209,207,.95), 0 0 22px -3px rgba(193,209,207,.8); }
@media (max-width:640px){
  .lv-tab{ display:block; }
  #app{ padding-bottom:calc(78px + env(safe-area-inset-bottom)); }
  .lv-navrow{ display:none; }
  #app{ padding-top:calc(6px + env(safe-area-inset-top)); }
}


/* ---------- Mål, måler og kropp ---------- */
.lv-goalnavn{ display:inline-flex; align-items:center; gap:8px; }
.lv-penn{ display:inline-flex; width:14px; height:14px; color:var(--lv-muted); opacity:.55; transition:opacity .2s, color .2s; }
.lv-penn svg{ width:14px; height:14px; }
.lv-root .lv-goal:hover .lv-penn{ opacity:1; color:var(--lv-ice); }
.lv-goal.nådd .lv-track i{ background:var(--lv-ice); box-shadow:0 0 14px 0 rgba(193,209,207,.95); }
.lv-goal.stor{ padding:12px 14px; border-radius:20px; transition:background .2s; }
.lv-root .lv-goal.stor:hover{ background:rgba(255,255,255,.035); }
.lv-målgrid{ display:grid; grid-template-columns:230px minmax(0,1fr); gap:18px; align-items:center; }
.lv-målliste{ display:flex; flex-direction:column; gap:2px; }
.lv-strek{ flex:none; overflow:visible; }
.lv-strek polyline{ fill:none; stroke:var(--lv-steel); stroke-width:1.6; stroke-linejoin:round; stroke-linecap:round; }
.lv-strek circle{ fill:var(--lv-ice); filter:drop-shadow(0 0 4px rgba(193,209,207,.9)); }

.lv-maler{ position:relative; width:100%; max-width:230px; aspect-ratio:1; margin:0 auto; }
.lv-maler svg{ width:100%; height:100%; }
.lv-maler line{ stroke:rgba(255,255,255,.12); stroke-width:4.2; stroke-linecap:round; transition:stroke .4s; }
.lv-maler line.på{ stroke:var(--lv-ice); filter:drop-shadow(0 0 3px rgba(193,209,207,.9)); animation:lv-tenn .5s both; animation-delay:calc(var(--i) * 22ms); }
@keyframes lv-tenn{ from{ stroke:rgba(255,255,255,.12); filter:none; } }
.lv-malertall{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; text-align:center; }
.lv-malertall .lv-big small{ font-size:.45em; margin-left:2px; color:var(--lv-muted); }
.lv-malertall .under{ position:absolute; bottom:8%; }

.lv-kstats{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; margin-bottom:14px; }
.lv-root .lv-kstat{ display:flex; flex-direction:column; gap:4px; align-items:flex-start; text-align:left; padding:14px 16px; border-radius:20px; background:var(--lv-tile2); border:1px solid transparent; transition:border-color .2s, box-shadow .2s; }
.lv-root .lv-kstat.on{ border-color:rgba(193,209,207,.35); box-shadow:inset 0 -10px 18px -14px rgba(193,209,207,.9); }
.lv-kverdi{ font-family:var(--lv-display); font-size:1.5rem; line-height:1.1; letter-spacing:-.02em; }
.lv-kverdi small{ font-size:.5em; margin-left:4px; color:var(--lv-muted); font-family:var(--lv-mono); letter-spacing:0; }
.lv-kropprad{ display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); gap:18px; align-items:start; }
.lv-kny{ background:var(--lv-dark); border-radius:22px; padding:16px; }
.lv-kdet{ margin-top:14px; }
.lv-kdet summary{ cursor:pointer; list-style:none; padding:6px 0; }
.lv-kdet summary::-webkit-details-marker{ display:none; }
.lv-kdet summary::before{ content:"+ "; }
.lv-kdet[open] summary::before{ content:"– "; }
.lv-root .lv-kslett{ display:inline-flex; width:22px; height:22px; align-items:center; justify-content:center; margin-left:8px; vertical-align:middle; color:var(--lv-muted); border-radius:50%; }
.lv-root .lv-kslett:hover{ color:var(--lv-ink); background:rgba(255,255,255,.08); }
.lv-kslett svg{ width:12px; height:12px; }
.lv-tre{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }

/* Ark (skjema som glir opp) */
.lv-ark{ position:fixed; inset:0; z-index:9500; display:flex; align-items:center; justify-content:center; padding:16px; background:rgba(8,11,12,0); transition:background .22s; }
.lv-ark.inn{ background:rgba(8,11,12,.6); }
.lv-ark.ut{ background:rgba(8,11,12,0); }
.lv-arkboks{ width:100%; max-width:520px; max-height:calc(100vh - 32px); overflow:auto; background:var(--lv-tile); border:1px solid var(--lv-edge); border-radius:32px; padding:22px; gap:14px;
  box-shadow:0 40px 80px -30px rgba(0,0,0,.8), inset 0 1px 0 rgba(255,255,255,.08); transform:translateY(24px) scale(.98); opacity:0; transition:transform .26s cubic-bezier(.2,.8,.2,1), opacity .2s; }
.lv-ark.inn .lv-arkboks{ transform:none; opacity:1; }
.lv-ark.ut .lv-arkboks{ transform:translateY(24px) scale(.98); opacity:0; }
.lv-arktittel{ font-family:var(--lv-display); font-size:1.1rem; }
.lv-steg{ display:grid; grid-template-columns:44px minmax(0,1fr) 44px; gap:8px; align-items:center; }
.lv-steg .lv-field{ text-align:center; }
.lv-root .lv-steg .lv-b.ic{ font-size:1.2rem; }
.lv-arkknapper{ margin-top:6px; flex-wrap:wrap; }
.lv-root .lv-b.lv-farlig{ color:#e3a9a3; }
.lv-arkgraf{ background:var(--lv-dark); border-radius:20px; padding:10px 12px 4px; }
.lv-autotekst{ line-height:1.5; }

@media (max-width:760px){
  .lv-målgrid,.lv-kropprad{ grid-template-columns:minmax(0,1fr); }
  .lv-maler{ max-width:200px; }
}
@media (max-width:640px){
  .lv-ark{ align-items:flex-end; padding:0; }
  .lv-arkboks{ max-width:none; border-radius:30px 30px 0 0; padding:22px 18px calc(22px + env(safe-area-inset-bottom)); max-height:88vh; transform:translateY(100%); opacity:1; }
  .lv-ark.ut .lv-arkboks{ transform:translateY(100%); opacity:1; }
  .lv-tre{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .lv-tre > label:last-child:nth-child(3){ grid-column:span 2; }
}
.lv-bekreft{ z-index:9600; }
.lv-bekreft .lv-arkboks{ max-width:400px; }
.lv-bekreft .lv-arktittel{ font-family:var(--lv-body); font-size:1.05rem; }
@media (max-width:640px){ .lv-bekreft .lv-arkboks{ padding-bottom:calc(22px + env(safe-area-inset-bottom)); } }

/* ---------- Kroppsgraf ---------- */
.lv-kgwrap{ background:var(--lv-dark); border-radius:24px; padding:18px 18px 14px; }
.lv-kghode{ flex-wrap:wrap; margin-bottom:12px; align-items:flex-end; }
.lv-kgnokkel{ display:flex; gap:26px; flex-wrap:wrap; }
.lv-kgnokkel > span{ display:flex; flex-direction:column; gap:4px; }
.lv-kgnokkel b{ font-family:var(--lv-display); font-weight:400; font-size:1.15rem; letter-spacing:-.01em; }
.lv-kgraf{ position:relative; width:100%; min-height:200px; touch-action:pan-y; }
.lv-kg{ display:block; overflow:visible; }
.lv-kg text{ font-family:var(--lv-mono); font-size:10px; fill:var(--lv-muted); }
.lv-kg .gl{ stroke:rgba(255,255,255,.06); }
.lv-kg .base{ stroke:rgba(255,255,255,.14); }
.lv-kg .seksjon{ letter-spacing:.05em; }
.lv-kg .area{ fill:url(#lvkga); }
.lv-kg .ln{ fill:none; stroke:var(--lv-ice); stroke-width:2; stroke-linecap:round; filter:drop-shadow(0 0 6px rgba(193,209,207,.45)); }
.lv-kg .pt{ fill:var(--lv-dark); stroke:var(--lv-steel); stroke-width:1.6; }
.lv-kg .end{ fill:var(--lv-ice); stroke:var(--lv-dark); stroke-width:2; filter:drop-shadow(0 0 8px rgba(193,209,207,.95)); }
.lv-kg .endlbl{ fill:var(--lv-ink); font-size:11px; }
.lv-kg .mål{ stroke:var(--lv-ice); stroke-dasharray:3 5; opacity:.55; }
.lv-kg .mållbl{ fill:var(--lv-ice); opacity:.8; }
.lv-kg .bar{ fill:#4b5a5e; transition:fill .15s; }
.lv-kg .bar.idag{ fill:var(--lv-steel); }
.lv-kg .snitt{ stroke:var(--lv-muted); stroke-dasharray:2 4; opacity:.7; }
.lv-kg .snittlbl{ fill:var(--lv-muted); }
.lv-kg .kl{ stroke:rgba(255,255,255,.35); stroke-width:1; }
.lv-kg .kp{ fill:var(--lv-ice); stroke:var(--lv-dark); stroke-width:2; }
.lv-kg .treff{ cursor:crosshair; }
.lv-kgtip{ position:absolute; pointer-events:none; display:flex; flex-direction:column; gap:2px; padding:9px 13px; border-radius:16px; white-space:nowrap;
  background:rgba(43,51,54,.94); border:1px solid var(--lv-edge); box-shadow:0 12px 30px -10px rgba(0,0,0,.7); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); }
.lv-kgtip b{ font-family:var(--lv-display); font-weight:400; font-size:1rem; }
.lv-kgnote{ margin-top:10px; line-height:1.6; }
.lv-root .lv-kstat.stille{ cursor:default; background:transparent; border:1px dashed var(--lv-line); }
.lv-arkiv .lv-link{ color:var(--lv-ice); text-align:left; }
.lv-nåddmerke{ font-size:.9rem; color:var(--lv-ice); background:rgba(193,209,207,.08); border:1px solid rgba(193,209,207,.2); border-radius:16px; padding:10px 14px; }
.lv-th h2 .lv-mono{ margin-left:8px; font-family:var(--lv-mono); color:var(--lv-ice); }

/* Feiring når et mål er nådd */
.lv-feiring .lv-arkboks{ position:relative; max-width:420px; text-align:center; overflow:hidden; }
.lv-gnist{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.lv-feir{ position:relative; display:flex; flex-direction:column; align-items:center; gap:8px; }
.lv-feir .lv-maler{ max-width:180px; margin-bottom:-6px; }
.lv-feir .lv-maler .lv-big{ font-size:2.2rem; }
.lv-feir .lv-arktittel{ font-size:1.3rem; }
.lv-feirtekst{ font-size:.92rem; max-width:32ch; margin:4px 0 8px; }
@media (max-width:640px){ .lv-feiring{ align-items:center; padding:16px; } .lv-feiring .lv-arkboks{ border-radius:30px; transform:translateY(24px) scale(.98); opacity:0; } .lv-feiring.inn .lv-arkboks{ transform:none; opacity:1; } }
@media (prefers-reduced-motion: reduce){ .lv-maler line.på{ animation:none; } .lv-arkboks{ transition:none; } }
@media (max-width:640px){ .lv-kgwrap{ padding:14px 10px 12px; margin:0 -8px; } .lv-kghode .lv-seg{ width:100%; } .lv-kghode .lv-seg button{ flex:1; } }

/* Trofehylla: oppnådde mål som små medaljer */
.lv-hylle{ position:relative; margin-top:18px; padding:16px 18px 0; border-radius:24px; border:1px solid rgba(193,209,207,.18);
  background:radial-gradient(120% 90% at 50% 120%,rgba(193,209,207,.12),transparent 60%),linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,0)); box-shadow:inset 0 1px 0 rgba(255,255,255,.07); }
.lv-hylle > .lv-spread .lv-mono:first-child{ color:var(--lv-ice); }
.lv-hyllerad{ display:flex; gap:6px; overflow-x:auto; padding:14px 2px 0; scroll-snap-type:x mandatory; scrollbar-width:none; }
.lv-hyllerad::-webkit-scrollbar{ display:none; }
/* selve hylla: en lysende kant under medaljene */
.lv-hylle::after{ content:""; display:block; height:10px; margin:0 -18px; border-radius:0 0 24px 24px; border-top:1px solid rgba(193,209,207,.35);
  background:linear-gradient(180deg,rgba(193,209,207,.14),transparent); box-shadow:0 -6px 18px -8px rgba(193,209,207,.6); }
.lv-root .lv-medalje{ flex:none; width:104px; display:flex; flex-direction:column; align-items:center; gap:4px; padding:4px 4px 12px; text-align:center; scroll-snap-align:start; border-radius:18px; transition:transform .25s cubic-bezier(.2,.8,.2,1); }
.lv-root .lv-medalje:hover{ transform:translateY(-3px); }
.lv-medring{ position:relative; width:64px; height:64px; border-radius:50%; display:grid; place-items:center;
  background:radial-gradient(circle at 35% 30%,#46525680,#1a2023 70%); box-shadow:0 8px 18px -8px rgba(0,0,0,.8), inset 0 1px 0 rgba(255,255,255,.18), 0 0 18px -6px rgba(193,209,207,.7); }
.lv-medring svg{ position:absolute; inset:0; width:100%; height:100%; }
.lv-medring line{ stroke:var(--lv-ice); stroke-width:2.2; stroke-linecap:round; filter:drop-shadow(0 0 2px rgba(193,209,207,.9)); animation:lv-tenn .5s both; animation-delay:calc(var(--i) * 25ms); }
.lv-medtall{ position:relative; font-family:var(--lv-display); font-size:.82rem; line-height:1; display:flex; flex-direction:column; align-items:center; gap:2px; }
.lv-medtall small{ font-family:var(--lv-mono); font-size:.55rem; color:var(--lv-muted); }
.lv-mednavn{ font-size:.78rem; line-height:1.25; margin-top:4px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.lv-medalje.tom{ width:auto; flex-direction:row; gap:12px; padding-bottom:14px; }
.lv-medalje.tom .lv-medring{ width:44px; height:44px; background:none; box-shadow:none; border:1.5px dashed rgba(193,209,207,.3); }
.lv-medalje.tom .lv-mednavn{ color:var(--lv-muted); margin:0; }
.lv-kg .endlbl,.lv-kg .snittlbl,.lv-kg .mållbl,.lv-kg .seksjon{ paint-order:stroke; stroke:var(--lv-dark); stroke-width:5px; stroke-linejoin:round; }
.lv-hylle{ padding-top:14px; }

/* Pokalhylla: futuristiske pokaler på en lysende glasshylle */
.lv-hylle{ padding-bottom:0; overflow:hidden; }
.lv-hylle::after{ display:none; }
.lv-hyllerad{ gap:10px; padding:10px 4px 0; align-items:flex-end; position:relative; z-index:1; }
.lv-glasshylle{ height:16px; margin:-12px -18px 0; position:relative;
  background:linear-gradient(180deg,rgba(193,209,207,.22),rgba(193,209,207,.04) 60%,transparent); border-top:1px solid rgba(220,232,230,.55);
  box-shadow:0 -10px 24px -10px rgba(193,209,207,.7); }
.lv-glasshylle::after{ content:""; position:absolute; left:10%; right:10%; top:-1px; height:1px; background:linear-gradient(90deg,transparent,#fff,transparent); opacity:.7; }
.lv-root .lv-pokal{ flex:none; width:96px; display:flex; flex-direction:column; align-items:center; gap:2px; text-align:center; padding:0 2px 18px; scroll-snap-align:start; transition:transform .3s cubic-bezier(.2,.8,.2,1); }
.lv-root .lv-pokal:hover{ transform:translateY(-4px); }
.lv-pokalsvg{ width:76px; height:auto; overflow:visible; filter:drop-shadow(0 6px 10px rgba(0,0,0,.5)); }
.lv-pokalsvg.stor{ width:130px; }
.lv-pokalsvg .sveve{ animation:lv-sveve 3.2s ease-in-out infinite; transform-origin:50% 50%; filter:drop-shadow(0 0 6px rgba(193,209,207,.55)); }
.lv-pokal:nth-child(2n) .sveve{ animation-delay:-1.1s; } .lv-pokal:nth-child(3n) .sveve{ animation-delay:-2s; }
.lv-pokalsvg .strale{ animation:lv-puls 3.2s ease-in-out infinite; }
.lv-pokalsvg .ring{ filter:drop-shadow(0 0 4px rgba(193,209,207,.95)); }
.lv-pokalsvg .gravert{ font-family:var(--lv-mono); font-size:7.5px; letter-spacing:.06em; fill:var(--lv-ice); }
@keyframes lv-sveve{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-4px); } }
@keyframes lv-puls{ 0%,100%{ opacity:.7; } 50%{ opacity:1; } }
.lv-pokalnavn{ font-size:.78rem; line-height:1.25; margin-top:2px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.lv-pokal.tom{ width:auto; flex-direction:row; gap:12px; padding-bottom:16px; }
.lv-pokaltom{ width:40px; height:52px; border:1.5px dashed rgba(193,209,207,.3); border-radius:12px 12px 4px 4px; }
.lv-pokal.tom .lv-pokalnavn{ color:var(--lv-muted); margin:0; }
.lv-feirpokal{ margin:4px 0 2px; }
@media (prefers-reduced-motion: reduce){ .lv-pokalsvg .sveve,.lv-pokalsvg .strale{ animation:none; } }

/* Kroppsgraf, forenklet */
.lv-kgnokkel b{ font-size:1.7rem; }
.lv-kgnokkel b.ned{ color:var(--lv-ice); text-shadow:0 0 18px rgba(193,209,207,.45); }
.lv-pokalsvg{ width:88px; }
.lv-root .lv-pokal{ width:104px; }
.lv-pokalsvg .gravert{ font-size:8.5px; }
@media (max-width:640px){
  .lv-kstats{ grid-template-columns:repeat(auto-fit,minmax(0,1fr)); gap:8px; }
  .lv-root .lv-kstat{ padding:12px; border-radius:18px; }
  .lv-kverdi{ font-size:1.2rem; }
  .lv-siden{ display:none; }
}

/* ---------- Bunnbar: mikroanimasjoner ---------- */
:is(.lv-tab button, .lv-nav .lv-b):active .ic{ scale:.86; }
:is(.lv-tab, .lv-nav) .ic{ transition:transform .48s cubic-bezier(.2,.8,.2,1), color .3s, scale .15s; }
:is(.lv-tab, .lv-nav) .ic svg *{ transform-box:fill-box; transform-origin:center; }
.lv-tabind{ transform-origin:25px 25px; }
.lv-tabind::after{ content:""; position:absolute; inset:-1px; border-radius:50%; border:1px solid rgba(193,209,207,.8); opacity:0; }
.lv-tabind.land::after{ animation:lv-bolge .7s ease-out; }
@keyframes lv-bolge{ from{ opacity:.9; transform:scale(1); } to{ opacity:0; transform:scale(1.7); } }
/* hvert ikon har sin egen bevegelse */
@keyframes lv-vipp{ 30%{ transform:rotate(-8deg); } 65%{ transform:rotate(5deg); } 100%{ transform:none; } }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="vekt"] .ic.spill svg{ animation:lv-loft .8s ease; }
@keyframes lv-loft{ 0%,100%{ transform:none; } 25%{ transform:translateY(-5px) rotate(-10deg); } 50%{ transform:translateY(0) rotate(0); } 72%{ transform:translateY(-4px) rotate(8deg); } }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="tann"] .ic.spill svg{ animation:lv-snurr .8s cubic-bezier(.3,1.3,.5,1); }
@keyframes lv-snurr{ from{ transform:rotate(0); } to{ transform:rotate(180deg); } }

/* Statuslinja på iPhone: en myk overgang så innhold ikke kolliderer med klokka */
/* Bare i appen fra hjemskjermen (der innholdet går under klokka). I Safari ga den en mørk strek, så der vises den ikke. Myk overgang uten kant. */
.lv-topp{ display:none; }
@media (max-width:640px) and (display-mode: standalone){ .lv-topp{ display:block; position:fixed; left:0; right:0; top:0; height:calc(env(safe-area-inset-top) + 22px); z-index:8999; pointer-events:none;
  background:linear-gradient(180deg, rgba(22,27,29,.92) 0%, rgba(22,27,29,.75) 45%, rgba(22,27,29,.3) 75%, rgba(22,27,29,0) 100%); } }
.lv-hylletittel{ font-family:var(--lv-display); font-size:.8rem; letter-spacing:.02em; color:var(--lv-ice); text-shadow:0 0 14px rgba(193,209,207,.45); }

/* Handlevogna kjører: vogna rykker fram og fartsstriper drar seg ut bak den */
:is(.lv-tab, .lv-nav) .ic svg{ overflow:visible; }
:is(.lv-tab, .lv-nav) .fart path{ opacity:0; stroke-dasharray:8; stroke-dashoffset:8; transform-box:view-box; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="kurv"] .ic.spill svg{ animation:lv-kjor .9s cubic-bezier(.3,1.2,.4,1); }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="kurv"] .ic.spill .fart path{ animation:lv-strek .75s ease-out both; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="kurv"] .ic.spill .fart path:nth-child(2){ animation-delay:.07s; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="kurv"] .ic.spill .fart path:nth-child(3){ animation-delay:.14s; }
@keyframes lv-kjor{ 0%{ transform:none; } 20%{ transform:translateX(-2px) skewX(8deg); } 45%{ transform:translateX(4px) skewX(-6deg); } 70%{ transform:translateX(1px) skewX(2deg); } 100%{ transform:none; } }
@keyframes lv-strek{ 0%{ opacity:0; stroke-dashoffset:8; transform:translateX(2px); } 30%{ opacity:1; stroke-dashoffset:0; } 100%{ opacity:0; stroke-dashoffset:-8; transform:translateX(-5px); } }

/* Damp fra bollen: to striper som slanger seg oppover */
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="bolle"] .ic.spill svg path:first-child{ animation:lv-vipp .5s ease; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="bolle"] .ic.spill .damp{ stroke-dasharray:6.5 16; animation:lv-slange .9s ease-in-out both; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="bolle"] .ic.spill .damp:nth-of-type(3){ animation-delay:.18s; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="bolle"].on .ic:not(.spill) .damp{ stroke-dasharray:6.5 16; animation:lv-slange 2.4s ease-in-out infinite; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="bolle"].on .ic:not(.spill) .damp:nth-of-type(3){ animation-delay:.8s; }
@keyframes lv-slange{ 0%{ stroke-dashoffset:6.5; } 100%{ stroke-dashoffset:-10; } }
@keyframes lv-vipp{ 30%{ transform:rotate(-8deg); } 65%{ transform:rotate(5deg); } 100%{ transform:none; } }
/* Kalenderen blar tre sider bakover over toppen */
:is(.lv-tab, .lv-nav) .blad{ opacity:0; transform-box:fill-box; transform-origin:50% 0%; }
:is(.lv-tab, .lv-nav) .blad rect{ fill:#2c3438; stroke:currentColor; stroke-width:1.6; }
:is(.lv-tab, .lv-nav) .blad path{ stroke-width:1.4; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="kal"] .ic.spill .blad{ animation:lv-bla .5s cubic-bezier(.5,0,.6,1) both; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="kal"] .ic.spill .blad:nth-of-type(2){ animation-delay:.14s; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="kal"] .ic.spill .blad:nth-of-type(3){ animation-delay:.28s; }
@keyframes lv-bla{ 0%{ opacity:1; transform:scaleY(1); } 50%{ opacity:1; transform:scaleY(.04); } 51%{ transform:scaleY(-.04); } 82%{ opacity:.95; transform:scaleY(-.6); } 100%{ opacity:0; transform:scaleY(-.72); } }
@media (prefers-reduced-motion: reduce){ :is(.lv-tab, .lv-nav) .ic.spill svg, :is(.lv-tab, .lv-nav) .ic.spill svg path, :is(.lv-tab, .lv-nav) .ic .damp, :is(.lv-tab, .lv-nav) .blad, .lv-tabind.land::after{ animation:none !important; } :is(.lv-tab, .lv-nav) .fart, :is(.lv-tab, .lv-nav) .blad{ display:none; } }

/* Huset hopper: klemmes sammen, spretter opp og lander */
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="hjem"] .ic.spill svg{ animation:lv-hopp .6s cubic-bezier(.3,1.6,.5,1); transform-origin:50% 100%; }
@keyframes lv-hopp{ 0%{ transform:scale(1,1); } 25%{ transform:scale(1.15,.8); } 55%{ transform:translateY(-4px) scale(.92,1.1); } 100%{ transform:none; } }

/* ---------- Bowl Buddy i feiringen ---------- */
.lv-feirscene{ display:flex; align-items:flex-end; justify-content:center; gap:1rem; width:100%; perspective:600px; }
.lv-feirscene .lv-feirpokal{ flex:0 0 34%; display:flex; justify-content:center; margin:0; }
.lv-feirscene .lv-feirpokal .lv-pokalsvg.stor{ width:100%; max-width:130px; }
.lv-feirscene .lv-feirmaler{ flex:0 0 38%; } .lv-feirscene .lv-feirmaler .lv-maler{ max-width:150px; }
.lv-root .lv-buddy{ flex:0 1 56%; max-width:240px; padding:0; cursor:pointer; --vx:0; --vy:0; -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
.lv-buddyhopp{ display:block; transform-origin:50% 100%; }
.lv-buddyhopp.hopp{ animation:lv-buddy-hopp .62s cubic-bezier(.3,.9,.4,1); }
.lv-buddy img{ display:block; width:100%; height:auto; pointer-events:none; user-select:none; -webkit-user-drag:none;
  transform:rotateY(calc(var(--vx) * 16deg)) rotateX(calc(var(--vy) * -10deg)); transition:transform .25s cubic-bezier(.2,.8,.2,1); }
@keyframes lv-buddy-hopp{ 0%{ transform:none; } 18%{ transform:scale(1.08,.9); } 50%{ transform:translateY(-26px) scale(.96,1.05); } 80%{ transform:translateY(0) scale(1.06,.94); } 100%{ transform:none; } }
.lv-feiring .lv-gnist{ z-index:4; }
.lv-feiring .lv-feir{ z-index:1; }
@media (prefers-reduced-motion: reduce){ .lv-buddyhopp.hopp{ animation:none !important; } }

/* Bowl Buddy sover (handlelista ferdig eller tom) */
.lv-sover{ display:flex; align-items:center; gap:18px; padding:6px 0 14px; }
.lv-sover img{ width:min(220px,46%); height:auto; flex:none; }
.lv-sovertittel{ font-family:var(--lv-display); font-size:1.05rem; margin-bottom:6px !important; }
.lv-sover .lv-mono{ line-height:1.6; }
@media (max-width:640px){ .lv-sover{ flex-direction:column; text-align:center; gap:8px; } .lv-sover img{ width:200px; } }

/* ---------- Skann strekkode / søk i Matvaretabellen (js/skann.js) ---------- */
.lv-skark .lv-arkboks{ gap:14px; }
.lv-skfaner{ display:flex; width:100%; }
.lv-root .lv-skfaner button{ flex:1; }
.lv-skvindu{ position:relative; aspect-ratio:4/3; border-radius:24px; overflow:hidden; background:radial-gradient(120% 90% at 30% 20%,#3a4448,#12171a); border:1px solid var(--lv-edge); }
.lv-skvindu video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.lv-skvindu.av video, .lv-skvindu.av .lv-skramme{ display:none; }
.lv-skramme{ position:absolute; left:50%; top:50%; width:80%; height:45%; transform:translate(-50%,-50%); }
.lv-skramme i{ position:absolute; width:26px; height:26px; border:3px solid var(--lv-ice); filter:drop-shadow(0 0 6px rgba(193,209,207,.8)); }
.lv-skramme i:nth-child(1){ left:0; top:0; border-right:0; border-bottom:0; border-radius:10px 0 0 0; }
.lv-skramme i:nth-child(2){ right:0; top:0; border-left:0; border-bottom:0; border-radius:0 10px 0 0; }
.lv-skramme i:nth-child(3){ left:0; bottom:0; border-right:0; border-top:0; border-radius:0 0 0 10px; }
.lv-skramme i:nth-child(4){ right:0; bottom:0; border-left:0; border-top:0; border-radius:0 0 10px 0; }
.lv-sklinje{ position:absolute; left:6%; right:6%; height:2px; top:10%; background:var(--lv-ice); box-shadow:0 0 14px 3px rgba(193,209,207,.7); border-radius:2px; animation:lv-skann 1.4s ease-in-out infinite alternate; }
@keyframes lv-skann{ to{ top:88%; } }
.lv-skvindu.funnet .lv-skramme i{ border-color:#9fe0b0; }
.lv-skvindu.funnet .lv-sklinje{ display:none; }
.lv-skhint{ position:absolute; left:12px; right:12px; bottom:12px; text-align:center; font:500 .72rem var(--lv-mono); color:#dfe6e6; letter-spacing:.04em; text-shadow:0 1px 4px #000; }
.lv-skvindu.av .lv-skhint{ top:50%; bottom:auto; transform:translateY(-50%); }
.lv-skkode{ flex-wrap:nowrap; }
.lv-root .lv-skkode .lv-field{ flex:1; min-width:0; }
.lv-skkort{ background:var(--lv-dark); border-radius:22px; padding:16px; display:flex; flex-direction:column; gap:12px; align-items:flex-start; }
.lv-skkort > *{ max-width:100%; }
.lv-skkort .lv-two, .lv-skkort .lv-skmakro{ width:100%; }
.lv-skmakro{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:6px; }
.lv-skmakro label, .lv-skkort .lv-two label{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.lv-skmakro .lv-mono{ font-size:.62rem; }
.lv-root .lv-skmakro .lv-field{ width:100%; text-align:center; padding:8px 2px; font-size:.85rem; }
.lv-skmerk{ font-size:.88rem; color:var(--lv-muted); margin:0; }
.lv-sklast{ width:100%; height:6px; border-radius:6px; background:var(--lv-tile2); overflow:hidden; }
.lv-sklast i{ display:block; height:100%; width:40%; background:var(--lv-ice); border-radius:6px; animation:lv-sklast 1s ease-in-out infinite alternate; }
@keyframes lv-sklast{ from{ transform:translateX(-10%); } to{ transform:translateX(160%); } }
.lv-root .lv-skq{ width:100%; }
.lv-sktreff{ display:flex; flex-direction:column; gap:8px; max-height:46vh; overflow:auto; }
.lv-root .lv-sktreff button{ text-align:left; padding:12px 14px; border-radius:18px; background:var(--lv-tile2); border:1px solid var(--lv-line); color:var(--lv-ink); }
.lv-sktreff small{ display:block; color:var(--lv-muted); font:500 .7rem var(--lv-mono); margin-top:3px; }
.lv-skkort .lv-two{ grid-template-columns:minmax(0,1fr) 110px; }
@media (prefers-reduced-motion: reduce){ .lv-sklinje, .lv-sklast i{ animation:none; } }

/* ---------- Matlager (fane i Handleliste) ---------- */
.lv-hlfaner{ display:flex; width:max-content; max-width:100%; margin:0 0 14px; }
.lv-hlfaner .lv-mono{ margin-left:6px; opacity:.7; }
.lv-item .src.hj{ display:block; margin:2px 0 0; color:#9fe0b0; }
.lv-hjemme{ margin-top:16px; border-top:1px solid var(--lv-line); padding-top:10px; }
.lv-hjemme summary{ display:flex; justify-content:space-between; align-items:center; cursor:pointer; list-style:none; font-family:var(--lv-mono); font-size:.72rem; letter-spacing:.06em; text-transform:lowercase; color:var(--lv-muted); padding:6px 0; }
.lv-hjemme summary::-webkit-details-marker{ display:none; }
.lv-item.hjemme{ grid-template-columns:minmax(0,1fr) auto; cursor:default; opacity:.65; }
.lv-utlop{ display:inline-block; margin-left:8px; padding:2px 8px; border-radius:999px; font:500 .6rem var(--lv-mono); letter-spacing:.04em; background:var(--lv-tile2); color:var(--lv-muted); vertical-align:middle; white-space:nowrap; }
.lv-utlop.gul{ background:rgba(232,196,106,.16); color:#e8c46a; }
.lv-utlop.rod{ background:rgba(226,120,100,.18); color:#f0a596; }
.lv-lrad{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.3fr); gap:8px; }
.lv-lrad label{ display:flex; flex-direction:column; gap:6px; min-width:0; }
.lv-root .lv-lrad .lv-field{ width:100%; padding:10px 12px; }
.lv-lvare{ display:grid; grid-template-columns:minmax(0,1fr) auto 28px; gap:10px; align-items:center; min-height:46px; border-bottom:1px solid var(--lv-line); }
.lv-lvare .nm{ min-width:0; }
.lv-lmengde{ display:inline-flex; align-items:center; gap:6px; }
.lv-root .lv-lmengde .lv-field{ width:74px; text-align:right; padding:6px 10px; font-size:.85rem; }
.lv-lmengde .lv-mono{ min-width:26px; }
.lv-pakke{ display:flex; align-items:center; gap:10px; min-height:44px; border-bottom:1px solid var(--lv-line); }
.lv-pakkenavn{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:4px; padding:6px 0; }
.lv-pakke .lv-link{ text-align:left; }
.lv-pakke > .lv-mono{ white-space:nowrap; }
.lv-pakke .lv-utlop{ margin-left:0; }
.lv-pakke .lv-stepper b{ min-width:22px; text-align:center; font-family:var(--lv-mono); }
.lv-root .lv-pakke .lv-b.ic{ width:34px; height:34px; font-size:.78rem; }
.lv-hjpakker .lv-pakke:last-of-type{ border-bottom:0; }
.lv-snart{ margin-top:8px; color:#e8c46a; }

/* ---------- Kokemodus ---------- */
body.lv-laast{ overflow:hidden; }
.lv-kok{ position:fixed; inset:0; z-index:9400; display:flex; flex-direction:column; gap:14px; padding:calc(14px + env(safe-area-inset-top)) 18px calc(16px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,var(--lv-bg1),var(--lv-bg2)); color:var(--lv-ink); opacity:0; transform:translateY(16px); transition:opacity .22s, transform .22s; }
.lv-kok.inn{ opacity:1; transform:none; }
.lv-koktopp{ display:flex; align-items:center; gap:12px; }
.lv-koknavn{ flex:1; min-width:0; display:flex; flex-direction:column; }
.lv-koknavn b{ font-family:var(--lv-display); font-size:.95rem; font-weight:400; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.lv-kokprog{ height:4px; border-radius:4px; background:var(--lv-tile2); overflow:hidden; }
.lv-kokprog i{ display:block; height:100%; background:var(--lv-ice); box-shadow:0 0 10px rgba(193,209,207,.8); transition:width .3s; }
.lv-kokmidt{ flex:1; overflow:auto; display:flex; flex-direction:column; gap:14px; padding:10px 2px; }
.lv-koktittel{ font-family:var(--lv-display); font-weight:400; font-size:1.5rem; }
.lv-koksteg{ font-size:clamp(1.45rem, 5.2vw, 2.1rem); line-height:1.38; text-wrap:pretty; }
.lv-root .lv-koktid{ display:inline-flex; align-items:center; gap:6px; padding:2px 12px 2px 9px; margin:0 2px; border-radius:999px; background:rgba(193,209,207,.16); border:1px solid rgba(193,209,207,.5); color:var(--lv-ink); font:inherit; font-size:.85em; line-height:1.35; box-shadow:0 0 14px -6px rgba(193,209,207,.9); }
.lv-koktid svg{ width:.85em; height:.85em; }
.lv-kokingr{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.lv-root .lv-kokingr button{ width:100%; display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:12px; align-items:center; min-height:54px; border-bottom:1px solid var(--lv-line); font-size:1.15rem; text-align:left; }
.lv-kokingr b{ font-family:var(--lv-mono); font-weight:500; font-size:.95rem; }
.lv-kokingr button.on span:not(.lv-kokboks), .lv-kokingr button.on b{ color:var(--lv-muted); text-decoration:line-through; }
.lv-kokboks{ width:24px; height:24px; border-radius:8px; border:1.5px solid var(--lv-muted); display:grid; place-items:center; }
.lv-kokboks svg{ width:14px; height:14px; }
.lv-kokingr button.on .lv-kokboks{ background:var(--lv-ice); border-color:var(--lv-ice); color:#161b1d; }
.lv-kokferdig{ display:flex; flex-direction:column; gap:18px; margin-top:6px; }
.lv-kokferdig > label{ gap:14px; }
.lv-kokferdig .lv-stepper span{ min-width:34px; font-size:1.1rem; }
.lv-koktidere{ display:flex; gap:8px; flex-wrap:wrap; }
.lv-koktidere:empty{ display:none; }
.lv-koktt{ display:flex; align-items:center; gap:10px; padding:6px 6px 6px 14px; border-radius:999px; background:var(--lv-tile); border:1px solid var(--lv-edge); }
.lv-koktt b{ font-family:var(--lv-mono); font-size:1.05rem; font-variant-numeric:tabular-nums; }
.lv-koktt.ferdig{ border-color:#9fe0b0; box-shadow:0 0 18px -6px #9fe0b0; animation:lv-blink 1s ease-in-out infinite alternate; }
.lv-root .lv-koktt .lv-b.ic{ width:30px; height:30px; }
@keyframes lv-blink{ to{ background:rgba(159,224,176,.18); } }
.lv-koknav{ display:grid; grid-template-columns:1fr 1.4fr; gap:10px; }
.lv-koknav .lv-b{ justify-content:center; min-height:52px; font-size:1rem; }
.lv-koknav .lv-b[disabled]{ opacity:.35; }
.lv-koknav .lv-b:only-child{ grid-column:1 / -1; }

/* ---------- Hviletimer (trening) ---------- */
.lv-root.lv-hvile{ flex-direction:row; min-height:0; }
.lv-hvile{ position:fixed; left:50%; bottom:calc(16px + env(safe-area-inset-bottom)); z-index:9100; width:min(460px, calc(100vw - 24px)); display:flex; align-items:center; gap:12px; padding:12px 12px 16px 14px; border-radius:26px; overflow:hidden;
  background:rgba(31,38,41,.94); border:1px solid var(--lv-edge); box-shadow:0 20px 40px -18px #000; -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  transform:translate(-50%, 140%); transition:transform .3s cubic-bezier(.2,.8,.2,1); }
.lv-hvile.inn{ transform:translate(-50%, 0); }
@media (max-width:640px){ .lv-hvile{ bottom:calc(66px + max(0px, env(safe-area-inset-bottom) - 20px)); } }
.lv-hvilefigur, .lv-hvile img{ width:44px; height:44px; flex:none; border-radius:14px; }
.lv-hvilefigur{ background:radial-gradient(circle at 35% 30%, #3a4f5c, #1d272b); border:1px dashed rgba(193,209,207,.35); }
.lv-hviletekst{ flex:1; min-width:0; display:flex; flex-direction:column; }
.lv-hviletid{ font-family:var(--lv-display); font-size:1.5rem; font-weight:400; font-variant-numeric:tabular-nums; }
.lv-root .lv-hvile .lv-b.ic{ width:40px; height:40px; font:500 .72rem var(--lv-mono); }
.lv-hvilelinje{ position:absolute; left:14px; right:14px; bottom:7px; height:3px; border-radius:3px; background:var(--lv-tile2); overflow:hidden; }
.lv-hvilelinje i{ display:block; height:100%; background:var(--lv-ice); box-shadow:0 0 8px rgba(193,209,207,.8); transition:width .25s linear; }
.lv-hvile.klar{ border-color:#9fe0b0; box-shadow:0 0 0 1px #9fe0b0, 0 20px 40px -18px #000; }
.lv-hvile.klar .lv-hviletid{ color:#9fe0b0; }
@media (prefers-reduced-motion: reduce){ .lv-kok, .lv-hvile, .lv-kokprog i{ transition:none; } .lv-koktt.ferdig{ animation:none; } }

/* ---------- Logge økt i etterkant ---------- */
.lv-loggvalg{ display:grid; grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); gap:10px; margin-bottom:12px; }
.lv-loggvalg label{ display:flex; flex-direction:column; gap:6px; min-width:0; }
.lv-root .lv-loggvalg .lv-field{ width:100%; }
.lv-loggfor{ color:#e8c46a; margin:-4px 0 10px; }

/* ---------- Trykk på dagene i treningsuka for å logge ---------- */
.lv-curve .lv-kdag{ cursor:pointer; outline:none; }
.lv-curve .lv-kdag .treff{ fill:transparent; stroke:none; }
.lv-curve .lv-kdag:hover circle:not(.treff), .lv-curve .lv-kdag:focus-visible circle:not(.treff){ stroke:var(--lv-ice); stroke-width:2.4; }
.lv-curve .lv-kdag:focus-visible .treff{ fill:rgba(193,209,207,.12); }
.lv-curve .lv-kdag.fram{ cursor:default; }
.lv-curve circle.on.ekstra{ fill:var(--lv-steel); stroke:var(--lv-steel); }
.lv-loggarket .lv-arkboks{ gap:12px; }
.lv-loggfaner{ display:flex; width:max-content; max-width:100%; }
.lv-loggark{ display:flex; flex-direction:column; gap:12px; }
.lv-loggark .lv-sets b{ font-weight:600; }

/* Tallene i kg/reps-feltene står midt i feltet (var venstrejustert) */
.lv-root .lv-sets input{ text-align:center; padding:4px 6px; -moz-appearance:textfield; appearance:textfield; }
.lv-root .lv-sets input::-webkit-outer-spin-button, .lv-root .lv-sets input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }

/* ---------- Ukeplan: forslag, lås, grunner, gjester, meal prep ---------- */
.lv-ukeknapper{ margin-top:16px; flex-wrap:wrap; gap:8px; }
.lv-sesong{ margin-top:14px; padding:10px 14px; border-radius:18px; background:var(--lv-dark); display:flex; flex-wrap:wrap; gap:4px 10px; align-items:baseline; font-size:.88rem; }
.lv-sesong span:nth-child(2){ color:#c9e3a6; }
.lv-ukefaner{ display:flex; width:max-content; max-width:100%; margin-bottom:14px; }
.lv-ukefaner .lv-mono{ margin-left:6px; opacity:.7; }
.lv-wkc{ display:flex; flex-direction:column; gap:5px; }
.lv-wkinfo{ display:flex; align-items:flex-start; gap:6px; min-height:16px; }
.lv-root .lv-lås{ flex:none; width:18px; height:18px; display:grid; place-items:center; color:var(--lv-muted); opacity:.55; }
.lv-root .lv-lås.on{ color:var(--lv-ice); opacity:1; }
.lv-lås svg, .lv-mono svg{ width:12px; height:12px; vertical-align:-1px; }
.lv-grunn{ font:500 .58rem/1.3 var(--lv-mono); color:#c9d6c0; letter-spacing:.02em; }
.lv-root .lv-gjest{ margin-top:6px; align-self:flex-start; padding:2px 7px; border-radius:999px; border:1px solid var(--lv-line); font:500 .58rem var(--lv-mono); color:var(--lv-muted); }
.lv-root .lv-gjest.on{ color:#e8c46a; border-color:rgba(232,196,106,.5); }
.lv-gjeststep{ justify-content:center; gap:16px; padding:10px 0; }
.lv-gjeststep span{ font-family:var(--lv-display); font-size:1.6rem; min-width:48px; }
.lv-foreslåslots{ display:flex; flex-wrap:wrap; gap:8px; }
.lv-root .lv-chip.on{ color:#161b1d; background:var(--lv-ice); border-color:var(--lv-ice); }
.lv-root button.lv-chip{ padding:7px 14px; font-size:.82rem; }
.lv-prep{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.lv-prep li{ display:grid; grid-template-columns:34px minmax(0,1fr) auto; gap:12px; align-items:center; padding:12px 0; border-bottom:1px solid var(--lv-line); }
.lv-prep li > div{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.lv-prep .n{ font-family:var(--lv-display); color:var(--lv-muted); font-size:.8rem; }
.lv-prepdager{ display:flex; flex-wrap:wrap; gap:4px; }
.lv-prepdager span{ font:500 .6rem var(--lv-mono); padding:2px 7px; border-radius:999px; background:var(--lv-tile2); color:var(--lv-muted); }
@media (max-width:640px){ .lv-prep li{ grid-template-columns:28px minmax(0,1fr); } .lv-prep li > .lv-b{ grid-column:2; justify-self:start; } }

/* ---------- Tre på bordet ---------- */
.lv-trearket .lv-arkboks{ gap:12px; }
.lv-trekort{ display:flex; flex-direction:column; gap:10px; }
.lv-tre{ display:grid; grid-template-columns:76px minmax(0,1fr) auto; gap:12px; align-items:center; padding:8px; border-radius:22px; background:var(--lv-dark); border:1px solid transparent; transition:border-color .2s, box-shadow .2s; }
.lv-tre.vinner{ border-color:#9fe0b0; box-shadow:0 0 18px -8px #9fe0b0; }
.lv-root .lv-trebilde{ width:76px; height:76px; border-radius:16px; overflow:hidden; position:relative; padding:0; }
.lv-trebilde svg, .lv-trebilde img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.lv-treinfo{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.lv-trestem{ display:flex; align-items:center; gap:6px; }
.lv-root .lv-trestem .lv-b.ic{ width:40px; height:40px; font-size:1rem; }
.lv-root .lv-b.ic.on.ja{ background:rgba(240,140,150,.2); border-color:#f08a95; box-shadow:0 0 14px -6px #f08a95; }
.lv-root .lv-b.ic.on.nei{ background:rgba(255,255,255,.06); opacity:.6; }
.lv-trevinner{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; padding:12px 14px; border-radius:18px; background:rgba(159,224,176,.1); border:1px solid rgba(159,224,176,.4); }
.lv-trevinner b{ font-family:var(--lv-display); font-weight:400; font-size:1rem; flex:1; }

/* ---------- Sveip-spillet ---------- */

/* ---------- Hvordan ble den? og notater ---------- */
.lv-kokvurd{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.lv-root .lv-kokvurd .lv-b.ic{ width:46px; height:46px; font-size:1.2rem; }
.lv-root #lv-koknotat{ width:100%; border-radius:18px; min-height:60px; }
.lv-notat{ display:grid; grid-template-columns:28px minmax(0,1fr); gap:8px; padding:8px 0; border-top:1px solid var(--lv-line); }
.lv-notat p{ margin:0 0 2px; }
.lv-notater .lv-notat:first-of-type{ border-top:0; }

/* ---------- Vaner og mål ---------- */
.lv-vanetopp{ display:flex; justify-content:space-between; align-items:center; gap:16px; }
.lv-purreboks{ flex:none; display:flex; flex-direction:column; align-items:center; gap:4px; }
.lv-plantebokse{ width:130px; margin:-14px -6px -10px; }
.lv-purre path[stroke]{ transform-origin:60px 78px; animation:lv-vai 3.2s ease-in-out infinite alternate; }
.lv-purre path[stroke]:nth-child(even){ animation-delay:-1.6s; }
@keyframes lv-vai{ from{ transform:rotate(-2.5deg); } to{ transform:rotate(2.5deg); } }
.lv-vanegrid{ display:grid; gap:8px 6px; align-items:center; }
.lv-vanegrid .nm{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.9rem; }
.lv-vanegrid > .lv-mono{ text-align:center; font-size:.6rem; }
.lv-root .lv-vprikk{ width:24px; height:24px; border-radius:50%; border:1.5px solid var(--lv-muted); justify-self:center; }
.lv-root .lv-vprikk.on{ background:#9fd36f; border-color:#9fd36f; box-shadow:0 0 10px -2px rgba(159,211,111,.8); }
@media (max-width:640px){ .lv-tab ul{ padding-left:max(12px, calc((610px - 100vw) / 12)); padding-right:max(12px, calc((610px - 100vw) / 12)); } }   /* nok luft til at kula står rett over ikonene helt ytterst */
@media (prefers-reduced-motion: reduce){ .lv-purre path[stroke]{ animation:none; } }

.lv-vanerad{ display:flex; flex-direction:column; gap:8px; padding:10px 0; border-top:1px solid var(--lv-line); }
.lv-vanerad:first-of-type{ border-top:0; }
.lv-vaneprikker{ display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
.lv-root .lv-vaneprikker .lv-vprikk{ width:100%; max-width:38px; height:38px; justify-self:center; display:grid; place-items:center; }
.lv-vprikk i{ font:500 .58rem var(--lv-mono); font-style:normal; color:var(--lv-muted); }
.lv-vprikk.on i{ color:#1d2a14; }

/* ---------- Vektorikoner i stedet for emoji ---------- */
.lv-gr{ display:inline-flex; align-items:center; gap:4px; margin-right:8px; }
.lv-gr svg{ width:11px; height:11px; flex:none; opacity:.85; }
.lv-grunn .lv-gr{ display:inline-flex; }
.lv-ikon{ display:inline-flex; vertical-align:-2px; }
.lv-ikon svg{ width:12px; height:12px; }
.lv-wk .dn small.lv-wkvær{ display:inline-flex; align-items:center; gap:3px; }
.lv-notatikon svg{ width:16px; height:16px; color:var(--lv-ice); }
.lv-root .lv-b.ic svg{ width:17px; height:17px; }
.lv-root .lv-b.ic.stor svg{ width:26px; height:26px; }
.lv-root .lv-b.ic.on.ja svg, .lv-root .lv-b.ic.stor.ja svg{ fill:#f08a95; stroke:#f08a95; }
.lv-root .lv-b.ic.stor.ja{ color:#f08a95; }
.lv-root .lv-kokvurd .lv-b.ic svg{ width:20px; height:20px; }
.lv-root .lv-kokvurd .lv-b.ic.on.ja svg{ fill:rgba(159,224,176,.35); stroke:#9fe0b0; }
.lv-root .lv-kokvurd .lv-b.ic.on.ja{ background:rgba(159,224,176,.14); border-color:#9fe0b0; box-shadow:0 0 14px -6px #9fe0b0; }

/* ---------- Turnering ---------- */
.lv-brakett{ display:flex; justify-content:center; gap:6px; }
.lv-brakett span{ font:500 .6rem var(--lv-mono); text-transform:uppercase; letter-spacing:.08em; padding:4px 10px; border-radius:999px; background:var(--lv-tile2); color:var(--lv-muted); }
.lv-brakett span.na{ background:var(--lv-ice); color:#161b1d; }
.lv-brakett span.ferdig{ opacity:.45; text-decoration:line-through; }
.lv-tspm{ text-align:center; }
.lv-tkamp{ flex:1; display:grid; grid-template-rows:1fr auto 1fr; gap:10px; min-height:0; }
.lv-root .lv-tkort{ position:relative; border-radius:26px; overflow:hidden; background:#8c969a; min-height:0; padding:0; transition:transform .3s, opacity .3s, box-shadow .3s; box-shadow:0 20px 40px -24px #000; }
.lv-tkort > svg, .lv-tkort > img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.lv-tnavn{ position:absolute; left:0; right:0; bottom:0; padding:30px 16px 14px; display:flex; flex-direction:column; align-items:flex-start; gap:2px; background:linear-gradient(transparent, rgba(10,13,14,.85)); color:#f3f4f4; text-align:left; }
.lv-tnavn b{ font-family:var(--lv-display); font-weight:400; font-size:1.05rem; }
.lv-tkort.valgt{ transform:scale(1.03); box-shadow:0 0 0 3px var(--lv-ice), 0 20px 40px -20px #000; }
.lv-tkort.ut{ opacity:.25; transform:scale(.95); }
.lv-tvs{ text-align:center; font-family:var(--lv-display); font-size:.8rem; color:var(--lv-muted); text-transform:uppercase; letter-spacing:.2em; }
.lv-tvidere{ display:flex; flex-wrap:wrap; justify-content:center; gap:6px; min-height:22px; }
.lv-tvidere span{ font:500 .62rem var(--lv-mono); padding:3px 9px; border-radius:999px; border:1px solid rgba(159,224,176,.5); color:#9fe0b0; }
.lv-tvinner{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; text-align:center; }
.lv-tpokal svg{ width:56px; height:56px; color:#e8c46a; filter:drop-shadow(0 0 16px rgba(232,196,106,.6)); }
.lv-tvinnerbilde{ position:relative; width:min(260px, 70vw); aspect-ratio:1; border-radius:30px; overflow:hidden; box-shadow:0 24px 50px -24px #000; }
.lv-tvinnerbilde svg, .lv-tvinnerbilde img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.lv-tdag{ display:flex; max-width:100%; }
@media (min-width:700px){ .lv-tkamp{ grid-template-rows:none; grid-template-columns:1fr auto 1fr; align-items:stretch; } .lv-tvs{ align-self:center; } }
.lv-tdag{ flex-wrap:wrap; justify-content:center; border-radius:22px; }
.lv-root .lv-tdag button{ padding:7px 11px; }

/* ---------- Spiren i bunnbaren (Vaner og mål): spirer opp av jorda og blomstrer ---------- */
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic svg{ overflow:visible; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic svg *{ transform-box:view-box; }   /* opprinnelsene over er i px i viewBox; fill-box flytter kronbladene */
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .blomst{ opacity:0; transform:scale(0); transform-origin:12px 6.3px; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .blomst .kronblad{ stroke-width:1.4; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .blomst .midt{ fill:currentColor; stroke:none; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .blad-v{ transform-origin:12px 16px; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .blad-h{ transform-origin:12px 13.5px; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .jord{ transform-origin:12px 21px; }
/* Trykk: stilken vokser opp av jorda, bladene folder seg ut, og blomsten spretter */
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic.spill svg{ animation:none; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic.spill .jord{ animation:lv-jord .5s ease-out; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic.spill .stilk{ stroke-dasharray:10; animation:lv-stilk .5s cubic-bezier(.3,.7,.3,1) both; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic.spill .blad-v{ animation:lv-bladv .7s cubic-bezier(.3,1.5,.5,1) .18s both; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic.spill .blad-h{ animation:lv-bladh .7s cubic-bezier(.3,1.5,.5,1) .28s both; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic.spill .blomst{ animation:lv-blomst .8s cubic-bezier(.3,1.6,.5,1) .55s both; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic.spill .kronblad{ animation:lv-kronblad .6s ease-out .6s both; }
@keyframes lv-jord{ 0%{ transform:scaleX(.4); } 60%{ transform:scaleX(1.15); } 100%{ transform:scaleX(1); } }
@keyframes lv-stilk{ from{ stroke-dashoffset:10; } to{ stroke-dashoffset:0; } }
@keyframes lv-bladv{ from{ transform:scale(0) rotate(35deg); } to{ transform:scale(1) rotate(0); } }
@keyframes lv-bladh{ from{ transform:scale(0) rotate(-35deg); } to{ transform:scale(1) rotate(0); } }
@keyframes lv-blomst{ from{ opacity:0; transform:scale(0) rotate(-90deg); } 60%{ opacity:1; } to{ opacity:1; transform:scale(1) rotate(0); } }
@keyframes lv-kronblad{ from{ fill:transparent; } 50%{ fill:rgba(255,255,255,.55); } to{ fill:transparent; } }
/* Når siden er åpen: plantA står i blomst og vaier rolig */
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"].on .blomst{ opacity:1; transform:scale(1); }
/* Når siden er åpen, fortsetter blomsten å blomstre: kronbladene åpner seg ett og ett, rundt og rundt */
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .blomst .kronblad{ transform-origin:12px 6.3px; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"].on .ic:not(.spill) .kronblad{ animation:lv-blomstrer 3s ease-in-out infinite; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"].on .ic:not(.spill) .kronblad:nth-of-type(2){ animation-delay:.6s; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"].on .ic:not(.spill) .kronblad:nth-of-type(3){ animation-delay:1.2s; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"].on .ic:not(.spill) .kronblad:nth-of-type(4){ animation-delay:1.8s; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"].on .ic:not(.spill) .kronblad:nth-of-type(5){ animation-delay:2.4s; }
:is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"].on .ic:not(.spill) .midt{ transform-origin:12px 6.3px; animation:lv-midt 3s ease-in-out infinite; }
@keyframes lv-blomstrer{ 0%, 100%{ transform:scale(.88); fill:transparent; } 45%{ transform:scale(1.2); fill:rgba(255,255,255,.5); } }
@keyframes lv-midt{ 0%, 100%{ transform:scale(1); } 50%{ transform:scale(1.25); } }
@media (prefers-reduced-motion: reduce){ :is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic svg, :is(.lv-tab li, .lv-nav .lv-b)[data-ik="spire"] .ic svg *{ animation:none !important; } }

/* Ytelse: kort utenfor skjermen tegnes ikke før du scroller dit */
.lv-root .lv-rc{ content-visibility:auto; contain-intrinsic-size:auto 220px; }

/* Toppmenyen på PC: ikonene animeres som i bunnbaren */
.lv-nav .lv-b .ic{ display:inline-grid; place-items:center; flex:none; }
.lv-nav .lv-b .ic svg{ overflow:visible; }

/* Ytelse: når et fullskjermvindu (kokemodus, turnering) er åpent, tegnes ikke siden bak. Når et ark er åpent, slås uskarphet bak av. */
body.lv-laast #app, body.lv-laast .lv-tab, body.lv-laast .lv-topp{ visibility:hidden; transition:visibility 0s .25s; }
body.lv-arkåpen .lv-bezel, body.lv-arkåpen .lv-rc .top > span, body.lv-arkåpen .lv-vbar, body.lv-arkåpen .lv-hvile{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }


/* Aktivt ikon i toppmenyen på PC blir litt større */
.lv-nav .lv-b .ic{ transition:transform .35s cubic-bezier(.3,1.4,.5,1); }
.lv-nav .lv-b.on .ic{ transform:scale(1.18); }

/* ---------- Purr-E stikker hodet opp nederst på Vaner og mål ----------
   Figuren kappes rett under munnen (y 1090 i figuren, 1120 fra toppen av viewBox), og resten ligger bak bunnbaren.
   --bunn er hvor høyt kappestedet står over sidens underkant: bunnbarens høyde på mobil, 0 på PC. */
.lv-purrebunn{ --pw:min(380px, 60vw); --bunn:0px; position:relative; overflow:hidden; pointer-events:none;
  height:calc(var(--bunn) + var(--pw) * 1100 / 1354); margin:26px -14px calc(-24px - env(safe-area-inset-bottom)); }
.lv-purrefig{ position:absolute; left:50%; width:var(--pw); bottom:calc(var(--bunn) - var(--pw) * 194 / 1354); transform:translateX(-50%); }
.lv-purrefig svg{ display:block; width:100%; height:auto; }
@media (max-width:640px){
  .lv-purrebunn{ --pw:min(380px, 94vw); --bunn:calc(54px + max(0px, env(safe-area-inset-bottom) - 20px)); margin-bottom:calc(-78px - env(safe-area-inset-bottom)); }
}

/* Verktøytipset i vektgrafen skal ikke vises når det er skjult (var en tom liten pille under grafen) */
.lv-kgtip[hidden]{ display:none !important; }

/* ---------- Programmet: hver øvelse er en nedtrekksrad med glidere (mobil og PC) ---------- */
.lv-exr{ grid-template-columns:minmax(0,1fr) auto 30px; gap:6px 10px; }
.lv-exr .lv-mini2{ display:none; }
.lv-exglid{ display:none; }
.lv-root .lv-exsum{ display:inline-flex; align-items:center; gap:8px; padding:7px 10px 7px 14px; border-radius:999px; background:var(--lv-tile2); color:var(--lv-ink); }
.lv-exsum .lv-mono{ color:var(--lv-ink); white-space:nowrap; }
.lv-exchev{ display:inline-grid; place-items:center; color:var(--lv-muted); transition:transform .25s; }
.lv-exchev svg{ width:13px; height:13px; transform:rotate(135deg); }
.lv-exr.åpen .lv-exchev{ transform:rotate(180deg); }
.lv-exr.åpen .lv-exglid{ display:flex; flex-direction:column; gap:14px; grid-column:1 / -1; padding:10px 4px 6px; max-width:560px; animation:lv-glidinn .25s ease-out; }
@keyframes lv-glidinn{ from{ opacity:0; transform:translateY(-6px); } }
.lv-glid{ display:grid; grid-template-columns:62px minmax(0,1fr) 58px; align-items:center; gap:12px; }
.lv-glid output{ font-family:var(--lv-mono); font-size:.85rem; text-align:right; color:var(--lv-ink); }
.lv-root .lv-glid input[type=range]{ -webkit-appearance:none; appearance:none; width:100%; height:28px; background:transparent; padding:0; border:0; box-shadow:none; margin:0; }
.lv-glid input[type=range]::-webkit-slider-runnable-track{ height:6px; border-radius:6px; background:var(--lv-tile2); }
.lv-glid input[type=range]::-moz-range-track{ height:6px; border-radius:6px; background:var(--lv-tile2); }
.lv-glid input[type=range]::-webkit-slider-thumb{ -webkit-appearance:none; width:26px; height:26px; margin-top:-10px; border-radius:50%; background:linear-gradient(180deg,#3e474c,#1e2427); border:1px solid rgba(193,209,207,.6); box-shadow:0 0 12px -2px rgba(193,209,207,.8); }
.lv-glid input[type=range]::-moz-range-thumb{ width:26px; height:26px; border-radius:50%; background:linear-gradient(180deg,#3e474c,#1e2427); border:1px solid rgba(193,209,207,.6); box-shadow:0 0 12px -2px rgba(193,209,207,.8); }

/* Ingenting skal kunne skyve siden ut på siden (da havnet kula i bunnbaren feil på iPhone) */
html, body{ overflow-x:clip; }

/* Purr-E: mindre luft over, toppen av hodet får gjerne ligge over blokken over */
.lv-purrebunn{ margin-top:calc(var(--pw) * -0.14); z-index:2; }

/* ---------- Trening: dagens status i en ramme øverst ---------- */
.lv-dagsramme{ position:relative; isolation:isolate; display:flex; flex-direction:column; gap:16px; border:1px solid rgba(193,209,207,.28); }
.lv-dagsramme::before{ content:""; position:absolute; inset:-1px; border-radius:inherit; padding:1px; z-index:-1; pointer-events:none;
  background:conic-gradient(from var(--lv-vinkel, 0deg), rgba(193,209,207,0) 0deg, rgba(193,209,207,.9) 50deg, rgba(193,209,207,0) 110deg, rgba(193,209,207,0) 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor; mask-composite:exclude; opacity:0; }
.lv-dagsramme.trening::before{ opacity:1; animation:lv-rammelys 4.5s linear infinite; }
.lv-dagsramme.hvile{ animation:lv-pust 5s ease-in-out infinite; }
@property --lv-vinkel{ syntax:"<angle>"; inherits:false; initial-value:0deg; }
@keyframes lv-rammelys{ to{ --lv-vinkel:360deg; } }
@keyframes lv-pust{ 0%,100%{ box-shadow:0 0 0 0 rgba(193,209,207,0); } 50%{ box-shadow:0 0 28px -8px rgba(193,209,207,.45); } }
.lv-dagshode{ display:flex; align-items:center; gap:16px; }
.lv-dagstekst{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.lv-dagstittel{ font-family:var(--lv-display); font-weight:400; font-size:clamp(1.7rem, 6vw, 2.4rem); letter-spacing:-.01em; line-height:1.1; }
.lv-oktknapp{ align-self:flex-start; }
.lv-dagsokt{ display:none; }
.lv-dagsokt.åpen{ display:block; animation:lv-glidinn .25s ease-out; }

/* Animasjonene i rammen */
.lv-stanim{ flex:none; width:64px; height:64px; overflow:visible; fill:none; stroke:var(--lv-ice); stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.lv-stanim *{ transform-box:view-box; }
/* Trening: manualen løftes, og to ringer brer seg ut */
.lv-stanim.trening .ring{ stroke-width:1.4; opacity:0; transform-origin:32px 32px; animation:lv-ring 2.4s ease-out infinite; }
.lv-stanim.trening .ring.r2{ animation-delay:1.2s; }
.lv-stanim.trening .vekt{ transform-origin:32px 32px; animation:lv-loftvekt 2.4s cubic-bezier(.4,0,.3,1) infinite; filter:drop-shadow(0 0 4px rgba(193,209,207,.7)); }
@keyframes lv-ring{ 0%{ opacity:.7; transform:scale(.55); } 100%{ opacity:0; transform:scale(1.15); } }
@keyframes lv-loftvekt{ 0%,100%{ transform:translateY(5px); } 35%,55%{ transform:translateY(-6px); } 45%{ transform:translateY(-6px) rotate(-3deg); } }
/* Hvile: månen vugger og tre z-er stiger opp og blir borte */
.lv-stanim.hvile .maane{ transform-origin:30px 34px; animation:lv-vugge 5s ease-in-out infinite; }
.lv-stanim.hvile .maane path{ fill:rgba(193,209,207,.12); }
.lv-stanim.hvile .z{ stroke-width:1.8; opacity:0; animation:lv-z 3.6s ease-out infinite; }
.lv-stanim.hvile .z2{ animation-delay:1.2s; }
.lv-stanim.hvile .z3{ animation-delay:2.4s; }
@keyframes lv-vugge{ 0%,100%{ transform:rotate(-5deg); } 50%{ transform:rotate(4deg); } }
@keyframes lv-z{ 0%{ opacity:0; transform:translate(-6px, 8px); } 25%{ opacity:1; } 100%{ opacity:0; transform:translate(4px, -6px); } }
/* Fullført: sirkelen og haken tegnes, så gløder den rolig */
.lv-stanim.ferdig .sirkel, .lv-stanim.ferdig .hake{ stroke-dasharray:100; stroke-dashoffset:100; animation:lv-tegn .9s ease-out forwards; }
.lv-stanim.ferdig .hake{ stroke-width:3; animation-delay:.5s; }
.lv-stanim.ferdig{ animation:lv-glod 3s ease-in-out 1.4s infinite alternate; }
@keyframes lv-tegn{ to{ stroke-dashoffset:0; } }
@keyframes lv-glod{ from{ filter:none; } to{ filter:drop-shadow(0 0 6px rgba(193,209,207,.8)); } }
@media (prefers-reduced-motion: reduce){ .lv-stanim *, .lv-stanim, .lv-dagsramme, .lv-dagsramme::before{ animation:none !important; } .lv-stanim.ferdig *{ stroke-dashoffset:0; } .lv-stanim.hvile .z{ opacity:1; } }

/* ---------- Endre program: kan foldes sammen ---------- */
.lv-root .lv-proghode{ display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:12px; width:100%; text-align:left; padding:0; background:none; border:0; color:var(--lv-ink); }
.lv-proghode h2{ margin:0; font-family:var(--lv-display); font-size:.8rem; letter-spacing:.02em; font-weight:400; }
.lv-proginn{ display:none; margin-top:16px; }
.lv-progboks.åpen .lv-proginn{ display:block; animation:lv-glidinn .25s ease-out; }
.lv-progboks.åpen .lv-proghode .lv-exchev{ transform:rotate(180deg); }
@media (max-width:640px){ .lv-proghode .lv-mono{ display:none; } }

/* ---------- Purreplanten: tre trinn etter andelen av dagens vaner ---------- */
.lv-plante{ display:block; width:100%; height:auto; overflow:visible; }
.lv-plante *{ transform-box:view-box; }
.lv-plante .gr-pl{ opacity:0; transform-origin:636px 726px; }
.lv-plante #gr-spire, .lv-plante #gr-spire-vipp{ transform-origin:636px 706px; }
.lv-plante #gr-alt{ transform-origin:636px 1175px; }
.lv-plante #gr-oye0{ transform-origin:500px 899px; }
.lv-plante #gr-oye1{ transform-origin:767px 899px; }
.lv-plante .gr-gn{ opacity:0; transform-box:fill-box; transform-origin:center; }
.lv-plante:not([data-trinn="1"]) #gr-spire{ opacity:0; }
.lv-plante[data-trinn="2"] :is(#gr-pl2, #gr-plu2), .lv-plante[data-trinn="3"] :is(#gr-pl5, #gr-plu5){ opacity:1; }
/* Nytt trinn: planten spretter opp, potten hopper og blunker; ved alle vaner kommer gnistene */
.lv-plante.vokser[data-trinn="2"] :is(#gr-pl2, #gr-plu2), .lv-plante.vokser[data-trinn="3"] :is(#gr-pl5, #gr-plu5){ animation:lv-plvekst .9s cubic-bezier(.3,1.5,.5,1) both; }
.lv-plante:is(.vokser, .hopp) #gr-alt{ animation:lv-plhopp .7s ease-in-out; }
.lv-plante:is(.vokser, .hopp) :is(#gr-oye0, #gr-oye1){ animation:lv-plblunk .7s ease-in-out .1s; }
.lv-plante.vokser[data-trinn="3"] .gr-gn{ animation:lv-plgnist 1.1s ease-out .55s both; }
.lv-plante.vokser[data-trinn="3"] .gr-gn1{ animation-delay:.67s; }
.lv-plante.vokser[data-trinn="3"] .gr-gn2{ animation-delay:.79s; }
.lv-plante.vokser[data-trinn="3"] .gr-gn3{ animation-delay:.91s; }
.lv-plante.vokser[data-trinn="3"] .gr-gn4{ animation-delay:1.03s; }
.lv-plante.vokser[data-trinn="3"] .gr-gn5{ animation-delay:1.15s; }
@keyframes lv-plvekst{ 0%{ transform:scale(.5, .15); opacity:0; } 20%{ opacity:1; } 55%{ transform:scale(1.05, 1.1); } 75%{ transform:scale(.98, .96); } 100%{ transform:none; opacity:1; } }
@keyframes lv-plhopp{ 0%, 100%{ transform:none; } 25%{ transform:scale(1.06, .93); } 55%{ transform:translateY(-14px) scale(.98, 1.03); } }
@keyframes lv-plblunk{ 0%, 100%{ transform:none; } 30%, 55%{ transform:scaleY(.1); } }
@keyframes lv-plgnist{ 0%{ transform:scale(0) rotate(0); opacity:0; } 30%{ transform:scale(1.2) rotate(60deg); opacity:1; } 60%{ transform:scale(.9) rotate(110deg); opacity:1; } 100%{ transform:scale(0) rotate(150deg); opacity:0; } }
@media (prefers-reduced-motion: reduce){ .lv-plante *{ animation:none !important; } }

/* ---------- Hovedkarakter og lasteskjerm ---------- */
.lv-kar{ position:relative; display:grid; place-items:center; width:100%; aspect-ratio:1; }
.lv-kar img{ width:100%; height:100%; object-fit:contain; }
.lv-karplass{ display:none; width:72%; aspect-ratio:1; border-radius:50%; place-items:center; border:1.5px dashed rgba(193,209,207,.45); background:radial-gradient(circle at 35% 30%, rgba(255,255,255,.08), rgba(0,0,0,.15));
  font-family:var(--lv-display); font-size:1.8rem; color:var(--lv-ice); }
.lv-kar.mangler .lv-karplass{ display:grid; }
.lv-karvalg{ display:grid; grid-template-columns:repeat(5, minmax(0,1fr)); gap:10px; }
.lv-root .lv-karkort{ position:relative; display:flex; flex-direction:column; align-items:center; gap:4px; padding:12px 8px 14px; border-radius:24px; background:var(--lv-tile2); border:1px solid transparent; text-align:center; transition:border-color .2s, box-shadow .2s, transform .2s; }
.lv-karkort .lv-kar{ width:86%; max-width:150px; overflow:hidden; border-radius:18px; }
.lv-karkort b{ font-weight:600; font-size:.9rem; margin-top:4px; }
.lv-karkort.on{ border-color:rgba(193,209,207,.6); box-shadow:0 0 0 1px rgba(193,209,207,.3), 0 10px 28px -12px rgba(193,209,207,.8); }
.lv-karkort:active{ transform:scale(.97); }
.lv-karvalgt{ display:inline-flex; align-items:center; gap:4px; color:var(--lv-ice); }
.lv-karvalgt svg{ width:12px; height:12px; }
@media (max-width:640px){
  .lv-karvalg{ display:flex; overflow-x:auto; scroll-snap-type:x mandatory; margin:0 -4px; padding:2px 4px 6px; }
  .lv-karvalg .lv-karkort{ flex:0 0 42%; scroll-snap-align:start; }
}
.lv-lasterside{ min-height:70vh; display:grid; place-items:center; }
.lv-laster{ display:flex; flex-direction:column; align-items:center; gap:18px; }
.lv-lasterfig{ position:relative; width:min(220px, 56vw); }
.lv-lasterfig .lv-kar{ animation:lv-lasterbob 1.8s ease-in-out infinite; }
.lv-lasterskygge{ display:block; width:60%; height:14px; margin:4px auto 0; border-radius:50%; background:radial-gradient(closest-side, rgba(0,0,0,.45), rgba(0,0,0,0)); animation:lv-lasterskygge 1.8s ease-in-out infinite; }
.lv-lastertekst::after{ content:""; display:inline-block; width:1.2em; text-align:left; animation:lv-prikker 1.4s steps(4) infinite; }
@keyframes lv-lasterbob{ 0%, 100%{ transform:translateY(0); } 50%{ transform:translateY(-12px); } }
@keyframes lv-lasterskygge{ 0%, 100%{ transform:scaleX(1); opacity:1; } 50%{ transform:scaleX(.8); opacity:.6; } }
@keyframes lv-prikker{ 0%{ content:""; } 25%{ content:"."; } 50%{ content:".."; } 75%{ content:"..."; } }
.lv-lasterark{ position:fixed; inset:0; z-index:9800; display:grid; place-items:center; background:linear-gradient(180deg,var(--lv-bg1),var(--lv-bg2)); opacity:0; transition:opacity .3s; }
.lv-lasterark.inn{ opacity:1; }
@media (prefers-reduced-motion: reduce){ .lv-lasterfig .lv-kar, .lv-lasterskygge, .lv-lastertekst::after{ animation:none; } }

.lv-karmotto{ font-size:.78rem; line-height:1.35; color:var(--lv-muted); text-wrap:balance; }
.lv-karkort .lv-kar img{ transform:scale(.84); }

/* Lasteskjerm som nærbilde (Purr-E): ansiktet fyller ei rute og kappes i kantene, som et tegneserieruteutsnitt */
.lv-laster.naer{ width:100%; align-items:stretch; }
.lv-laster.naer .lv-lastertekst{ text-align:center; }
.lv-naer{ position:relative; width:min(380px, 100%); margin-left:auto; aspect-ratio:3 / 4; overflow:hidden; isolation:isolate; animation:lv-dras 2.6s ease-in-out infinite;
  /* uten bakgrunn: står helt ut mot høyre kant, hele toppen er med, og bunnen tones ut */
  -webkit-mask-image:linear-gradient(180deg, #000 72%, transparent 100%); mask-image:linear-gradient(180deg, #000 72%, transparent 100%); }
.lv-naer{ --cx:.7; --z:var(--nz); }
.lv-naer img{ position:absolute; z-index:1; height:auto; max-width:none; width:calc(var(--z) * 100%);
  left:calc((var(--cx) - var(--z) * var(--x) / 1254) * 100%); top:calc((0.015 - var(--z) * var(--topp) / 1254 * 0.75) * 100%); }   /* ruta er 3:4, toppen av figuren er med */
.lv-fartstriper{ position:absolute; left:0; top:0; width:34%; height:100%; z-index:0; overflow:visible; }
.lv-fartstriper line{ stroke:var(--lv-ice); stroke-width:2; stroke-linecap:round; vector-effect:non-scaling-stroke; opacity:0; animation:lv-fart .9s linear infinite; animation-delay:calc(var(--i) * -0.13s); }
@keyframes lv-fart{ 0%{ opacity:0; transform:translateX(18px); } 25%{ opacity:.75; } 100%{ opacity:0; transform:translateX(-16px); } }
@keyframes lv-dras{ 0%, 100%{ transform:translateX(0); } 50%{ transform:translateX(8px); } }
@media (prefers-reduced-motion: reduce){ .lv-naer, .lv-fartstriper line{ animation:none; } .lv-fartstriper line{ opacity:.6; } }
/* PC: nærbildet står midt på og zoomer mindre, så hele hodet får plass; bare bunnen tones ut */
@media (min-width:641px){ .lv-naer{ margin:0 auto; width:min(400px, 100%); --z:calc(var(--nz) * .9); --cx:.55; } }

/* ---------- Propin i rammen på treningssiden ---------- */
.lv-peko{ display:block; pointer-events:none; user-select:none; }
/* Hviledag: Propin ligger og sover nede i hjørnet av rammen, litt utenfor kanten */
.lv-dagsramme{ overflow:visible; }
.lv-dagsramme.hvile{ padding-bottom:34px; margin-bottom:24px; }
.lv-peko.sover{ position:absolute; right:-6px; bottom:-34px; width:150px; height:150px; z-index:2; }
.lv-dagsramme.hvile .lv-dagstekst{ padding-right:0; }
@media (max-width:640px){ .lv-peko.sover{ width:132px; height:132px; bottom:-30px; } }

.lv-tab, .lv-nav{ -webkit-touch-callout:none; -webkit-user-select:none; user-select:none; }

/* Propin kommer opp nederst når en øvelse er ferdig (over hviletimeren og bunnbaren) */
.lv-pekoopp{ position:fixed; right:max(12px, calc(50vw - 300px)); bottom:calc(150px + env(safe-area-inset-bottom)); z-index:9200; display:flex; flex-direction:column; align-items:center;
  transform:translateY(calc(100% + 170px)) scale(.8); opacity:0; transition:transform .5s cubic-bezier(.3,1.5,.5,1), opacity .25s; pointer-events:auto; }
.lv-pekoopp.inn{ transform:none; opacity:1; }
.lv-pekofig{ width:170px; }
.lv-pekofig svg{ display:block; width:100%; height:auto; overflow:visible; }
.lv-pekoboble{ position:relative; margin-bottom:-6px; padding:8px 14px; border-radius:16px; background:var(--lv-ice); color:#161b1d; font-weight:600; font-size:.85rem; white-space:nowrap; box-shadow:0 10px 24px -10px #000; }
.lv-pekoboble::after{ content:""; position:absolute; left:50%; bottom:-6px; width:12px; height:12px; margin-left:-6px; background:inherit; transform:rotate(45deg); border-radius:2px; }
/* Hele økta ferdig: han løfter mer enn dobbelt så fort, og boblen gløder */
.lv-pekoopp.rask .lv-pekofig svg *{ animation-duration:1.1s !important; }
.lv-pekoopp.rask .lv-pekoboble{ animation:lv-boblegl 1.1s ease-in-out infinite alternate; }
@keyframes lv-boblegl{ from{ box-shadow:0 10px 24px -10px #000; } to{ box-shadow:0 0 22px -2px rgba(193,209,207,.95); } }
@media (min-width:641px){ .lv-pekoopp{ bottom:28px; } }
@media (prefers-reduced-motion: reduce){ .lv-pekoopp{ transition:opacity .25s; transform:none; } }

/* Dra ned for å oppdatere: mens siden hentes, løper Purr-E på stedet i stedet for prikkene */
.lv-ptrlop{ display:none; position:absolute; left:50%; top:50%; width:118px; height:auto; transform:translate(-50%, -34%); pointer-events:none; }
.lv-ptr.spin svg{ display:none; }
.lv-ptr.spin .lv-ptrlop{ display:block; }
/* Hold inne en menyknapp: Purr-E løper over menyen fra venstre mot høyre */
.lv-lopover{ position:fixed; left:0; bottom:calc(50px + max(0px, env(safe-area-inset-bottom) - 20px));   /* føttene står på overkanten av bunnbaren */ z-index:9100; width:120px; pointer-events:none; animation:lv-lopover 2.4s linear forwards; }
.lv-lopover img{ display:block; width:100%; height:auto; }
@keyframes lv-lopover{ from{ transform:translateX(-130px); } to{ transform:translateX(calc(100vw + 10px)); } }
@media (min-width:641px){ .lv-lopover{ bottom:12px; width:140px; animation-duration:3.2s; } }
@media (prefers-reduced-motion: reduce){ .lv-lopover{ display:none; } }
/* Propin med shaken er tegnet tettere i bildet enn Purr-E som løper, så han gjøres mindre for å bli like stor */
.lv-ptrlop[src*="peko-shake"]{ width:74px; transform:translate(-50%, -30%); }

/* Kiwi Kiki nederst på Handleliste: samme oppsett som Purr-E, men kappes rett under arket han skriver på (y 1220 av 1254) */
.lv-kiwibunn{ --pw:min(300px, 74vw); height:calc(var(--bunn) + var(--pw) * 1220 / 1254); margin-top:calc(var(--pw) * -0.2); }   /* toppen av hodet (og bladet) ligger litt over blokken over, som Purr-E */
.lv-kiwibunn .lv-purrefig{ bottom:calc(var(--bunn) - var(--pw) * 34 / 1254); }
/* Kiwi Kiki ved oppdatering: flyr langs toppen fra venstre mot høyre, om og om igjen */
.lv-ptrlop[src*="tiki-fly"]{ width:58px; top:88%; transform:translate(-50%, -50%); }   /* litt mindre og lenger ned, så hodet ikke kappes i toppen av skjermen */
.lv-ptr.spin .lv-ptrlop[src*="tiki-fly"]{ animation:lv-flyopp 1.1s ease-in-out infinite; }   /* flyr på stedet, opp og ned, mens siden hentes (som Purr-E løper på stedet) */
@keyframes lv-flyopp{ 0%, 100%{ transform:translate(-50%, -40%) rotate(-3deg); } 50%{ transform:translate(-50%, -58%) rotate(3deg); } }
@keyframes lv-flyover{ from{ transform:translate(calc(-50vw - 110px), -50%); } to{ transform:translate(calc(50vw + 10px), -50%); } }
.lv-ptr:has(.lv-ptrlop[src*="tiki-fly"]){ overflow:visible; }

/* Figuren erstatter prikkesirkelen helt: den vises også mens du drar (vokser inn), og prikkene vises aldri */
.lv-ptr svg{ display:none !important; }
.lv-ptr .lv-ptrlop{ display:block; opacity:var(--dra, 0); scale:calc(.5 + var(--dra, 0) * .5); }
.lv-ptr.spin .lv-ptrlop{ opacity:1; scale:1; }

/* Alt handlet: Kiwi Kiki jubler med hjerter rundt hodet (figur/kiwi-ferdig.svg) */
.lv-kiwibunn.ferdig .lv-purrefig img{ display:block; width:100%; height:auto; overflow:visible; }
.lv-kiwibunn.ferdig{ overflow:visible; }

/* Alt handlet: den glade Kiwi Kiki er tegnet litt mindre i bildet, så han gjøres større for å bli like stor som når han skriver */
.lv-kiwibunn.ferdig{ --pw:min(340px, 84vw); }

/* PC: knappen nede til høyre. Mens siden hentes, står hovedkarakterens figur over knappen i stedet for prikkene */
.lv-ptrbtn{ overflow:visible; }
.lv-ptrbtn .lv-ptrlop{ display:none; position:absolute; left:50%; bottom:calc(100% - 10px); top:auto; width:110px; opacity:1; scale:1; transform:translateX(-80%); }
.lv-ptrbtn.spin .lv-ptrlop{ display:block; }
.lv-ptrbtn .lv-ptrlop[src*="peko-shake"]{ width:70px; transform:translateX(-80%); }
.lv-ptrbtn .lv-ptrlop[src*="tiki-fly"]{ width:56px; animation:none; transform:translateX(-80%); }
.lv-ptrbtn.spin .lv-ptrlop[src*="tiki-fly"]{ animation:lv-flyopp-pc 1.1s ease-in-out infinite; }
@keyframes lv-flyopp-pc{ 0%, 100%{ transform:translate(-80%, 4px) rotate(-3deg); } 50%{ transform:translate(-80%, -10px) rotate(3deg); } }
/* figuren nederst (Purr-E, Kiwi Kiki) får bevege seg utenfor sitt eget bilde uten å kappes */
.lv-purrefig svg{ overflow:visible; }
.lv-ptrbtn.spin > svg{ opacity:0; }

/* Marker og fjern i handlelista: markerte varer får en rød ring med kryss, og raden tones */
.lv-velger .lv-item input{ border-radius:6px; }
.lv-root .lv-velger .lv-item input:checked{ background:#e07a7a; border-color:#e07a7a; box-shadow:0 0 10px -2px rgba(224,122,122,.8); }
.lv-root .lv-velger .lv-item input:checked::after{ content:"×"; width:auto; height:auto; border:0; transform:none; color:#1f2629; font:700 13px/1 var(--lv-mono); }
.lv-velger .lv-item.valgt .nm{ text-decoration:line-through; color:var(--lv-muted); }
.lv-root .lv-fjernvalgt[disabled]{ opacity:.4; }

/* Ytelse: figuren øverst finnes bare mens man drar eller siden hentes (før animerte den usynlig hele tiden) */
.lv-ptr:not(.vis) .lv-ptrlop{ display:none !important; }
/* Holde inne hjem: ingen scrolling eller iOS-meny skal starte fra menyen */
.lv-tab{ touch-action:none; }
.lv-lopover svg{ display:block; width:100%; height:auto; overflow:visible; }

/* Fjern-knappen følger med nederst mens man ruller gjennom lista */
.lv-velger{ overflow:visible; }
.lv-root .lv-fjernvalgt{ position:sticky; top:calc(10px + env(safe-area-inset-top)); z-index:5; margin-bottom:10px; box-shadow:0 12px 26px -12px #000; }

/* Tom handleliste: Kiwi Kiki flyr opp og ned på stedet (samme fly som ved oppdatering) */
.lv-tomfly{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:30px 0 8px; text-align:center; }
.lv-tomfly img{ width:min(170px, 44vw); height:auto; margin-bottom:10px; animation:lv-tomfly 2.4s ease-in-out infinite; }
@keyframes lv-tomfly{ 0%, 100%{ transform:translateY(4px) rotate(-3deg); } 50%{ transform:translateY(-12px) rotate(3deg); } }
@media (prefers-reduced-motion: reduce){ .lv-tomfly img{ animation:none; } }

/* ===================== Moduser (-52): disken øverst, pille med tre sider og løse piler nederst ===================== */
:root{ --lv-dv:112px; --lv-mf:#c1d1cf; }
body.lv-meddisk #app{ padding-top:calc(var(--lv-dv) + 4px + env(safe-area-inset-top)); }
body.lv-laast .lv-disk{ visibility:hidden; }
.lv-disk{ --dw:min(100vw, 560px); --dD:calc(var(--dw) * 1.55); position:absolute; left:0; right:0; top:env(safe-area-inset-top); height:var(--lv-dv); z-index:50; pointer-events:none; }
/* Skygge under hjulet. Må ligge her og ikke på .lv-skive: .lv-diskvindu har en maske,
   og en maske klipper til border-box (mask-clip), så alt under kanten forsvinner uansett
   hva overflow sier. Derfor tegnes skyggen av .lv-disk, som verken er klippet eller maskert. */
.lv-disk::after{ content:""; position:absolute; left:50%; top:calc(var(--lv-dv) - 16px); z-index:-1;
  width:var(--dw); height:72px; margin-left:calc(var(--dw) / -2); pointer-events:none;
  background:radial-gradient(52% 100% at 50% 0%, rgba(0,0,0,.82), rgba(0,0,0,.4) 42%, transparent 76%);
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 9%, #000 91%, transparent);
  mask-image:linear-gradient(90deg, transparent, #000 9%, #000 91%, transparent); }
.lv-disk.skjul{ display:none; }
.lv-diskvindu{ position:relative; margin:0 auto; width:var(--dw); height:var(--lv-dv); overflow:hidden; pointer-events:auto; touch-action:pan-y; cursor:grab; outline:none;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); mask-image:linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
.lv-diskvindu.drar{ cursor:grabbing; }
.lv-diskvindu:focus-visible .lv-diskvis{ box-shadow:0 0 0 3px rgba(193,209,207,.5); }
.lv-skive{ position:absolute; left:50%; top:calc(var(--lv-dv) - var(--dD)); width:var(--dD); height:var(--dD); margin-left:calc(var(--dD) / -2); border-radius:50%;
  transform:rotate(var(--rot, 0deg)); will-change:transform;
  background:radial-gradient(closest-side, #262d31 0 80%, #2f383c 93%, #384246 100%); border:1px solid rgba(255,255,255,.08);
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.04); }   /* ytre skygge ligger på .lv-disk::after: masken på .lv-diskvindu klipper alt utenfor boksen */
/* skalastreker langs kanten, som på en skive */
.lv-skive::before{ content:""; position:absolute; inset:5px; border-radius:50%; pointer-events:none;
  background:repeating-conic-gradient(rgba(255,255,255,.2) 0 .3deg, transparent .3deg 5deg);
  -webkit-mask:radial-gradient(closest-side, transparent calc(100% - 7px), #000 calc(100% - 6px)); mask:radial-gradient(closest-side, transparent calc(100% - 7px), #000 calc(100% - 6px)); }
.lv-skive::after{ content:""; position:absolute; inset:16px; border-radius:50%; border:1px solid rgba(255,255,255,.06); pointer-events:none; }
.lv-diskmodus{ position:absolute; left:50%; top:50%; width:120px; height:84px; margin:-42px 0 0 -60px; padding:0; border:0; background:none; color:var(--lv-muted); cursor:pointer;
  display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:5px; opacity:.5; -webkit-tap-highlight-color:transparent;
  transform:rotate(var(--a)) translateY(calc(var(--dD) / 2 - 56px)); transition:opacity .45s, color .45s; }
.lv-diskmodus .hode{ width:42px; height:42px; border-radius:50%; overflow:hidden; display:grid; place-items:center; flex:none;
  background:radial-gradient(circle at 50% 35%, #414b50, #252c30); border:1px solid rgba(255,255,255,.14); transition:transform .5s cubic-bezier(.2,1.4,.4,1), box-shadow .5s, border-color .5s; }
.lv-diskmodus .hode img{ width:118%; height:118%; object-fit:contain; margin-top:10%; }
.lv-diskmodus .navn{ font-family:var(--lv-display); font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; }
.lv-diskmodus.on{ opacity:1; color:#f3f4f4; }
.lv-diskmodus.on .hode{ transform:scale(1.14); border-color:color-mix(in srgb, var(--lv-mf) 60%, transparent); box-shadow:0 0 18px -5px var(--lv-mf); }
body.lv-farger .lv-diskmodus:not(.on) .hode{ border-color:color-mix(in srgb, var(--mf) 35%, transparent); }
.lv-diskglod{ position:absolute; left:50%; bottom:-34px; width:240px; height:84px; margin-left:-120px; pointer-events:none;
  background:radial-gradient(closest-side, color-mix(in srgb, var(--lv-mf) 30%, transparent), transparent); transition:background .6s; }
.lv-diskvis{ position:absolute; left:50%; bottom:3px; width:20px; height:3px; margin-left:-10px; border-radius:3px; background:var(--lv-mf); box-shadow:0 0 10px var(--lv-mf); pointer-events:none; transition:background .6s, box-shadow .6s; }
.lv-diskknapp{ position:absolute; top:calc(var(--lv-dv) - 48px); width:42px; height:42px; border-radius:50%; display:grid; place-items:center; padding:0; cursor:pointer; pointer-events:auto; z-index:2;
  color:var(--lv-muted); background:linear-gradient(180deg,#3a4347,#262d31); border:1px solid rgba(255,255,255,.15); box-shadow:0 10px 20px -12px #000, inset 0 1px 0 rgba(255,255,255,.12);
  -webkit-tap-highlight-color:transparent; -webkit-touch-callout:none; user-select:none; }
.lv-diskknapp.idag{ left:max(10px, calc(50% - var(--dw) / 2 + 6px)); }
.lv-diskknapp.inn{ right:max(10px, calc(50% - var(--dw) / 2 + 6px)); }
.lv-diskknapp .ic, .lv-diskknapp .ic svg{ display:block; width:20px; height:20px; }
.lv-diskknapp.on{ color:#f3f4f4; border-color:color-mix(in srgb, var(--lv-mf) 55%, transparent); box-shadow:0 0 16px -4px var(--lv-mf), inset 0 1px 0 rgba(255,255,255,.2); }
.lv-diskknapp:active .ic{ scale:.86; }
.lv-diskknapp[data-ik="tann"] .ic.spill svg{ animation:lv-snurr .8s cubic-bezier(.3,1.3,.5,1); }
@media (min-width:641px){ :root{ --lv-dv:104px; } .lv-disk{ --dw:min(100vw, 620px); --dD:calc(var(--dw) * 1.2); } }
@media (prefers-reduced-motion: reduce){ .lv-skive{ transition:none !important; } }

/* Bunnbaren: pillen i midten, pilene løse på hver side */
@media (max-width:640px){
  .lv-tab{ display:flex; justify-content:center; align-items:center; gap:12px; padding:0 0 calc(10px + max(0px, env(safe-area-inset-bottom) - 14px)); }
  .lv-tab ul{ flex:none; width:222px; padding:0 18px; height:54px; }
  .lv-tabbg{ height:calc(74px + max(0px, env(safe-area-inset-bottom) - 14px)); }
  #app{ padding-bottom:calc(88px + env(safe-area-inset-bottom)); }
  .lv-purrebunn{ --bunn:calc(64px + max(0px, env(safe-area-inset-bottom) - 14px)); margin-bottom:calc(-88px - env(safe-area-inset-bottom)); }
}
.lv-modpil, .lv-tab .lv-modpil{ position:relative; z-index:2; flex:none; width:46px; height:46px; border-radius:50%; display:grid; place-items:center; padding:0; cursor:pointer; pointer-events:auto;
  color:var(--lv-muted); background:linear-gradient(180deg,#3a4347,#262d31); border:1px solid rgba(255,255,255,.15);
  box-shadow:0 10px 20px -10px #000, inset 0 1px 0 rgba(255,255,255,.12); -webkit-tap-highlight-color:transparent; transition:color .2s, transform .15s; }
.lv-modpil svg{ width:22px; height:22px; }
.lv-modpil:active{ transform:scale(.9); color:#f3f4f4; }
.lv-tabind{ transition:opacity .25s; }
.lv-tabind.borte{ opacity:0; }
body.lv-farger .lv-tabind{ border-color:color-mix(in srgb, var(--lv-mf) 55%, transparent); box-shadow:inset 0 1px 0 rgba(255,255,255,.25), inset 0 -8px 14px -10px var(--lv-mf), 0 0 22px -3px color-mix(in srgb, var(--lv-mf) 85%, transparent); }
body.lv-farger .lv-tab li.on .ic{ filter:drop-shadow(0 0 6px var(--lv-mf)); }
/* nye ikoner glir inn fra siden modusen kom fra */
.lv-tab li.inn-h button{ animation:lv-tabinnh .5s cubic-bezier(.2,.8,.2,1) backwards; }
.lv-tab li.inn-v button{ animation:lv-tabinnv .5s cubic-bezier(.2,.8,.2,1) backwards; }
.lv-tab li:nth-of-type(2) button{ animation-delay:.05s; } .lv-tab li:nth-of-type(3) button{ animation-delay:.1s; }
@keyframes lv-tabinnh{ from{ opacity:0; transform:translateX(34px); } }
@keyframes lv-tabinnv{ from{ opacity:0; transform:translateX(-34px); } }
:is(.lv-tab li, .lv-nav .lv-b):is([data-ik="logg"], [data-ik="mal"], [data-ik="mappe"], [data-ik="notat"]) .ic.spill svg{ animation:lv-hopp .6s cubic-bezier(.3,1.6,.5,1); transform-origin:50% 100%; }

/* PC: pilene på hver side av de tre sidene i modusen */
.lv-root .lv-navrow > .lv-modpil{ width:50px; height:50px; align-self:center; border-radius:50%; padding:0; display:grid; place-items:center; }
.lv-root .lv-navrow > .lv-modpil svg{ width:20px; height:20px; }
.lv-root .lv-nav{ justify-content:center; }
body.lv-farger .lv-root .lv-nav .lv-b.on{ border-color:color-mix(in srgb, var(--lv-mf) 50%, transparent); box-shadow:0 8px 22px -12px var(--lv-mf), inset 0 -2px 0 color-mix(in srgb, var(--lv-mf) 55%, transparent); }

/* Figurene som løper forbi hverandre når modusen byttes */
.lv-passer{ position:fixed; left:0; bottom:calc(58px + max(0px, env(safe-area-inset-bottom) - 14px)); z-index:9100; pointer-events:none; will-change:transform; }
.lv-passer img{ display:block; width:100%; height:auto; }
.lv-passer.hopp img{ animation:lv-passhopp .3s ease-in-out infinite alternate; }
@keyframes lv-passhopp{ from{ transform:translateY(0) rotate(-4deg); } to{ transform:translateY(-14px) rotate(4deg); } }
@media (min-width:641px){ .lv-passer{ bottom:14px; } }

/* Nye sider som kommer i senere trinn */
.lv-kommer{ display:grid; grid-template-columns:150px minmax(0,1fr); gap:22px; align-items:center; }
.lv-kommerfig .lv-kar{ display:block; width:150px; }
.lv-kommerfig img{ display:block; width:100%; height:auto; animation:lv-kommerhopp 3.2s ease-in-out infinite; transform-origin:50% 100%; }
@keyframes lv-kommerhopp{ 0%, 100%{ transform:translateY(0) rotate(-2deg); } 50%{ transform:translateY(-8px) rotate(2deg); } }
.lv-kommerliste{ margin:14px 0 0; padding:0; list-style:none; display:flex; flex-direction:column; gap:8px; }
.lv-kommerliste li{ position:relative; padding-left:18px; color:var(--lv-ink); font-size:.92rem; }
.lv-kommerliste li::before{ content:""; position:absolute; left:2px; top:.6em; width:7px; height:7px; border-radius:50%; background:var(--lv-mf); box-shadow:0 0 8px var(--lv-mf); }
@media (max-width:640px){ .lv-kommer{ grid-template-columns:minmax(0,1fr); justify-items:start; } .lv-kommerfig .lv-kar{ width:120px; } }
@media (prefers-reduced-motion: reduce){ .lv-kommerfig img, .lv-passer.hopp img{ animation:none; } }
