:root{--bg: #E9ECE7;--surface: #FFFFFF;--soft: #F4F6F2;--ink: #17202E;--muted: #5B6474;--line: #D9DED6;--accent: #E2A00A;--accent-ink: #5A3D00;--ferien: #FBEFC9;--feiertag: #C2362B;--ok: #2E7D4F;--warn: #A8670C;--bad: #B42318;--display: "Bricolage Grotesque", "Avenir Next", system-ui, sans-serif;--body: "Figtree", -apple-system, "Segoe UI", system-ui, sans-serif;color-scheme:light}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.4;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{height:100%;max-width:480px;margin:0 auto;display:flex;flex-direction:column;background:var(--soft);position:relative;overflow:hidden;box-shadow:0 0 0 1px var(--line)}.top{display:flex;align-items:center;gap:8px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;background:var(--surface);border-bottom:1px solid var(--line)}.top h1{font-family:var(--display);font-size:19px;margin:0;letter-spacing:-.02em;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:14px;border:0;flex:none}.bell{position:relative;border:0;background:var(--soft);width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none}.bell .badge{position:absolute;top:-2px;right:-2px;background:var(--bad);color:#fff;font-size:10px;font-weight:700;min-width:17px;height:17px;border-radius:9px;display:grid;place-items:center;padding:0 4px}main{flex:1;overflow-y:auto;padding:14px 16px 28px;display:flex;flex-direction:column;gap:14px;-webkit-overflow-scrolling:touch}.tabs{display:flex;background:var(--surface);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}.tabs button{flex:1;border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;font-weight:600;color:var(--muted);padding:4px}.tabs button[aria-current=page]{color:var(--ink)}.tabs button[aria-current=page] svg{stroke:var(--accent)}.tabs svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}h2{font-family:var(--display);font-size:20px;margin:0;letter-spacing:-.01em;text-wrap:balance}h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:6px 0 0;font-weight:700}p{margin:0}.row{display:flex;align-items:center;gap:8px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:12px}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 14px}.btn{border:0;border-radius:10px;padding:10px 14px;font-weight:600;background:var(--ink);color:#fff;font-size:14px}.btn.alt{background:var(--surface);color:var(--ink);border:1px solid var(--line)}.btn.ok{background:var(--ok)}.btn.bad{background:var(--surface);color:var(--bad);border:1px solid #E7C2BE}.btn.accent{background:var(--accent);color:var(--accent-ink)}.btn.small{padding:6px 10px;font-size:13px;border-radius:8px}.btn.block{width:100%;padding:13px;font-size:16px}.btn:disabled{opacity:.45;cursor:not-allowed}.linkbtn{border:0;background:none;color:#1f7a8c;font-weight:600;padding:0;text-decoration:underline}.pill{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}.pill.ok{background:#ddf0e3;color:var(--ok)}.pill.wait{background:#fcebc8;color:var(--warn)}.pill.bad{background:#f8deda;color:var(--bad)}.pill.chg{background:#e5e2f7;color:#4b3fa0}.pill.grey{background:var(--soft);color:var(--muted);border:1px solid var(--line)}.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:11px}.err{color:var(--bad);font-size:13px}.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted)}.sw{width:12px;height:12px;border-radius:3px;display:inline-block}.legend{display:flex;flex-wrap:wrap;gap:6px 12px}.year{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mini{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 8px 6px;text-align:left}.mini .mn{font-weight:700;font-size:13px;margin-bottom:4px}.grid7{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.wd{font-size:9px;color:var(--muted);text-align:center;font-weight:600}.d{aspect-ratio:1;display:grid;place-items:center;font-size:10px;border-radius:4px;font-variant-numeric:tabular-nums;position:relative;border:0;padding:0;background-color:transparent}.d.we{color:#8a92a0}.d.fer{background-color:var(--ferien)}.d.ft{color:var(--feiertag);font-weight:800}.d.today{box-shadow:inset 0 0 0 1.5px var(--ink)}.d.vc{color:#fff;font-weight:700}.d.vp{color:var(--ink);font-weight:700}.d.chg:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:4px;border:1.5px dashed #4B3FA0}.month{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.month .d{font-size:14px;border-radius:8px}.month .wd{font-size:11px}.vcard{display:flex;gap:10px;align-items:stretch;text-align:left;width:100%;border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:10px 12px}.vcard .bar{width:5px;border-radius:3px;flex:none}.list{display:flex;flex-direction:column;gap:8px}.empty{font-size:13px;color:var(--muted);padding:10px 12px;border:1px dashed var(--line);border-radius:12px}.note{background:#eef3f8;border-radius:10px;padding:8px 10px;font-size:13px}.note.chg{background:#eeecfa}.note.warn{background:#fcf1d9}.kid{font-size:11px;font-weight:700;color:#fff;border-radius:6px;padding:1px 6px}.scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f141e6b;display:flex;align-items:flex-end;z-index:20}.sheet{background:var(--surface);width:100%;max-height:92%;overflow-y:auto;border-radius:18px 18px 0 0;padding:8px 16px calc(18px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px}.grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:2px auto 4px;flex:none}.sheethead{display:flex;align-items:flex-start;gap:8px}.sheethead h2{flex:1}.x{border:0;background:var(--soft);border-radius:50%;width:32px;height:32px;font-size:16px;line-height:1;flex:none}label.f,.f{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}input[type=text],input[type=email],input[type=password],input[type=date],input[type=time],textarea,select{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--surface);font-weight:400;font-size:16px;width:100%;min-height:44px}textarea{min-height:70px;resize:vertical}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.segl{display:flex;background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}.segl button{flex:1;border:0;background:transparent;border-radius:8px;padding:8px 6px;font-weight:600;font-size:13px}.segl button[aria-pressed=true]{background:var(--surface);box-shadow:0 1px 2px #0000001f}.toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px}.toggle input{width:46px;height:28px;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--line);border-radius:14px;position:relative;transition:background .15s;flex:none;margin:0}.toggle input:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 2px #0003}.toggle input:checked{background:var(--ok)}.toggle input:checked:after{left:21px}.hist{display:flex;flex-direction:column;gap:6px;border-left:2px solid var(--line);padding-left:10px;font-size:13px}.hist time{color:var(--muted);font-size:11px;display:block}.toast{position:absolute;left:10px;right:10px;top:calc(10px + env(safe-area-inset-top));z-index:40;background:#fafafaf7;border-radius:16px;box-shadow:0 10px 30px #00000040;padding:12px 14px;font-size:14px;display:flex;gap:10px;align-items:center}.tcard{display:flex;flex-direction:column;gap:6px;text-align:left;width:100%;border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:11px 13px}.att{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.thumb{border:1px solid var(--line);border-radius:10px;background:var(--soft);aspect-ratio:3/4;overflow:hidden;display:flex;flex-direction:column;padding:0;text-align:left;color:inherit;text-decoration:none}.thumb .pv{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#fff;font-weight:800;color:var(--bad);font-size:18px}.thumb .pv img{width:100%;height:100%;object-fit:cover}.thumb .nm{font-size:10px;padding:4px 6px;border-top:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--surface)}.cm{display:flex;flex-direction:column;gap:8px}.bub{max-width:85%;padding:8px 11px;border-radius:14px;font-size:14px;background:var(--soft);white-space:pre-wrap}.bub.me{align-self:flex-end;background:#e1eef1}.bub .w{font-size:11px;font-weight:700;color:var(--muted)}.viewer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:50;background:#0a0e14f0;display:flex;flex-direction:column;padding:calc(14px + env(safe-area-inset-top)) 14px 14px;gap:10px;color:#fff}.viewer .body{flex:1;display:flex;align-items:center;justify-content:center;overflow:auto}.viewer img{max-width:100%;max-height:100%;border-radius:8px}.simple{display:flex;flex-direction:column;gap:12px;padding:18px;border-width:2px}.simple .q{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.simple .big{font-size:21px;line-height:1.35}.bigbtns{display:grid;grid-template-columns:1fr 1fr;gap:10px}.bigbtns .btn{padding:16px;font-size:18px;border-radius:12px}.auth{min-height:100%;display:flex;flex-direction:column;justify-content:center;gap:16px;padding:24px 20px calc(24px + env(safe-area-inset-bottom));max-width:440px;margin:0 auto}.brand{display:flex;align-items:center;gap:10px}.brand h1{font-family:var(--display);font-size:28px;margin:0;letter-spacing:-.02em}.code{font-family:ui-monospace,Menlo,monospace;font-size:18px;letter-spacing:.12em;font-weight:700}.colors{display:flex;gap:8px;flex-wrap:wrap}.colors button{width:32px;height:32px;border-radius:50%;border:3px solid transparent}.colors button[aria-pressed=true]{border-color:var(--ink)}.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
