:root{--bg-body: #f8fafc;--bg-card: #ffffff;--bg-glass-header: rgba(255, 255, 255, .88);--text-main: #0f172a;--text-muted: #64748b;--border: rgba(226, 232, 240, .85);--glass-border: rgba(226, 232, 240, .9);--glass-border-subtle: rgba(0, 0, 0, .06);--primary: #2563eb;--primary-hover: #1d4ed8;--input-bg: #f8fafc;--glass-shadow: 0 10px 30px rgba(148, 163, 184, .18), 0 2px 6px rgba(0, 0, 0, .03);--glass-specular: inset 0 1px 1px 0 rgba(255, 255, 255, .95);--glass-blur: blur(20px) saturate(180%);--color-dag: #eab308;--color-kveld: #f97316;--color-natt: #334155;--color-perm: #10b981;--color-ip: #3b82f6;--color-kurs: #8b5cf6;--cal-bg: rgba(0, 0, 0, .03);--cal-text: #1e293b;--bg-row-dag: rgba(254, 240, 138, .45);--bg-row-kveld: rgba(254, 215, 170, .45);--bg-row-natt: rgba(226, 232, 240, .55);--bg-row-perm: rgba(209, 250, 229, .45);--bg-row-trening: rgba(219, 234, 254, .45);--bg-row-kurs: rgba(237, 233, 254, .45)}[data-theme=dark]{--bg-body: #080c16;--bg-card: #151d2e;--bg-glass-header: rgba(21, 29, 46, .9);--text-main: #f8fafc;--text-muted: #94a3b8;--border: rgba(255, 255, 255, .1);--glass-border: rgba(255, 255, 255, .12);--glass-border-subtle: rgba(255, 255, 255, .05);--primary: #38bdf8;--primary-hover: #0ea5e9;--input-bg: #0f172a;--glass-shadow: 0 16px 40px rgba(0, 0, 0, .45);--glass-specular: inset 0 1px 1px 0 rgba(255, 255, 255, .15);--glass-blur: blur(20px) saturate(180%);--color-dag: #facc15;--color-kveld: #fb923c;--color-natt: #6366f1;--color-perm: #10b981;--color-ip: #60a5fa;--color-kurs: #a78bfa;--cal-bg: rgba(255, 255, 255, .05);--cal-text: #cbd5e1;--bg-row-dag: rgba(234, 179, 8, .16);--bg-row-kveld: rgba(249, 115, 22, .16);--bg-row-natt: rgba(99, 102, 241, .16);--bg-row-perm: rgba(16, 185, 129, .16);--bg-row-trening: rgba(59, 130, 246, .16);--bg-row-kurs: rgba(139, 92, 246, .16)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Inter,Segoe UI,Roboto,sans-serif;background-color:var(--bg-body);background-image:radial-gradient(at 0% 0%,rgba(56,189,248,.1) 0px,transparent 50%),radial-gradient(at 100% 0%,rgba(99,102,241,.12) 0px,transparent 50%),radial-gradient(at 50% 100%,rgba(139,92,246,.08) 0px,transparent 50%);color:var(--text-main);margin:0;padding:18px 10px;display:flex;flex-direction:column;align-items:center;min-height:100vh;transition:background-color .25s ease,color .25s ease;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;display:flex;flex-direction:column;align-items:center}.container{width:100%;max-width:600px;background:var(--bg-card);border:1px solid var(--glass-border);border-radius:24px;box-shadow:var(--glass-shadow),var(--glass-specular);padding:24px 20px;position:relative;margin-bottom:30px}@media(max-width:480px){body{padding:8px 4px}.container{padding:18px 12px;border-radius:18px}.header-row{padding:16px 12px 12px!important;margin:-18px -12px 16px!important;border-top-left-radius:18px!important;border-top-right-radius:18px!important}}.header-row{display:flex;justify-content:space-between;align-items:center;margin:-24px -20px 22px;padding:20px 20px 14px;border-bottom:1px solid var(--glass-border-subtle);position:sticky;top:0;background:var(--bg-glass-header);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);z-index:100;border-top-left-radius:24px;border-top-right-radius:24px}.header-content h1{font-size:1.35rem;margin:0;font-weight:700;letter-spacing:-.5px}.app-logo{cursor:pointer;transition:opacity .2s,transform .15s;-webkit-user-select:none;user-select:none}.app-logo:hover{opacity:.85}.app-logo:active{transform:scale(.96)}.header-actions{display:flex;align-items:center;gap:8px}.icon-btn{background:#ffffff14;border:1px solid var(--glass-border-subtle);font-size:1.1rem;cursor:pointer;color:var(--text-muted);width:38px;height:38px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px #0000000a;transition:all .2s cubic-bezier(.34,1.56,.64,1)}.icon-btn:hover{color:var(--text-main);background:#ffffff2e;transform:scale(1.08)}.icon-btn:active{transform:scale(.92)}label{display:block;margin-bottom:7px;font-weight:600;font-size:.88rem;letter-spacing:-.2px}textarea,input[type=text],input[type=time],input[type=date],select{width:100%;padding:12px 14px;background-color:var(--input-bg);border:1px solid var(--border);border-radius:14px;color:var(--text-main);font-family:inherit;font-size:.92rem;resize:vertical;outline:none;margin-bottom:14px;box-shadow:inset 0 1px 2px #0000000f;transition:border-color .2s,box-shadow .2s}textarea{height:125px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}textarea:focus,input:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3.5px #38bdf840,inset 0 1px 2px #0000000f}.btn{width:100%;padding:12px 16px;border:none;border-radius:13px;font-size:.95rem;font-weight:600;cursor:pointer;margin-bottom:10px;display:flex;justify-content:center;align-items:center;gap:8px;transition:all .2s cubic-bezier(.34,1.56,.64,1)}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:1px solid rgba(255,255,255,.25);box-shadow:0 4px 14px #2563eb4d,inset 0 1px 1px #ffffff59}.btn-primary:hover{background:linear-gradient(135deg,#60a5fa,#3b82f6);transform:translateY(-1px);box-shadow:0 6px 18px #2563eb66,inset 0 1px 1px #fff6}.btn-download{background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:1px solid rgba(255,255,255,.25);box-shadow:0 4px 14px #10b9814d,inset 0 1px 1px #ffffff59}.btn-download:hover{background:linear-gradient(135deg,#34d399,#10b981);transform:translateY(-1px);box-shadow:0 6px 18px #10b98166,inset 0 1px 1px #fff6}.btn-outline{background:#ffffff12;border:1px solid var(--glass-border);color:var(--text-main);box-shadow:0 1px 4px #0000000a}.btn-outline:hover{background:#ffffff24;border-color:var(--primary);transform:translateY(-1px)}.segmented-control{display:flex;gap:3px;background:#00000014;padding:3px;border-radius:9999px;border:1px solid var(--glass-border-subtle)}[data-theme=dark] .segmented-control{background:#00000047}.segmented-btn{background:transparent;border:none;color:var(--text-muted);padding:6px 14px;border-radius:9999px;font-size:.82rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all .2s cubic-bezier(.34,1.56,.64,1)}.segmented-btn:hover{color:var(--text-main)}.segmented-btn.active{background:#fffffff2;color:#0f172a;box-shadow:0 2px 8px #00000024}[data-theme=dark] .segmented-btn.active{background:#ffffff2e;color:#fff;box-shadow:0 2px 8px #00000040,inset 0 1px 1px #fff3}details{background-color:var(--input-bg);border-radius:14px;margin-bottom:12px;border:1px solid var(--glass-border-subtle);overflow:hidden}summary{padding:12px 14px;font-weight:600;cursor:pointer;display:flex;justify-content:space-between;align-items:center;color:var(--text-main);list-style:none;font-size:.9rem}summary::-webkit-details-marker{display:none}summary:after{content:"";width:7px;height:7px;border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);transform:rotate(45deg);transition:transform .2s;margin-right:5px}details[open] summary:after{transform:rotate(-135deg);margin-top:4px}.details-content{padding:12px 14px;border-top:1px solid var(--border);font-size:.88rem;background-color:var(--bg-card);line-height:1.6}table{width:100%;border-collapse:collapse;font-size:.85rem;table-layout:fixed}th{text-align:left;font-size:.72rem;text-transform:uppercase;color:var(--text-muted);padding:7px 5px;border-bottom:1.5px solid var(--border);font-weight:700;letter-spacing:.4px}td{padding:9px 5px;border-bottom:1px solid var(--border);vertical-align:middle;overflow:hidden;text-overflow:ellipsis}td:last-child{overflow:visible}.row-dag{background-color:var(--bg-row-dag)}.row-kveld{background-color:var(--bg-row-kveld)}.row-natt{background-color:var(--bg-row-natt)}.row-perm{background-color:var(--bg-row-perm)}.row-trening{background-color:var(--bg-row-trening)}.row-kurs{background-color:var(--bg-row-kurs)}.edit-btn{background:none;border:none;cursor:pointer;font-size:.95rem;color:var(--text-main);padding:4px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;transition:transform .15s,color .15s,background-color .15s}.edit-btn:hover{transform:scale(1.15);background-color:#ffffff1a}.cal-grid{display:grid;grid-template-columns:24px repeat(7,1fr);gap:4px;margin-bottom:18px;text-align:center}.cal-day-header{font-size:.72rem;font-weight:700;color:var(--text-muted);padding-bottom:6px;text-transform:uppercase;letter-spacing:.3px}.cal-day{aspect-ratio:1;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--cal-bg);border:1px solid var(--glass-border-subtle);border-radius:11px;font-size:.82rem;font-weight:600;color:var(--cal-text);position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;transition:transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .18s ease}.cal-day:hover{transform:scale(1.06);box-shadow:0 3px 8px #0000001a}.cal-day:active{transform:scale(.95)}.cal-day.has-vakt{font-weight:700}.dot-dag{background-color:var(--color-dag);color:#000!important}.dot-kveld{background-color:var(--color-kveld);color:#fff!important}.dot-natt{background-color:var(--color-natt);color:#fff!important}.dot-perm{background-color:var(--color-perm);color:#fff!important}.dot-ip{background-color:var(--color-ip);color:#fff!important}.dot-kurs{background-color:var(--color-kurs);color:#fff!important}.is-today{box-shadow:0 0 0 2px #ef4444,0 0 10px #ef444473!important;font-weight:900!important}.selected-day{box-shadow:0 0 0 2px var(--bg-card),0 0 0 4px var(--primary),0 8px 18px #0000004d!important;transform:scale(1.12);z-index:10}.cal-month-label{font-size:1rem;font-weight:700;margin:20px 0 10px;text-align:left;color:var(--text-main);text-transform:capitalize;letter-spacing:-.3px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:15px}.stat-card{background-color:var(--input-bg);border:1px solid var(--glass-border-subtle);border-radius:14px;padding:14px;text-align:center;box-shadow:0 1px 4px #00000008}.stat-val{font-size:1.5rem;font-weight:700;display:block;letter-spacing:-.5px}.stat-lbl{font-size:.72rem;font-weight:700;text-transform:uppercase;color:var(--text-muted);margin-top:4px;display:block;letter-spacing:.4px}.progress-bar{display:flex;height:16px;border-radius:8px;overflow:hidden;width:100%;background-color:var(--border);margin-top:6px}.bar-segment{height:100%}.bg-dag{background-color:var(--color-dag)}.bg-kveld{background-color:var(--color-kveld)}.bg-natt{background-color:var(--color-natt)}.modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#0000008c;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:2000;display:flex;align-items:center;justify-content:center;padding:14px}.modal{background:var(--bg-card);border:1px solid var(--glass-border);box-shadow:0 20px 48px #0006,var(--glass-specular);width:100%;max-width:480px;max-height:85vh;overflow-y:auto;padding:24px 20px;border-radius:22px;position:relative;animation:modalPop .22s cubic-bezier(.34,1.56,.64,1)}@keyframes modalPop{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@media(max-width:480px){.modal{padding:20px 16px;border-radius:18px}}.modal-close{position:absolute;top:14px;right:14px;background:#ffffff14;border:1px solid var(--glass-border-subtle);width:32px;height:32px;cursor:pointer;color:var(--text-muted);display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s ease}.modal-close:hover{background-color:#fff3;color:var(--text-main);transform:scale(1.08)}.day-popup{position:fixed;bottom:0;left:0;width:100vw;background:var(--bg-card);border:1px solid var(--glass-border);border-bottom:none;border-radius:24px 24px 0 0;box-shadow:0 -10px 35px #00000059,var(--glass-specular);padding:22px 18px 28px;transform:translateY(110%);transition:transform .28s cubic-bezier(.16,1,.3,1);z-index:2000;pointer-events:none}.day-popup.active{transform:translateY(0);pointer-events:auto}@media(min-width:600px){.day-popup{left:50%;width:480px;margin-left:-240px;border-radius:24px 24px 0 0}}@media print{body{background:#fff!important;color:#000!important;padding:0!important}.container{box-shadow:none!important;border:none!important;padding:0!important;max-width:100%!important}.print-controls{display:none!important}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}}.spin-animate{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
