:root{--bg: #f4f1f2;--surface: #ffffff;--surface-2: #f8f5f6;--text: #1d1a1c;--muted: #7a7176;--line: #e6dfe2;--accent: #b84d77;--accent-soft: #f6e3eb;--on-accent: #ffffff;--ok: #2f8a57;--ok-soft: #e1f2e8;--warn: #b7701a;--warn-soft: #fbefdc;--bad: #c43d3d;--bad-soft: #f9e2e2;--shadow: 0 1px 2px rgba(40, 20, 30, .06), 0 4px 16px rgba(40, 20, 30, .05);--radius: 16px;--tab-h: 64px;--series-1: #2a78d6;--series-2: #eb6834;--series-3: #1baf7a;--series-4: #eda100;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #121012;--surface: #1d1a1c;--surface-2: #262225;--text: #f2edef;--muted: #a79da2;--line: #342e32;--accent: #e27aa3;--accent-soft: #3a2230;--on-accent: #1a0e14;--ok: #5cc48a;--ok-soft: #1b3326;--warn: #e6a550;--warn-soft: #3a2c17;--bad: #ef7272;--bad-soft: #3d1f1f;--shadow: none;--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--series-4: #c98500;color-scheme:dark}}:root[data-theme=dark]{--bg: #121012;--surface: #1d1a1c;--surface-2: #262225;--text: #f2edef;--muted: #a79da2;--line: #342e32;--accent: #e27aa3;--accent-soft: #3a2230;--on-accent: #1a0e14;--ok: #5cc48a;--ok-soft: #1b3326;--warn: #e6a550;--warn-soft: #3a2c17;--bad: #ef7272;--bad-soft: #3d1f1f;--shadow: none;--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--series-4: #c98500;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:var(--text)}body{font:16px/1.4 -apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0;line-height:1.2}.app{min-height:100dvh}.screen{max-width:640px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 12px) 16px calc(var(--tab-h) + env(safe-area-inset-bottom) + 24px)}.topbar{display:flex;align-items:center;gap:8px;margin:4px 0 14px;min-height:40px}.topbar h1{font-size:28px;font-weight:700;flex:1;letter-spacing:-.02em}.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:22px 4px 8px;font-weight:600}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;margin-bottom:10px}.card.tight{padding:0;overflow:hidden}.card.warn{background:var(--warn-soft);box-shadow:none}.card.accent{background:var(--accent-soft);box-shadow:none}.card.ok{background:var(--ok-soft);box-shadow:none}.card-title{font-weight:600;margin-bottom:4px}.list>.row+.row{border-top:1px solid var(--line)}.row{display:flex;align-items:center;gap:12px;padding:13px 16px;min-height:52px;background:none;border:0;width:100%;text-align:left;cursor:pointer}.row .grow{flex:1;min-width:0}.row .sub{color:var(--muted);font-size:14px}.row .chev{color:var(--muted)}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot{width:10px;height:10px;border-radius:50%;flex:none}.bar{width:4px;align-self:stretch;border-radius:4px;flex:none}.muted{color:var(--muted)}.small{font-size:14px}.tiny{font-size:12px}.bold{font-weight:600}.num{font-variant-numeric:tabular-nums}.right{text-align:right}.center{text-align:center}.mt{margin-top:12px}.mb{margin-bottom:12px}.hstack{display:flex;align-items:center;gap:8px}.hstack.wrap{flex-wrap:wrap}.spread{display:flex;align-items:center;justify-content:space-between;gap:8px}.vstack{display:flex;flex-direction:column;gap:8px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pre{white-space:pre-wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:0 18px;border-radius:14px;border:0;background:var(--surface-2);color:var(--text);font-weight:600;cursor:pointer}.btn.primary{background:var(--accent);color:var(--on-accent)}.btn.soft{background:var(--accent-soft);color:var(--accent)}.btn.ok{background:var(--ok);color:#fff}.btn.danger{background:var(--bad-soft);color:var(--bad)}.btn.ghost{background:none;color:var(--accent);padding:0 8px;min-height:40px}.btn.block{width:100%}.btn.sm{min-height:38px;padding:0 12px;font-size:15px;border-radius:12px}.btn:disabled{opacity:.45}.btn:active{transform:scale(.98)}.icon-btn{width:40px;height:40px;border-radius:50%;border:0;background:var(--accent);color:var(--on-accent);font-size:26px;line-height:1;display:grid;place-items:center;cursor:pointer}.field{display:block;margin-bottom:12px}.field>span{display:block;font-size:13px;color:var(--muted);margin:0 4px 5px;font-weight:500}.input,select.input,textarea.input{width:100%;min-height:48px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-size:17px;outline:none}textarea.input{min-height:96px;resize:vertical;line-height:1.4}.input:focus{border-color:var(--accent)}.check{display:flex;align-items:center;gap:10px;min-height:44px}.check input{width:22px;height:22px;accent-color:var(--accent)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 14px;font-size:15px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.seg{display:flex;background:var(--surface-2);border-radius:12px;padding:3px;gap:3px}.seg button{flex:1;border:0;background:none;border-radius:10px;min-height:36px;font-weight:600;cursor:pointer;color:var(--muted)}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.badge{display:inline-block;font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--muted)}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.accent{background:var(--accent-soft);color:var(--accent)}.stat{background:var(--surface);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow)}.stat .label{font-size:13px;color:var(--muted)}.stat .value{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.progress{height:8px;border-radius:8px;background:var(--surface-2);overflow:hidden}.progress>div{height:100%;background:var(--accent);border-radius:8px}.progress.warn>div{background:var(--warn)}.progress.bad>div{background:var(--bad)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);display:flex;justify-content:center}.tabbar-inner{display:flex;width:100%;max-width:640px}.tab{flex:1;height:var(--tab-h);border:0;background:none;color:var(--muted);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:500}.tab svg{width:26px;height:26px}.tab.on{color:var(--accent)}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:40;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s ease-out}.sheet{background:var(--bg);width:100%;max-width:640px;max-height:92dvh;overflow-y:auto;border-radius:20px 20px 0 0;padding:8px 16px calc(env(safe-area-inset-bottom) + 20px);animation:up .2s ease-out;-webkit-overflow-scrolling:touch}.sheet-head{position:sticky;top:-8px;background:var(--bg);z-index:2;display:flex;align-items:center;gap:8px;padding:12px 0 10px;margin-top:-8px}.sheet-head h2{flex:1;font-size:20px}.grabber{width:40px;height:5px;border-radius:3px;background:var(--line);margin:4px auto 0}@keyframes up{0%{transform:translateY(40px);opacity:.5}to{transform:none;opacity:1}}@keyframes fade{0%{opacity:0}to{opacity:1}}.toast{position:fixed;left:50%;transform:translate(-50%);z-index:60;top:calc(env(safe-area-inset-top) + 12px);background:var(--text);color:var(--bg);padding:12px 18px;border-radius:14px;font-weight:500;max-width:calc(100vw - 32px);animation:fade .15s}.empty{text-align:center;color:var(--muted);padding:28px 12px}.day-grid{position:relative;margin-left:46px;border-left:1px solid var(--line)}.hour-line{position:absolute;left:0;right:0;border-top:1px solid var(--line)}.hour-label{position:absolute;left:-46px;width:40px;text-align:right;font-size:12px;color:var(--muted);transform:translateY(-8px)}.slot-off{position:absolute;left:0;right:0;background:repeating-linear-gradient(45deg,transparent 0 6px,var(--surface-2) 6px 12px)}.ev{position:absolute;left:6px;right:4px;border-radius:10px;padding:5px 8px;overflow:hidden;font-size:13px;line-height:1.25;cursor:pointer;border:0;text-align:left;color:#fff}.ev.cancelled,.ev.noshow{opacity:.45;text-decoration:line-through}.now-line{position:absolute;left:-4px;right:0;border-top:2px solid var(--bad);z-index:3}.now-line:before{content:"";position:absolute;left:-4px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--bad)}.week-day{display:flex;gap:12px;padding:12px 16px;align-items:flex-start}.week-day+.week-day{border-top:1px solid var(--line)}.week-date{width:44px;flex:none;text-align:center}.week-date .d{font-size:22px;font-weight:700}.week-date.today .d{color:var(--accent)}.daystrip{display:flex;gap:6px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:none}.daystrip::-webkit-scrollbar{display:none}.daybtn{flex:none;width:46px;border:0;background:var(--surface);border-radius:12px;padding:6px 0;cursor:pointer;display:flex;flex-direction:column;align-items:center;box-shadow:var(--shadow);position:relative}.daybtn .w{font-size:12px;color:var(--muted)}.daybtn .d{font-size:18px;font-weight:700}.daybtn.on{background:var(--accent);color:var(--on-accent)}.daybtn.on .w{color:inherit;opacity:.8}.daybtn .has{position:absolute;bottom:3px;width:5px;height:5px;border-radius:50%;background:var(--accent)}.daybtn.on .has{background:var(--on-accent)}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;font-weight:500;color:var(--muted);font-size:12px;padding:6px 4px}.table td{padding:8px 4px;border-top:1px solid var(--line);vertical-align:top}.table td.r,.table th.r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.install{padding:calc(env(safe-area-inset-top) + 32px) 24px 40px;max-width:520px;margin:0 auto}.install ol{padding-left:22px}.install li{margin-bottom:12px}.share-ico{display:inline-block;vertical-align:-4px;width:20px;height:20px;color:var(--accent)}
