:root{color-scheme:light;--background:#eff6ff;--foreground:#0f172a;--muted:#64748b;--card-background:rgba(255,255,255,0.9);--card-border:rgba(37,99,235,0.16);--accent:#2563eb;--accent-strong:#1d4ed8;--success:#16a34a;--danger:#dc2626;--shadow:0 24px 60px rgba(37,99,235,0.16);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{min-height:100vh;background:radial-gradient(circle at top,rgba(37,99,235,.2),transparent 35%),linear-gradient(180deg,#f8fbff 0,var(--background) 100%);color:var(--foreground)}button,input{font:inherit}.page-shell{min-height:100vh;display:grid;place-items:center;padding:max(2rem,env(safe-area-inset-top)) 1rem max(2rem,env(safe-area-inset-bottom))}.hero-card,.progress-card,.task-card,.user-card{border-radius:1.75rem;background:var(--card-background);border:1px solid var(--card-border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.hero-card{width:min(100%,32rem);padding:3rem;text-align:center}.sign-in-card{display:grid;grid-gap:1.25rem;gap:1.25rem}.eyebrow{margin:0 0 .75rem;color:var(--accent-strong);font-size:.875rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(2.4rem,8vw,4rem);line-height:1}h2{margin-bottom:.35rem;font-size:1.2rem}.loading-message,.progress-copy,.subtitle,.task-card__header p{color:rgba(15,23,42,.72);line-height:1.6}.subtitle{margin-bottom:0;font-size:1.125rem}.ghost-button,.primary-button{min-height:2.75rem;border:0;border-radius:999px;font-weight:800;cursor:pointer}.primary-button{padding:.9rem 1.4rem;background:var(--accent);color:white;box-shadow:0 14px 30px rgba(37,99,235,.25)}.primary-button:hover{background:var(--accent-strong)}.ghost-button{padding:.65rem 1rem;background:rgba(37,99,235,.08);color:var(--accent-strong)}.app-shell{width:min(100%,68rem);margin:0 auto;padding:max(1rem,env(safe-area-inset-top)) 1rem max(2rem,env(safe-area-inset-bottom))}.app-panel-frame{overflow:hidden;border-radius:2rem}.app-panel-track{display:grid;grid-template-columns:repeat(3,100%);transition:transform .32s ease;will-change:transform}.app-panel-track--calendar{transform:translateX(0)}.app-panel-track--todo{transform:translateX(-100%)}.app-panel-track--edit{transform:translateX(-200%)}.app-panel{min-width:0;padding:.15rem}.app-panel .calendar-modal,.app-panel .schedule-modal{width:100%;max-height:none}.app-header-row,.progress-card{display:grid;grid-gap:1rem;gap:1rem}.progress-card{padding:1.25rem}.progress-card h1{font-size:clamp(2rem,10vw,3.5rem)}.progress-copy{margin:.5rem 0 0}.progress-meter{height:1rem;overflow:hidden;border-radius:999px;background:rgba(37,99,235,.12)}.progress-meter__fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--success));transition:width .18s ease}.progress-percent{color:var(--accent-strong);font-size:1.6rem}.user-card{padding:1rem;display:grid;grid-template-columns:auto 1fr auto;grid-gap:.75rem;gap:.75rem;align-items:center}.avatar-fallback,.avatar-photo{width:2.75rem;height:2.75rem;border-radius:999px}.avatar-photo{display:block;background-position:50%;background-size:cover}.avatar-fallback{display:grid;place-items:center;background:rgba(22,163,74,.14);color:var(--success);font-weight:900}.user-card span,.user-card strong{display:block}.user-card span{color:var(--muted);font-size:.9rem;overflow-wrap:anywhere}.task-grid{display:grid;grid-gap:1rem;gap:1rem;margin-top:1rem}.task-card{padding:1rem}.task-card__header p{margin-bottom:1rem}.task-list{display:grid;grid-gap:.75rem;gap:.75rem}.task-item{display:grid;grid-template-columns:auto 1fr;grid-gap:.85rem;gap:.85rem;align-items:center;min-height:4rem;padding:.85rem;border:1px solid rgba(37,99,235,.14);border-radius:1.1rem;background:rgba(255,255,255,.72);cursor:pointer}.task-item input{position:absolute;opacity:0;pointer-events:none}.task-item__check{width:2.35rem;height:2.35rem;display:grid;place-items:center;border:2px solid rgba(37,99,235,.35);border-radius:.8rem;color:white;font-size:1.35rem;font-weight:900}.task-item--checked{border-color:rgba(22,163,74,.35);background:rgba(240,253,244,.86)}.task-item--checked .task-item__check{border-color:var(--success);background:var(--success)}.task-item__check--missed{border-color:#fca5a5;background:#fee2e2;color:#991b1b;font-size:1rem}.task-item__room,.task-item__title{display:block}.task-item__title{font-weight:800}.task-item__room{margin-top:.2rem;color:var(--muted);font-size:.9rem}.error-message{margin:1rem 0 0;padding:.85rem 1rem;border-radius:1rem;background:rgba(220,38,38,.1);color:var(--danger);font-weight:700}.loading-message{margin:1rem 0 0;text-align:center}@media (min-width:760px){.app-shell{padding-top:2rem}.app-header-row{grid-template-columns:1fr minmax(18rem,22rem);align-items:stretch}.task-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.app-menu{position:relative;justify-self:end}.icon-button,.menu-button{width:2.75rem;height:2.75rem;border:0;border-radius:999px;background:rgba(37,99,235,.1);color:var(--accent-strong);cursor:pointer;font-size:1.25rem;font-weight:900}.menu-popover{position:absolute;right:0;top:calc(100% + .5rem);z-index:20;min-width:14rem;padding:.45rem;border:1px solid var(--card-border);border-radius:1rem;background:white;box-shadow:var(--shadow)}.menu-popover button{width:100%;padding:.75rem .85rem;border:0;border-radius:.75rem;background:transparent;color:var(--foreground);cursor:pointer;font-weight:800;text-align:left}.menu-popover button:hover{background:rgba(37,99,235,.08)}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:1rem;background:rgba(15,23,42,.36)}.schedule-modal{width:min(100%,56rem);max-height:min(90vh,54rem);display:grid;grid-gap:1rem;gap:1rem;padding:1rem;border:1px solid var(--card-border);border-radius:1.5rem;background:white;box-shadow:var(--shadow)}.schedule-modal__actions,.schedule-modal__header{display:flex;gap:1rem;align-items:center;justify-content:space-between}.schedule-help{margin:0;color:var(--muted);line-height:1.5}.schedule-textarea{width:100%;min-height:52vh;resize:vertical;padding:1rem;border:1px solid rgba(37,99,235,.22);border-radius:1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.85rem;line-height:1.45}.settings-status{margin:0;color:var(--accent-strong);font-weight:800}.app-shell>.progress-card{margin-top:.5rem}.app-shell>.app-menu{position:fixed;top:max(1rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));z-index:80}.app-shell>.app-menu .menu-popover{z-index:90}.user-footer{margin-top:1rem;padding:1rem;display:flex;gap:.75rem;align-items:center;justify-content:center;color:var(--muted)}.user-footer span,.user-footer strong{display:block}.user-footer strong{color:var(--foreground)}.schedule-modal{overflow:hidden}.schedule-editor-layout{display:grid;grid-gap:1rem;gap:1rem}.schedule-tabs{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.25rem}.schedule-tabs button{flex:0 0 auto;padding:.65rem .8rem;border:1px solid rgba(37,99,235,.16);border-radius:999px;background:rgba(37,99,235,.06);color:var(--foreground);cursor:pointer;font-weight:800}.schedule-tabs button.active{background:var(--accent);color:white}.schedule-panel{min-height:0;max-height:52vh;overflow:auto;display:grid;grid-gap:.85rem;gap:.85rem;padding:1rem;border:1px solid rgba(37,99,235,.14);border-radius:1rem;background:rgba(239,246,255,.55)}.schedule-panel h3,.schedule-panel p{margin:0}.schedule-field,.schedule-panel p{color:var(--muted)}.schedule-field{display:grid;grid-gap:.35rem;gap:.35rem;font-weight:800}.schedule-field input,.schedule-task-row input{width:100%;min-height:2.75rem;padding:.7rem .8rem;border:1px solid rgba(37,99,235,.22);border-radius:.8rem;background:white;color:var(--foreground)}.schedule-anchor-field{max-width:18rem}.schedule-task-editor{display:grid;grid-gap:.6rem;gap:.6rem}.schedule-task-row{display:grid;grid-template-columns:1fr auto;grid-gap:.5rem;gap:.5rem;align-items:center}.schedule-add-button{justify-self:start}@media (min-width:860px){.schedule-editor-layout{grid-template-columns:minmax(13rem,16rem) 1fr;align-items:start}.schedule-tabs{max-height:52vh;overflow-y:auto;overflow-x:visible;flex-direction:column;padding-right:.25rem}.schedule-tabs button{white-space:normal;text-align:left;border-radius:.9rem}}.holiday-card,.sync-card{margin-top:1rem;min-height:18rem;display:grid;place-items:center;align-content:center;grid-gap:.75rem;gap:.75rem;padding:2rem;border-radius:1.75rem;background:var(--card-background);border:1px solid var(--card-border);box-shadow:var(--shadow);text-align:center}.holiday-card{background:linear-gradient(135deg,#fef3c7,#fff7ed);border-color:rgba(245,158,11,.35)}.holiday-card>span{font-size:3rem}.holiday-card h2,.holiday-card p{margin:0}.holiday-card p{max-width:32rem;color:var(--muted)}.sync-card h2,.sync-card p{margin:0}.sync-card p{color:var(--muted)}.loading-spinner{width:3rem;height:3rem;border-radius:999px;border:.35rem solid rgba(37,99,235,.14);border-top:.35rem solid var(--accent);animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.app-footer{margin-top:1rem;display:grid;grid-gap:.75rem;gap:.75rem;place-items:center}.day-nav{display:inline-grid;grid-template-columns:auto minmax(12rem,1fr) auto;gap:.75rem;align-items:center;padding:.6rem;border:1px solid var(--card-border);border-radius:999px;background:var(--card-background);box-shadow:0 10px 24px rgba(37,99,235,.1)}.day-nav button{width:2.5rem;height:2.5rem;border:0;border-radius:999px;background:rgba(37,99,235,.1);color:var(--accent-strong);cursor:pointer;font-size:1.8rem;font-weight:900;line-height:1}.day-nav strong{text-align:center;color:var(--foreground)}.schedule-modal{grid-template-rows:auto auto auto minmax(0,1fr) auto auto}.schedule-editor-layout{min-height:0;overflow:hidden}.schedule-modal__actions{position:-webkit-sticky;position:sticky;bottom:0;z-index:2;margin:0 -1rem -1rem;padding:.85rem 1rem calc(.85rem + env(safe-area-inset-bottom));border-top:1px solid rgba(37,99,235,.14);background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}@media (max-width:759px){.modal-backdrop{align-items:stretch;padding:0}.schedule-modal{width:100%;max-height:100dvh;min-height:100dvh;border-radius:0;border-left:0;border-right:0;padding:max(1rem,env(safe-area-inset-top)) 1rem 1rem}.schedule-modal__header{align-items:start}.schedule-help{font-size:.95rem}.schedule-anchor-field{max-width:none}.schedule-editor-layout{display:grid;grid-template-rows:auto minmax(0,1fr)}.schedule-tabs{margin:0 -1rem;padding:0 1rem .35rem}.schedule-panel{max-height:none;min-height:0}.schedule-task-row{grid-template-columns:1fr}.schedule-task-row .ghost-button{justify-self:end}.schedule-modal__actions{display:grid;grid-template-columns:1fr 1fr}}.day-nav{grid-template-columns:auto minmax(10rem,1fr) auto auto}.day-nav .today-button{width:auto;min-width:4.25rem;padding:0 .85rem;font-size:.9rem}.streak-button{border:0;border-radius:999px;padding:.7rem 1rem;background:linear-gradient(90deg,rgba(236,72,153,.16),rgba(37,99,235,.16));color:var(--accent-strong);cursor:pointer;font-weight:900}.calendar-modal{width:min(100%,42rem);max-height:min(92vh,46rem);display:grid;grid-gap:1rem;gap:1rem;padding:1rem;border:1px solid var(--card-border);border-radius:1.5rem;background:white;box-shadow:var(--shadow);overflow:auto}.calendar-month-nav{display:grid;grid-template-columns:auto 1fr auto;grid-gap:.75rem;gap:.75rem;align-items:center}.calendar-month-nav button{width:2.5rem;height:2.5rem;border:0;border-radius:999px;background:rgba(37,99,235,.1);color:var(--accent-strong);cursor:pointer;font-size:1.6rem;font-weight:900}.calendar-month-nav strong{text-align:center;font-size:1.2rem}.calendar-legend{display:flex;flex-wrap:wrap;gap:.75rem;color:var(--muted);font-size:.9rem}.calendar-legend span{display:inline-flex;gap:.35rem;align-items:center}.legend-box{width:1rem;height:1rem;border:1px solid rgba(15,23,42,.12);border-radius:.25rem}.calendar-day--none,.legend-none{background:white}.calendar-day--some,.legend-some{background:#fce7f3}.calendar-day--all,.legend-all{background:#dbeafe}.calendar-day--holiday,.legend-holiday{background:#fef3c7}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:.35rem;gap:.35rem}.calendar-weekday{padding:.25rem;color:var(--muted);font-size:.78rem;text-align:center}.calendar-day{min-height:4.5rem;display:grid;align-content:space-between;padding:.5rem;border:1px solid rgba(15,23,42,.1);border-radius:.8rem}.calendar-day span{font-weight:900}.calendar-day small{color:var(--muted);font-weight:800}.calendar-day--muted{opacity:.45}@media (max-width:520px){.calendar-modal{min-height:100dvh;max-height:100dvh;border-radius:0}.calendar-day{min-height:3.75rem;padding:.35rem}}.calendar-day--today{border:3px solid var(--accent-strong);box-shadow:0 0 0 3px rgba(37,99,235,.14)}.calendar-modal{position:relative;z-index:100}.calendar-modal .icon-button{position:relative;z-index:110}@media (max-width:520px){.calendar-modal .schedule-modal__header{padding-right:3.5rem}.calendar-modal .icon-button{position:fixed;top:max(1rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));z-index:120;background:white;box-shadow:0 10px 24px rgba(15,23,42,.18)}}.invite-modal{width:min(100%,26rem);display:grid;justify-items:center;grid-gap:1rem;gap:1rem;padding:1.25rem;border:1px solid var(--card-border);border-radius:1.5rem;background:white;box-shadow:var(--shadow);text-align:center;position:relative;z-index:100}.invite-modal .schedule-modal__header{width:100%}.invite-modal p{margin:0;color:var(--muted);line-height:1.45}.invite-qr{width:min(70vw,16.25rem);height:auto;display:block;border:.75rem solid white;border-radius:1rem;box-shadow:0 10px 30px rgba(15,23,42,.14)}.invite-modal input{width:100%;min-width:0;padding:.75rem;border:1px solid rgba(37,99,235,.22);border-radius:.85rem;color:var(--foreground);overflow:hidden;text-overflow:ellipsis}@media (max-width:520px){.invite-modal{width:calc(100vw - 2rem);max-height:calc(100dvh - 2rem);overflow:auto}}.success-message{margin:1rem 0 0;padding:.85rem 1rem;border-radius:1rem;background:rgba(22,163,74,.12);color:var(--success);font-weight:800;animation:success-pop .26s ease-out}@keyframes success-pop{0%{opacity:0;transform:translateY(-.35rem) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}