:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;--bg:#f8fafc;--surface:#ffffff;--surface-soft:#f8fafc;--text:#1f2937;--muted:#4b5563;--border:#e5e7eb;--border-strong:#d1d5db;--accent:#2563eb;--highlight-ring:#111827;--highlight-bg:#e0f2fe;--skeleton-base:#eef2f8;--skeleton-mid:#ffffff;--dur-fast:140ms;--dur-normal:220ms;--ease-standard:cubic-bezier(0.2,0,0,1);color:var(--text);background:var(--bg);color-scheme:light}html[data-theme=dark]{--bg:#0b1220;--surface:#101a2d;--surface-soft:#0f172a;--text:#e5e7eb;--muted:#9ca3af;--border:#243042;--border-strong:#324257;--accent:#3b82f6;--highlight-ring:#e5e7eb;--highlight-bg:#12253f;--skeleton-base:#172336;--skeleton-mid:#21314a;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:inherit}input,select{border:1px solid var(--border-strong);border-radius:8px;padding:.5rem .65rem;font:inherit;background:var(--surface);color:var(--text)}.container{width:min(1180px,100% - 2rem);margin:0 auto}.topbar{justify-content:space-between;padding:1rem 0}.topbar,.topbar-actions{display:flex;align-items:center}.topbar-actions{gap:.75rem}.locale-flag{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:10px;border:1px solid var(--border-strong);background:var(--surface);font-size:1.25rem;line-height:1;text-decoration:none;transition:background-color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard)}.locale-flag:hover{background:var(--surface-soft);border-color:var(--highlight-ring)}.locale-flag:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.topnav{display:flex;gap:.75rem}.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:10px;padding:.6rem 1rem;font-weight:600;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}.btn:hover{background:var(--surface-soft);border-color:var(--highlight-ring)}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{border-color:transparent;background:var(--accent);color:#fff}.theme-switch{border:1px solid var(--border-strong);background:transparent;color:inherit;border-radius:999px;padding:0;width:52px;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.theme-switch-track{width:42px;height:24px;border-radius:999px;background:#d1d5db;position:relative;transition:background-color .2s ease}.theme-switch-thumb{width:18px;height:18px;border-radius:999px;background:#fff;position:absolute;left:3px;top:3px;transition:transform .2s ease}.theme-switch-on .theme-switch-track{background:var(--accent)}.theme-switch-on .theme-switch-thumb{transform:translateX(18px)}.theme-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1rem}.grid{display:grid;grid-gap:.75rem;gap:.75rem}.calendar-controls,.year-grid{display:grid;grid-gap:.75rem;gap:.75rem;grid-template-columns:repeat(3,minmax(0,1fr))}.calendar-year-select{grid-column:-2/-1;justify-self:end}.calendar-stage{position:relative;min-height:780px}.month{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:.6rem;transition:border-color var(--dur-normal) var(--ease-standard),box-shadow var(--dur-normal) var(--ease-standard),transform var(--dur-normal) var(--ease-standard)}.month:hover{border-color:var(--border-strong);box-shadow:0 6px 16px -12px rgba(17,24,39,.45);transform:translateY(-1px)}.month h3{margin:0 0 .4rem;font-size:.95rem}.weekday-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px;margin-bottom:2px}.weekday-label{text-align:center;font-size:.65rem;font-weight:600;color:var(--muted);padding:2px 0}.day-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px}.day{min-height:28px;border-radius:6px;border:1px solid transparent;font-size:.72rem;padding:2px 4px;background:var(--surface-soft);position:relative;transition:background-color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}.day:hover{background:var(--surface);border-color:var(--border-strong)}.day:active{transform:scale(.98)}.day-clickable{width:100%;text-align:left;color:inherit;font:inherit;cursor:pointer}.day-popover-open{border-color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)}.day-highlighted{box-shadow:inset 0 0 0 2px var(--highlight-ring);background:color-mix(in srgb,var(--highlight-bg) 82%,var(--surface))}.day-muted{opacity:.35}.vac-dots{position:absolute;right:4px;top:4px;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:2px;gap:2px}.vac-dot{width:8px;height:8px;border-radius:999px}.vac-dot-pending{border:1px solid var(--vac-dot-color);background:linear-gradient(to right,var(--vac-dot-color) 50%,transparent 50%)}.vac-more{position:absolute;right:4px;bottom:2px;font-size:.55rem;line-height:1;color:var(--muted)}.day-popover{position:fixed;z-index:35;width:max-content;min-width:172px;max-width:min(220px,calc(100vw - 16px));max-height:min(240px,calc(100vh - 16px));overflow:auto;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);box-shadow:0 14px 30px -22px rgba(15,23,42,.9);padding:.5rem}.day-popover-list{display:grid;grid-gap:.35rem;gap:.35rem}.day-popover-item{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;grid-column-gap:.45rem;column-gap:.45rem;grid-row-gap:.1rem;row-gap:.1rem;border:1px solid var(--border);border-radius:8px;padding:.35rem .45rem;background:color-mix(in srgb,var(--surface-soft) 65%,var(--surface))}.day-popover-dot{width:10px;height:10px;border-radius:999px;grid-row:1/span 2}.day-popover-dot-pending{border:1px solid var(--vac-dot-color);background:linear-gradient(to right,var(--vac-dot-color) 50%,transparent 50%)}.day-popover-name{font-size:.8rem;line-height:1.15;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-popover-range{font-size:.72rem;line-height:1.15;color:var(--muted)}.legend{display:flex;flex-wrap:wrap;gap:8px;position:-webkit-sticky;position:sticky;top:.5rem;z-index:5;padding:.4rem;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 10px 24px -22px rgba(15,23,42,.9)}.legend-empty{min-height:44px}@supports not ((-webkit-backdrop-filter:blur(4px)) or (backdrop-filter:blur(4px))){.legend{background:var(--bg)}}.legend-item{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:.25rem .6rem;font-size:.8rem;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard)}.legend-item:hover{border-color:var(--border-strong);background:var(--surface-soft)}.legend-item:active{transform:translateY(1px)}.legend-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.legend-item-active{border-color:var(--highlight-ring);background:var(--surface-soft)}.day-today{box-shadow:inset 0 0 0 1px var(--accent);background:color-mix(in srgb,var(--surface-soft) 72%,var(--surface))}.day.day-today.day-highlighted{box-shadow:inset 0 0 0 2px var(--highlight-ring),inset 0 0 0 3px color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--highlight-bg) 70%,var(--surface))}.dot{width:9px;height:9px;border-radius:999px}.calendar-skeleton{display:grid;grid-gap:.75rem;gap:.75rem;grid-template-columns:repeat(3,minmax(0,1fr))}.skeleton-month{border:1px solid var(--border);border-radius:12px;padding:.6rem;background:var(--surface)}.skeleton-title{height:14px;width:42%;border-radius:6px;margin-bottom:.45rem}.skeleton-weekday-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px;margin-bottom:2px}.skeleton-weekday{height:12px;border-radius:4px}.skeleton-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px}.skeleton-cell{min-height:28px;border-radius:6px}.skeleton-cell,.skeleton-title,.skeleton-weekday{background:linear-gradient(90deg,var(--skeleton-base) 25%,var(--skeleton-mid) 50%,var(--skeleton-base) 75%);background-size:240% 100%;animation:skeleton-shimmer 1.2s ease-in-out infinite}.calendar-refresh-overlay{position:absolute;inset:0;pointer-events:none;border-radius:12px;background:color-mix(in srgb,var(--bg) 32%,transparent);display:flex;align-items:flex-start;justify-content:flex-end;padding:.6rem}.calendar-refresh-chip{display:inline-flex;align-items:center;border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:.25rem .6rem;font-size:.75rem;color:var(--muted)}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.btn,.day,.legend-item,.month,.onb-modal,.onb-overlay,.skeleton-cell,.skeleton-title,.skeleton-weekday{transition-duration:1ms!important;animation:none!important}.btn:active,.day:active,.legend-item:active,.month:hover{transform:none!important}}@media (max-width:1024px){.calendar-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-stage{min-height:1180px}.calendar-skeleton,.year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.calendar-controls{grid-template-columns:repeat(1,minmax(0,1fr))}.calendar-stage{min-height:2200px}.calendar-skeleton,.year-grid{grid-template-columns:repeat(1,minmax(0,1fr))}}.onb-help-trigger{position:fixed;left:1rem;bottom:1rem;width:42px;height:42px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:1.1rem;font-weight:700;cursor:pointer;z-index:30;box-shadow:0 10px 22px -16px rgba(15,23,42,.85)}.onb-help-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.onb-overlay{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;padding:1rem;opacity:0;pointer-events:none;transition:opacity .22s var(--ease-standard)}.onb-modal{width:min(480px,100%);padding:1rem;opacity:0;transform:translateY(8px) scale(.97);transition:opacity .22s var(--ease-standard),transform .22s var(--ease-standard)}.onb-overlay-open{opacity:1;pointer-events:auto}.onb-overlay-closed{opacity:0;pointer-events:none}.onb-modal-open{opacity:1;transform:translateY(0) scale(1)}.onb-modal-closed{opacity:0;transform:translateY(8px) scale(.97)}.onb-topline{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.onb-progress{font-size:.78rem;color:var(--muted);font-weight:600}.onb-title{margin:0 0 .5rem;font-size:1.08rem}.onb-description{margin:0;color:var(--muted);font-size:.92rem;line-height:1.35}.onb-visual-wrap{margin-top:.85rem;margin-bottom:.9rem;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft);padding:.8rem}.onb-actions{display:flex;justify-content:space-between;align-items:center}.onb-mini-calendar{position:relative;border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:.55rem}.onb-mini-calendar-title{font-size:.75rem;font-weight:600;margin-bottom:.45rem}.onb-mini-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px}.onb-mini-day{height:16px;border-radius:4px;background:color-mix(in srgb,var(--surface-soft) 70%,var(--surface))}.onb-mini-badge,.onb-mini-day{border:1px solid var(--border)}.onb-mini-badge{position:absolute;top:.45rem;right:.45rem;font-size:.64rem;color:var(--muted);border-radius:999px;padding:.1rem .4rem;background:var(--surface-soft)}.onb-statuses{display:grid;grid-gap:.45rem;gap:.45rem}.onb-status-chip{display:inline-flex;align-items:center;gap:.4rem;width:-moz-fit-content;width:fit-content;border:1px solid var(--border);border-radius:999px;padding:.3rem .6rem;background:var(--surface);font-size:.84rem}.onb-dot{width:10px;height:10px;border-radius:999px}.onb-dot-pending{border:1px solid #0f766e;background:linear-gradient(90deg,#0f766e 50%,transparent 0)}.onb-dot-approved{background:#0f766e}.onb-profile-card{position:relative;display:flex;align-items:center;gap:.6rem;border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:.6rem}.onb-profile-avatar{width:26px;height:26px;border-radius:999px;background:linear-gradient(135deg,#7c3aed,#2563eb);flex-shrink:0}.onb-profile-lines{width:100%;display:grid;grid-gap:.3rem;gap:.3rem}.onb-profile-lines span{display:block;height:7px;border-radius:999px;background:color-mix(in srgb,var(--surface-soft) 75%,var(--surface));border:1px solid var(--border)}.onb-json-preview{color:#e2e8f0}.onb-json-focus{background:rgba(59,130,246,.18)}.onb-rb-0{color:#fca5a5}.onb-rb-1{color:#fdba74}.onb-rb-2{color:#fde047}.onb-rb-3{color:#86efac}.onb-rb-4{color:#93c5fd}.onb-rb-5{color:#c4b5fd}.site-credit{position:fixed;right:1rem;bottom:1rem;z-index:25;border:1px solid var(--border);border-radius:999px;background:color-mix(in srgb,var(--surface) 92%,transparent);padding:.3rem .65rem;font-size:.78rem;color:var(--muted)}.site-credit a{color:var(--text);text-decoration:none;font-weight:600}.site-credit a:hover{text-decoration:underline}