:root{--font:"Segoe UI Variable", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--bg:#f3f7f4;--ink:#0f172a;--muted:#64748b;--line:#e2e8f0;--card:#fff;--brand:#15803d;--brand-deep:#166534;--brand-soft:#dcfce7;--warn:#b45309;--warn-soft:#fef3c7;--danger:#dc2626;--danger-soft:#fee2e2;--shadow:0 8px 24px #0f172a0d;--radius:18px;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;margin:0}html{scroll-behavior:smooth;scroll-padding-top:80px}body{font-family:var(--font);color:var(--ink);background:radial-gradient(900px 420px at 0% -10%, #15803d24, transparent 60%), radial-gradient(680px 360px at 100% 0%, #1d4ed814, transparent 55%), var(--bg);-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit}button{cursor:pointer}a{color:var(--brand-deep)}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}[hidden]{display:none!important}.mock-banner{text-align:center;color:#78350f;background:repeating-linear-gradient(135deg,#fde68a 0 14px,#fcd34d 14px 28px);border-bottom:2px solid #d97706;padding:10px 16px;font-size:14px}.mock-banner a{color:#78350f;font-weight:800}.topbar{z-index:20;backdrop-filter:blur(16px);background:#ffffffd9;border-bottom:1px solid #e3ebe5;align-items:center;gap:18px;padding:10px 24px;display:flex;position:sticky;top:0}.brand{color:inherit;align-items:center;gap:10px;min-width:0;text-decoration:none;display:flex}.brand-mark{background:var(--brand);color:#fff;border-radius:13px;flex-shrink:0;place-items:center;width:40px;height:40px;display:grid;box-shadow:0 8px 18px #15803d47}.brand-mark-lg{border-radius:20px;width:64px;height:64px;margin:0 auto 14px}.brand strong{letter-spacing:-.02em;font-size:16px;display:block}.brand small{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:600;display:block}.top-nav{gap:2px;margin-left:12px;display:flex}.top-nav a{color:#475569;border-radius:10px;align-items:center;gap:6px;padding:8px 12px;font-size:14px;font-weight:700;text-decoration:none;display:inline-flex}.top-nav a:hover{background:var(--brand-soft);color:var(--brand-deep)}.top-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.mock-badge{letter-spacing:.05em;text-transform:uppercase;color:var(--warn);background:var(--warn-soft);white-space:nowrap;border:1px solid #fcd34d;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:800}.pill{text-align:center;min-width:20px;color:var(--warn);background:var(--warn-soft);border-radius:999px;padding:1px 7px;font-size:11px;font-weight:800}.pill-danger{color:var(--danger);background:var(--danger-soft)}.main{flex-direction:column;gap:18px;width:100%;max-width:1280px;margin:0 auto;padding:20px 24px 72px;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;padding:20px 22px 22px}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 12px;margin-bottom:12px;display:flex}.card h2,.card-head h2{letter-spacing:-.02em;margin:0;font-size:18px;font-weight:800}.card-meta{letter-spacing:.06em;text-transform:uppercase;color:var(--brand);margin:4px 0 0;font-size:11px;font-weight:800}.two-col{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.hint{color:var(--muted);margin:0 0 12px;font-size:13px;line-height:1.5}.footnote{color:var(--muted);margin:14px 0 0;font-size:12px;line-height:1.55}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--brand);margin:0 0 4px;font-size:11px;font-weight:800}.icon-btn,.btn-primary,.btn-ghost,.btn-wa{border-radius:12px;justify-content:center;align-items:center;gap:6px;font-size:14px;font-weight:700;text-decoration:none;display:inline-flex}.icon-btn{width:36px;height:36px;color:var(--ink);background:0 0;border:0}.icon-btn:hover,.btn-ghost:hover{background:#f1f5f9}.btn-primary,.btn-ghost{border:0;padding:10px 14px}.btn-small{padding:7px 11px;font-size:13px}.btn-primary{background:var(--brand);color:#fff;box-shadow:0 8px 18px #15803d40}.btn-primary:hover{background:var(--brand-deep)}.btn-ghost{color:var(--ink);border:1px solid var(--line);background:#fff}.btn-wa{color:#166534;background:#f0fdf4;border:1px solid #86efac;padding:7px 11px;font-size:13px}.btn-wa:before{content:"";background:#22c55e;border-radius:99px;width:8px;height:8px}.btn-wa:hover{background:#dcfce7}.segmented{border:1px solid var(--line);background:#f1f5f9;border-radius:12px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:#64748b;white-space:nowrap;background:0 0;border:0;border-radius:9px;padding:7px 12px;font-size:13px;font-weight:800}.segmented button.is-on{color:var(--brand-deep);background:#fff;box-shadow:0 2px 8px #0f172a14}.select select{appearance:none;border:1px solid var(--line);color:var(--ink);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='3'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") right 10px center no-repeat;border-radius:12px;padding:8px 30px 8px 12px;font-size:13px;font-weight:700}.toggle{color:#475569;align-items:center;gap:6px;font-size:13px;font-weight:700;display:inline-flex}.toggle input{width:16px;height:16px;accent-color:var(--brand)}.alerts{flex-wrap:wrap;gap:8px;display:flex}.alert{border-radius:12px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.alert:before{content:"!";color:#fff;border-radius:99px;place-items:center;width:18px;height:18px;font-size:12px;font-weight:900;display:grid}.alert-danger{color:#991b1b;background:var(--danger-soft);border:1px solid #fca5a5}.alert-danger:before{background:var(--danger)}.alert-warn{color:#92400e;background:var(--warn-soft);border:1px solid #fcd34d}.alert-warn:before{background:var(--warn)}.cal-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.cal-nav{align-items:center;gap:4px;display:flex}.cal-nav h2{text-align:center;min-width:220px;font-size:18px}.month-label{text-align:center;min-width:150px;font-size:15px}.filters{flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:14px;display:flex}.filters .btn-wa{margin-left:auto}.calendar[aria-busy=true]{opacity:.55;transition:opacity .2s}.cal-status{color:var(--muted);margin:10px 0 0;font-size:12px}.week-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.week-col{border:1px solid var(--line);background:#f8fafc;border-radius:14px;flex-direction:column;gap:6px;min-width:0;min-height:220px;padding:8px;display:flex}.day-head{flex-wrap:wrap;align-items:baseline;gap:2px 6px;padding:0 2px 2px;display:flex}.day-name{letter-spacing:.05em;text-transform:uppercase;color:#94a3b8;align-items:center;gap:6px;font-size:11px;font-weight:800;display:inline-flex}.day-num{letter-spacing:-.03em;font-size:17px;font-weight:800}.today-badge{letter-spacing:.04em;color:#fff;background:var(--brand);border-radius:999px;padding:2px 7px;font-size:10px;font-weight:800}.holiday{color:#c2410c;width:100%;font-size:10px;font-weight:800;line-height:1.25}.week-list{flex-direction:column;gap:5px;display:flex}.day-empty{color:#cbd5e1;margin:4px 2px;font-size:12px;font-weight:700}.is-weekend{background:#fffaf3;border-color:#ecd6ab}.is-holiday{background:#fff7ed;border-color:#fdba74}.is-today{border:2px solid var(--brand);background:#f0fdf4;box-shadow:0 6px 16px #15803d29}.ev{--ev:#64748b;border:1px solid color-mix(in srgb, var(--ev) 28%, white);border-left:4px solid var(--ev);background:color-mix(in srgb, var(--ev) 9%, white);width:100%;color:var(--ink);text-align:left;border-radius:9px;flex-wrap:wrap;align-items:baseline;gap:0 6px;min-width:0;padding:5px 7px 5px 9px;font-size:12px;line-height:1.3;display:flex}.ev:hover{background:color-mix(in srgb, var(--ev) 16%, white)}.ev-time{font-variant-numeric:tabular-nums;color:color-mix(in srgb, var(--ev) 80%, black);font-weight:800}.ev-main{overflow-wrap:anywhere;min-width:0;font-weight:700}.ev-sub{color:#475569;overflow-wrap:anywhere;width:100%;font-size:11px;font-weight:600}.ev.is-special .ev-main:before{content:"★ ";color:var(--ev)}.ev.is-cancelled{opacity:.55;background:repeating-linear-gradient(135deg,#f8fafc 0 6px,#eef2f7 6px 12px)}.ev.is-cancelled .ev-main{text-decoration:line-through}.ev.is-undescribed{background:#f8fafc;border-style:dashed dashed dashed solid}.ev.has-issues:after{content:"?";color:#fff;background:var(--warn);border-radius:99px;place-items:center;width:16px;height:16px;margin-left:auto;font-size:11px;font-weight:900;display:grid}.ev.is-conflict{box-shadow:0 0 0 2px var(--danger)}.ev.is-mine{border-width:2px 2px 2px 5px}.busy{color:#57534e;background:repeating-linear-gradient(135deg,#f5f5f4 0 6px,#e7e5e4 6px 12px);border:1px solid #d6d3d1;border-radius:8px;padding:3px 7px;font-size:11px;font-weight:700;display:block}.month-wrap{overflow-x:auto}.month-head,.month-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;min-width:760px;display:grid}.month-head{margin-bottom:6px}.month-head span{letter-spacing:.06em;text-transform:uppercase;color:#94a3b8;padding-left:4px;font-size:11px;font-weight:800}.month-head .is-weekend{color:#b45309;background:0 0}.month-day{border:1px solid var(--line);background:#f8fafc;border-radius:12px;flex-direction:column;gap:3px;min-width:0;min-height:120px;padding:6px;display:flex}.month-day.is-outside{opacity:.45}.month-day-head{color:var(--ink);background:0 0;border:0;border-radius:6px;align-self:flex-start;padding:0 4px;font-size:15px;font-weight:800}.month-day-head:hover{background:var(--brand-soft)}.month-day .ev{border-left-width:3px;padding:2px 5px 2px 6px;font-size:11px}.month-day .ev-main{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.month-day .busy{padding:1px 5px;font-size:10px}.issue-list{flex-direction:column;gap:6px;max-height:460px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.issue-btn{--ev:#64748b;text-align:left;border:1px solid var(--line);border-left:4px solid var(--ev);width:100%;color:var(--ink);background:#fff;border-radius:12px;flex-direction:column;gap:2px;padding:9px 12px;font-size:13px;display:flex}.issue-btn:hover{background:#f8fafc}.issue-when{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:800}.issue-note{color:#92400e;font-size:12px;font-weight:600}.issue-list .empty{color:var(--muted);padding:8px 2px;font-size:13px}.table-title{margin:16px 0 8px;font-size:14px;font-weight:800}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:14px}.table th,.table td{text-align:left;white-space:nowrap;border-bottom:1px solid #f1f5f9;padding:10px 10px 10px 0}.table thead th{letter-spacing:.06em;text-transform:uppercase;color:#71717a;border-bottom:1px solid var(--line);font-size:11px;font-weight:800}.table tbody th{font-weight:700}.table .num{font-variant-numeric:tabular-nums}.table .total{color:var(--brand-deep);font-weight:800}.table .empty{color:var(--muted)}.dot{border-radius:99px;width:9px;height:9px;margin-right:7px;display:inline-block}.matrix{margin-top:16px}.matrix summary{cursor:pointer;font-size:14px;font-weight:800}dialog{width:min(560px,100% - 24px);color:var(--ink);border:0;border-radius:18px;padding:0;box-shadow:0 24px 80px #0f172a47}dialog::backdrop{backdrop-filter:blur(4px);background:#0f172a75}.dialog-body{padding:20px}.dialog-body h2{letter-spacing:-.03em;margin:0 0 12px;font-size:20px}.dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.details{grid-template-columns:max-content 1fr;gap:6px 14px;margin:0 0 12px;font-size:14px;display:grid}.details dt{color:var(--muted);font-weight:700}.details dd{margin:0;font-weight:600}.details-notes{white-space:pre-line;border:1px solid var(--line);color:#334155;background:#f8fafc;border-radius:12px;padding:10px 12px;font-size:13px}.notice{border-radius:12px;margin-bottom:12px;padding:10px 12px;font-size:13px}.notice ul,.notice p{margin:4px 0 0;padding-left:18px}.notice p{padding-left:0}.notice-warn{background:var(--warn-soft);color:#92400e}.notice-danger{background:var(--danger-soft);color:#991b1b}textarea{border:1px solid var(--line);resize:vertical;border-radius:12px;width:100%;padding:12px;font-size:13px;line-height:1.5}.landing{place-items:center;min-height:100vh;padding:24px;display:grid}.landing-card{text-align:center;width:100%;max-width:420px}.landing-card h1{letter-spacing:-.03em;margin:0 0 6px;font-size:26px}.landing-links{flex-direction:column;gap:8px;margin-top:18px;display:flex}.login-card{text-align:left}.login-card h1,.login-card>.hint,.login-card .brand-mark-lg{text-align:center}.login-form{flex-direction:column;gap:8px;margin-top:16px;display:flex}.login-form label{color:#475569;font-size:13px;font-weight:700}.login-form input{border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:16px}.login-form input:focus{outline:2px solid var(--brand);outline-offset:1px}#login-code{letter-spacing:.3em;text-align:center;font-size:24px;font-weight:800}.login-form button:disabled{opacity:.6}.login-message{min-height:1.4em;color:var(--muted);text-align:center;margin:12px 0 0;font-size:13px}.login-message.is-error{color:var(--danger);font-weight:700}@media (width<=1100px){.week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=860px){.topbar{flex-wrap:wrap;gap:8px;padding:8px 14px}.top-nav{order:3;width:100%;margin:0;overflow-x:auto}.top-nav a{white-space:nowrap;padding:6px 10px;font-size:13px}.main{gap:14px;padding:14px 12px 48px}.card{padding:16px 14px}.two-col,.week-grid{grid-template-columns:1fr}.week-col{min-height:0}.week-col.is-past:not(.is-today){opacity:.8}.cal-nav h2{flex:1;min-width:0;font-size:16px}.cal-toolbar{flex-direction:column;align-items:stretch}.cal-toolbar .segmented{align-self:flex-start}.filters .btn-wa{margin-left:0}}
