:root{/* TopCamp-merkevare: furugrønn #115740 + løvgrønn #549d38 + varm krem #f9f4ea */
  --bg:#f6efe1;--panel:#fff;--surface:#fbf7ee;--line:#e8e1d0;--ink:#2e2e2e;--muted:#897f6c;
  --brand:#115740;--accent:#549d38;--accent-2:#46862e;--accent-bg:#e7f1dd;--accent-ink:#2f5f23;
  --green-bg:#e4f1da;--gold:#f2d955;--gold-bg:#fbf3da;--pop:#e62145;--red-bg:#f7e4e2;
  --r:14px;--r-sm:10px;
  --sh:0 1px 2px rgba(40,35,20,.04),0 5px 16px -6px rgba(40,35,20,.13);
  --sh-hover:0 5px 12px -3px rgba(40,35,20,.10),0 18px 34px -12px rgba(40,35,20,.20);
  --tr:170ms cubic-bezier(.2,.7,.3,1);--head:"Fredoka","Segoe UI",system-ui,sans-serif;}
*{box-sizing:border-box;margin:0;}
body{font-family:"Segoe UI",system-ui,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;
  background:radial-gradient(1200px 420px at 88% -14%,#e9f0df,transparent),var(--bg);}
h2,h3,.dash-tittel{font-family:var(--head);letter-spacing:-.01em;color:var(--brand);}
.merke b{font-family:var(--head);letter-spacing:-.01em;}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition:none!important;}}
header.top{position:sticky;top:0;z-index:5;background:rgba(249,244,234,.86);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:14px;padding:12px 22px;}
.logo{width:34px;height:34px;border-radius:11px;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;box-shadow:0 3px 8px rgba(17,87,64,.38);}
.merke b{font-size:15.5px;letter-spacing:-.01em;} .merke .sted{color:var(--brand);} header.top small{color:var(--muted);font-size:11.5px;display:block;letter-spacing:.02em;}
.tabs{display:flex;gap:6px;margin-left:10px;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none;}
.tabs::-webkit-scrollbar{display:none;}
.tab{padding:7px 14px;border:1px solid var(--line);background:#fff;border-radius:999px;cursor:pointer;font-size:13px;white-space:nowrap;transition:color var(--tr),background var(--tr),border-color var(--tr),box-shadow var(--tr);}
.tab:hover{border-color:#cfe6da;color:var(--accent-ink);}
.tab.active{background:var(--accent-bg);color:var(--accent-ink);border-color:#cfe6da;font-weight:650;box-shadow:var(--sh);}
.right{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted);}
.sok-boks{position:relative;margin-left:auto;}
#sok{width:230px;max-width:42vw;padding:7px 12px;border:1px solid var(--line);border-radius:999px;font-size:13px;background:#fff;font-family:inherit;}
#sok:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);}
.sok-treff{position:absolute;top:40px;right:0;width:340px;max-width:86vw;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(20,30,15,.16);max-height:64vh;overflow:auto;z-index:30;display:none;}
.sok-treff.open{display:block;}
.sok-rad{padding:9px 13px;border-bottom:1px solid #f1eee7;cursor:pointer;}
.sok-rad:last-child{border-bottom:none;} .sok-rad:hover{background:var(--surface);}
.sok-rad .muted{display:block;margin-top:2px;}
#conn{font-size:12px;padding:2px 9px;border-radius:999px;}
main{padding:20px 22px;max-width:1280px;margin:0 auto;}
h2{font-size:19px;margin-bottom:6px;}
.view{display:none;} .view.active{display:block;animation:fade var(--tr);}
@keyframes fade{from{opacity:0;transform:translateY(5px);}to{opacity:1;transform:none;}}
.verktoy{display:flex;gap:12px;align-items:center;margin:10px 0;flex-wrap:wrap;}
input,select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit;background:#fff;width:100%;}
label{font-size:12px;color:var(--muted);display:block;margin:9px 0 3px;}
.kartflate{background:linear-gradient(165deg,#eef4e6,#e6f0ea);border:1px solid var(--line);border-radius:var(--r);padding:16px;}
.omrade{margin-bottom:16px;} .omrade h3{font-size:13.5px;margin:0 0 8px;}
.rad{display:flex;flex-wrap:wrap;gap:6px;}
.plass{width:42px;height:38px;border-radius:9px;border:2px solid #cfcabf;display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-weight:750;font-size:13px;background:#fff;box-shadow:var(--sh);transition:transform var(--tr);}
.plass:hover{transform:translateY(-2px);}
.s-ledig{background:#bfe6a8;border-color:#82c25f;} .s-reservert{background:#fbd96b;border-color:#e0bd3f;} .s-opptatt{background:#f1a9a0;border-color:#db8378;}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin:8px 2px;}
.dot{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:4px;vertical-align:-1px;border:1px solid var(--line);}
.btn{padding:8px 15px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;cursor:pointer;font-size:13px;font-weight:550;
  transition:transform var(--tr),box-shadow var(--tr),background var(--tr),border-color var(--tr);}
.btn:hover{border-color:var(--accent);box-shadow:var(--sh);}
.btn:active{transform:translateY(1px);}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-bg);}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.btn.primary:hover{background:var(--accent-2);border-color:var(--accent-2);box-shadow:0 4px 12px -3px rgba(91,158,62,.5);}
.btn.warn{color:#a8392f;border-color:#e3b7b1;} .btn.warn:hover{background:var(--red-bg);border-color:#d6a39c;}
.btn.small{padding:4px 10px;font-size:12px;}
.overlay{display:none;position:fixed;inset:0;background:rgba(20,28,24,.42);z-index:20;align-items:center;justify-content:center;}
.overlay.open{display:flex;} .modal{background:#fff;border-radius:14px;padding:20px;width:440px;max-width:94vw;max-height:90vh;overflow:auto;box-shadow:0 12px 34px rgba(20,20,15,.18);}
.modal h3{margin:0 0 8px;} .row2{display:grid;grid-template-columns:1fr 1fr;gap:10px;} .actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap;}
.muted{color:var(--muted);font-size:12px;} .badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:650;}
.b-booket{background:#e6edf7;color:#2b5f9e;} .b-innsjekket{background:var(--green-bg);color:#1f6b4a;} .b-utsjekket{background:#ecebe6;color:var(--muted);}
table{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px;} td,th{padding:8px 10px;border-bottom:1px solid #eef0e8;text-align:left;}
th{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:650;}
tbody tr:last-child td{border-bottom:none;}
.folio{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px;margin-top:10px;}
.saldo{display:flex;justify-content:space-between;font-weight:750;font-size:16px;margin-top:8px;}
.kasse{display:grid;grid-template-columns:1fr 300px;gap:16px;}
.kasse-venstre{min-width:0;} .kassesok{margin-bottom:10px;}
.kat{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:14px 0 6px;font-weight:700;}
.prods{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:9px;}
.prod{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:11px 10px;cursor:pointer;box-shadow:var(--sh);}
.prod b{font-size:13px;} .prod .v{color:var(--muted);font-size:11px;margin-top:2px;}
.cart{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px;height:fit-content;}
.cline{display:flex;justify-content:space-between;font-size:13px;padding:5px 0;border-bottom:1px solid #f1eee7;}
.tot{font-size:20px;font-weight:750;text-align:right;margin:10px 0;}
.toast{position:fixed;bottom:18px;right:18px;background:var(--ink);color:#fff;padding:11px 16px;border-radius:9px;font-size:13px;opacity:0;transition:opacity var(--tr);z-index:40;}
.toast.show{opacity:1;} .kpis{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0;}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 18px;box-shadow:var(--sh);min-width:118px;
  transition:transform var(--tr),box-shadow var(--tr);}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--sh-hover);}
.kpi .v{font-family:var(--head);font-size:26px;font-weight:600;line-height:1.1;letter-spacing:-.02em;color:var(--brand);}
.kpi .l{font-size:11px;color:var(--muted);margin-top:3px;text-transform:uppercase;letter-spacing:.04em;}

/* Plasskart: ekte kartbilde med klikkbare status-pins */
.kalibrer-bar{display:flex;gap:10px;align-items:center;margin:8px 0;flex-wrap:wrap;}
.kartwrap{overflow:auto;max-height:80vh;border:1px solid var(--line);border-radius:var(--r);background:#e7eef0;box-shadow:var(--sh) inset;}
.kartbg{position:relative;width:2200px;max-width:none;margin:0 auto;line-height:0;}
.kartimg{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none;}
.pin{position:absolute;transform:translate(-50%,-50%);min-width:13px;height:13px;padding:0 2px;border-radius:999px;
  border:1.5px solid #fff;display:flex;align-items:center;justify-content:center;font-size:7.5px;font-weight:750;line-height:1;
  color:#fff;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.45);transition:transform var(--tr);}
.pin:hover{transform:translate(-50%,-50%) scale(1.9);z-index:3;}
.pin.s-ledig{background:#3a9c6b;} .pin.s-reservert{background:#d39e00;color:#3a2e00;} .pin.s-opptatt{background:#c0392b;}
.kartwrap.kalibrer{outline:2px dashed var(--accent);outline-offset:-2px;}
.kartwrap.kalibrer .kartimg{opacity:.85;}
.kartwrap.kalibrer .pin{cursor:grab;} .kartwrap.kalibrer .pin:active{cursor:grabbing;}

/* Dashbord: dagens flyt */
.dash-kolonner{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:16px;}
@media(max-width:820px){.dash-kolonner{grid-template-columns:1fr;}}
.dash-tittel{font-size:14px;margin:0 0 8px;padding-left:13px;position:relative;}
.dash-tittel::before{content:"";position:absolute;left:0;top:.2em;bottom:.2em;width:4px;border-radius:3px;
  background:linear-gradient(var(--accent),var(--brand));}
.dash-kolonner>div,.dash-boks{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;box-shadow:var(--sh);}
.dash-boks{margin-top:16px;}
.vis-alle{margin-top:8px;color:var(--accent);font-weight:650;font-size:13px;cursor:pointer;display:inline-block;}
.vis-alle:hover{text-decoration:underline;}

/* Onboarding: sjekkliste + fremdrift */
.onb{background:var(--accent-bg);border:1px solid #cfe6da;border-radius:12px;padding:14px 16px;margin-bottom:16px;max-width:560px;}
.onb-topp{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.onb-bar{height:8px;background:#fff;border-radius:999px;overflow:hidden;border:1px solid #cfe6da;}
.onb-fyll{height:100%;background:var(--accent);transition:width .3s;}
.onb-liste{margin-top:10px;display:flex;flex-direction:column;gap:8px;}
.onb-rad{display:flex;align-items:flex-start;gap:10px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 10px;}
.onb-rad>div{flex:1;}
.onb-ikon{width:20px;height:20px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border:1.5px solid var(--muted);color:var(--muted);flex:none;}
.onb-ikon.ok{background:var(--accent);border-color:var(--accent);color:#fff;}

/* Notater: tilbakemeldingsskjema */
.notat-tekst{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit;background:#fff;resize:vertical;}
.notat-tekst:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);}

/* Kladd-banner: påbegynt gjesteinfo som kan gjenbrukes */
.kladd-banner{background:#fbf3e0;border:1px solid #e6cf8f;border-radius:8px;padding:8px 10px;margin:0 0 10px;font-size:13px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.kladd-banner a{color:#a8392f;text-decoration:none;}
.kladd-banner a:hover{text-decoration:underline;}

/* Kalender: ren dato-velger med opptatt/hold-farger */
.kal{margin:6px 0 4px;}
.kal-topp{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.kal-nav{border:1px solid var(--line);background:#fff;border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:16px;line-height:1;}
.kal-nav:hover{border-color:var(--accent);}
.kal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.kal-ukedag{text-align:center;font-size:11px;color:var(--muted);font-weight:600;}
.kal-dag{text-align:center;padding:8px 0;border-radius:8px;font-size:13px;cursor:pointer;border:1px solid transparent;background:var(--surface);}
.kal-dag:hover{border-color:var(--accent);}
.kal-av{color:#c9c9c2;background:transparent;cursor:default;}.kal-av:hover{border-color:transparent;}
.kal-opptatt{background:#f1a9a0;color:#7a2018;cursor:default;}.kal-dag.kal-opptatt:hover{border-color:transparent;}
.kal-hold{background:#fbd96b;color:#5a4500;}
.kal-valgt{background:var(--accent);color:#fff;border-color:var(--accent);}
.kal-mellom{background:var(--accent-bg);}
.kal-info{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:var(--muted);}
.kal-info b{margin-left:auto;color:var(--ink);}
.kal-pp{display:inline-block;width:11px;height:11px;border-radius:3px;vertical-align:-1px;margin-right:4px;padding:0;}
.modal-liste{max-height:62vh;overflow:auto;margin-top:6px;}

/* Meldinger: chat-bobler i resepsjonens innboks */
.mb-traad{display:flex;flex-direction:column;gap:7px;max-height:48vh;overflow-y:auto;padding:6px 2px;}
.mb{max-width:80%;padding:8px 12px;border-radius:14px;font-size:13px;line-height:1.4;word-break:break-word;}
.mb-gjest{align-self:flex-start;background:var(--surface);border:1px solid var(--line);}
.mb-res{align-self:flex-end;background:var(--accent);color:#fff;}
.mb-navn{display:block;font-size:10.5px;font-weight:700;opacity:.85;margin-bottom:2px;}
.mb-tid{display:block;font-size:10px;opacity:.6;margin-top:3px;text-align:right;}

/* Innlogging + intro-animasjon: to halvdeler av EN logo flyr inn (TOP nede-venstre,
   CAMP oppe-venstre) og smelter saamlost sammen, deretter stiger innloggingskortet. */
.login-skjerm{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;z-index:100;overflow:hidden;
  background:radial-gradient(circle at 50% 18%,#fbf6e9 0%,#f4ecd8 45%,#efe4c8 100%);}
.tc-logo{position:relative;width:250px;max-width:62vw;aspect-ratio:500/470;margin-bottom:22px;
  filter:drop-shadow(0 14px 22px rgba(47,107,24,.28));animation:tcPulse .5s cubic-bezier(.34,1.56,.64,1) 1.3s both;}
.tc-half{position:absolute;inset:0;opacity:0;}
.tc-half svg{width:100%;height:100%;display:block;}
.tc-left{clip-path:inset(0 49.4% 0 0);animation:tcLeft .85s cubic-bezier(.22,1,.36,1) .15s forwards;}
.tc-right{clip-path:inset(0 0 0 49.4%);animation:tcRight .85s cubic-bezier(.22,1,.36,1) .55s forwards;}
.lt{fill:#fff;font-family:"Fredoka","Segoe UI",system-ui,sans-serif;font-weight:600;font-size:58px;letter-spacing:1px;}
@keyframes tcLeft{from{transform:translate(-150px,120px) rotate(-7deg);opacity:0;}to{transform:translate(0,0) rotate(0);opacity:1;}}
@keyframes tcRight{from{transform:translate(-130px,-150px) rotate(7deg);opacity:0;}to{transform:translate(0,0) rotate(0);opacity:1;}}
@keyframes tcPulse{0%{transform:scale(1);}50%{transform:scale(1.06);}100%{transform:scale(1);}}
.login-boks{background:#fff;border-radius:18px;padding:26px 26px 24px;width:330px;max-width:90vw;
  border:1px solid rgba(76,162,45,.22);box-shadow:0 24px 60px -22px rgba(47,107,24,.45);opacity:0;animation:boksInn .7s cubic-bezier(.22,1,.36,1) 1.6s both;}
.login-boks label{font-size:12px;font-weight:600;color:#5a6650;display:block;margin:12px 0 5px;letter-spacing:.2px;}
.login-boks label:first-of-type{margin-top:0;}
.login-boks input{padding:12px 14px;border:1.5px solid #e0dcc8;border-radius:11px;font-size:15px;background:#fffdf6;}
.login-boks input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-bg);}
.li-feil{color:#c0392b;font-size:13px;font-weight:600;min-height:16px;margin-top:8px;text-align:center;}
@keyframes boksInn{from{opacity:0;transform:translateY(28px) scale(.97);}to{opacity:1;transform:none;}}
.rad-rod>td{background:#fbecea;} .rad-rod>td:first-child{box-shadow:inset 3px 0 0 #c0392b;}
.flagg-rod{color:#a8392f;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.02em;}
.avvik{background:#fbeee9;border:1px solid #e3b7b1;border-radius:10px;padding:12px 14px;margin:12px 0;}
.avvik>b{color:#a8392f;display:block;margin-bottom:4px;}
tr.klikk{cursor:pointer;} tr.klikk:hover{background:var(--surface);}
.dash-ledig{margin:2px 2px 8px;font-size:12.5px;}
.skyld-varsel{background:#fbf3e0;border:1px solid #e6cf8f;border-radius:10px;padding:12px 14px;margin:12px 0;}
.skyld-varsel>b{color:#8a5a00;display:block;margin-bottom:6px;}
