:root{--ink:#233129;--ink-soft:#405047;--muted:#70796f;--green:#244637;--green-hover:#19382b;--green-soft:#dce5dc;--brown:#76513a;--brown-soft:#eadfd2;--brass:#a3824d;--paper:#f4f0e6;--paper-deep:#ece5d7;--surface:#f9f6ee;--line:#d8d0c1;--danger:#8c4038;--serif:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;--sans:"Avenir Next", Avenir, "Segoe UI", Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body{min-height:100%}body{color:var(--ink);background:linear-gradient(#36443905 1px, transparent 1px), var(--paper);font-family:var(--sans);-webkit-font-smoothing:antialiased;background-size:100% 5px;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;width:min(1120px,100% - 48px);margin:0 auto;padding:25px 0 21px;display:flex}.headerRight{align-items:center;gap:14px;display:flex}.brand{color:var(--green);font-family:var(--serif);letter-spacing:-.025em;font-size:20px;font-weight:700;text-decoration:none}.headerProgress{color:var(--muted);font-variant-numeric:tabular-nums;align-items:center;gap:10px;font-size:11px;display:flex}.progressTrack{background:#d5cdbc;width:82px;height:2px;overflow:hidden}.progressTrack span{background:var(--brass);height:100%;transition:width .35s;display:block}.streakButton{color:var(--ink-soft);background:#f9f6ee8c;border:1px solid #c9bda9;border-radius:4px;align-items:center;gap:7px;padding:7px 10px;font-size:11px;display:flex}.streakButton:hover{border-color:var(--brass);background:var(--surface)}.streakButton:focus-visible,.signOutButton:focus-visible{outline:2px solid var(--brass);outline-offset:3px}.streakButton strong{color:var(--green);font-size:13px}.streakDot{background:var(--green);border-radius:50%;width:7px;height:7px}.signOutButton{color:#788078;background:0 0;border:0;place-items:center;width:31px;height:31px;padding:6px;display:grid}.signOutButton:hover{color:var(--green)}.signOutButton svg{fill:none;stroke:currentColor;stroke-width:1.55px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px}.sessionCard{text-align:center;width:min(690px,100% - 32px);margin:auto;padding:58px 42px 48px}.successNote{width:fit-content;max-width:100%;color:var(--green);text-align:left;background:#e7eee5;border:1px solid #bdcdbf;border-radius:4px;align-items:center;gap:10px;margin:0 auto 28px;padding:9px 13px 9px 9px;font-size:12px;display:flex}.successNote>div{align-items:center;gap:10px;display:flex}.successNote button{color:var(--muted);text-underline-offset:3px;background:0 0;border:0;padding:0;font-size:11px;text-decoration:underline}.successNote button:disabled{cursor:wait;opacity:.55}.successIcon{width:23px;height:23px;color:var(--surface);background:var(--green);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.eyebrow{color:#858b84;text-transform:uppercase;letter-spacing:.14em;margin:0 0 18px;font-size:10px;font-weight:700}.eyebrow span{color:var(--brown)}h1{max-width:650px;font-family:var(--serif);letter-spacing:-.04em;text-wrap:balance;margin:0 auto;font-size:clamp(38px,6vw,56px);font-weight:600;line-height:1.02}h2{font-family:var(--serif);margin:0 0 22px;font-size:27px;font-weight:600}.meta{color:var(--muted);justify-content:center;align-items:center;gap:10px;margin-top:19px;font-size:12px;display:flex}.meta i{background:#9e9c91;border-radius:50%;width:3px;height:3px}.easy{color:#356148}.hard{color:#8c4038}.medium{color:#8a662f}.timer{flex-direction:column;align-items:center;margin:43px auto 29px;display:flex}.timer>span{font-variant-numeric:tabular-nums;letter-spacing:-.065em;font-size:clamp(64px,13vw,94px);font-weight:650;line-height:1}.timer small{color:var(--muted);font-family:var(--serif);margin-top:14px;font-size:14px;font-style:italic}.timer.expired>span{color:var(--brown)}.primary{border:1px solid var(--green);color:#faf7ef;background:var(--green);border-radius:4px;min-width:220px;padding:14px 25px;font-weight:700;transition:transform .15s,background .15s;box-shadow:0 5px 14px #2331291f}.primary:hover{background:var(--green-hover);transform:translateY(-1px)}.primary:focus-visible{outline:2px solid var(--brass);outline-offset:3px}.primary:disabled{cursor:not-allowed;box-shadow:none;background:#a9afa9;border-color:#a9afa9;transform:none}.quiet{color:#878d87;margin-top:13px;font-size:11px}.problemLinks{justify-content:center;gap:22px;margin-top:22px;display:flex}.problemLinks a{color:var(--muted);text-underline-offset:4px;font-size:12px;text-decoration-thickness:1px}.problemLinks a:hover{color:var(--green)}.activeActions,.logActions{flex-direction:column;align-items:center;gap:14px;display:flex}.textButton{color:var(--muted);text-underline-offset:3px;background:0 0;border:0;padding:2px;font-size:12px;text-decoration:underline}.textButton:hover{color:var(--green)}.logPanel{border-top:1px solid var(--line);width:min(540px,100%);margin:36px auto 0;padding-top:30px}.resultGrid{grid-template-columns:repeat(3,1fr);gap:9px;display:grid}.resultGrid button{border:1px solid var(--line);min-height:76px;color:var(--muted);background:#f9f6ee8c;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:12px 8px;font-size:12px;font-weight:700;transition:border-color .15s,background .15s,color .15s;display:flex}.resultGrid button span{font-family:var(--serif);color:var(--brown);font-size:19px}.resultGrid button:hover{color:var(--ink);border-color:#afa58f}.resultGrid button.selected{border-color:var(--green);color:var(--ink);background:var(--green-soft);box-shadow:inset 0 0 0 1px var(--green)}.logPanel label{color:var(--ink);text-align:left;margin:24px 0 8px;font-size:12px;font-weight:700;display:block}.logPanel label span{color:#92988f;font-weight:400}.logPanel input{border:1px solid var(--line);width:100%;color:var(--ink);background:var(--surface);border-radius:4px;outline:none;padding:13px 14px;font-size:13px}.logPanel input:focus{border-color:var(--green);box-shadow:0 0 0 3px #2446371a}.logPanel input::placeholder{color:#999c94}.logActions{margin-top:20px}.errorNote{color:var(--danger);background:#f6e9e5;border:1px solid #d9bdb4;border-radius:4px;margin:0;padding:10px 12px;font-size:12px;line-height:1.45}.actionError{width:fit-content;max-width:100%;margin:0 auto 24px}.errorText{color:var(--danger)}footer{border-top:1px solid var(--line);color:#858b84;width:min(1120px,100% - 48px);font-family:var(--serif);justify-content:space-between;gap:16px;margin:0 auto;padding:20px 0;font-size:11px;font-style:italic;display:flex}.loading{background:var(--paper);min-height:100vh}.loading:after{content:"";border:2px solid var(--line);border-top-color:var(--green);border-radius:50%;width:24px;height:24px;margin:-12px;animation:.7s linear infinite spin;position:fixed;inset:50% auto auto 50%}.authShell{place-items:center;min-height:100vh;padding:32px 16px;display:grid}.authCard{border:1px solid var(--line);text-align:center;background:#f9f6eeb3;border-radius:5px;width:min(440px,100%);padding:47px 42px 42px;box-shadow:0 18px 50px #312c2312}.authBrand{width:fit-content;margin:0 auto 48px;display:block}.authCard h1{font-size:clamp(40px,10vw,52px)}.authIntro{color:var(--muted);font-family:var(--serif);margin:21px auto 27px;font-size:14px;line-height:1.55}.authForm{text-align:left;flex-direction:column;display:flex}.authForm label{margin:14px 0 7px;font-size:11px;font-weight:700}.authForm input{border:1px solid var(--line);width:100%;color:var(--ink);background:var(--surface);border-radius:4px;outline:none;padding:13px 14px}.authForm input:focus{border-color:var(--green);box-shadow:0 0 0 3px #2446371a}.authForm .errorNote{margin-top:16px}.authForm .primary{align-self:center;margin-top:24px}.compactCard{flex-direction:column;align-items:center;display:flex}.compactCard .textButton{margin-top:18px}.managerOverlay{z-index:20;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1b231e75;justify-items:end;animation:.22s ease-out both overlayIn;display:grid;position:fixed;inset:0}.managerDialog{background:var(--paper);text-align:left;width:min(680px,100%);height:100%;padding:34px 38px 48px;animation:.24s cubic-bezier(.22,.75,.28,1) both drawerIn;overflow-y:auto;box-shadow:-18px 0 55px #1a231d2e}.managerOverlay.closing{pointer-events:none;animation:.18s ease-in both overlayOut}.managerOverlay.closing .managerDialog{animation:.18s ease-in both drawerOut}.managerHeader{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:20px;padding-bottom:24px;display:flex}.managerHeader .eyebrow{margin-bottom:8px}.managerHeader h2{margin:0;font-size:32px}.closeButton{color:var(--muted);text-underline-offset:3px;background:0 0;border:0;padding:5px 0;font-size:12px;text-decoration:underline}.closeButton:disabled{cursor:wait;opacity:.55}.managerError{margin-top:20px}.activityPanel{border:1px solid var(--line);background:#f9f6ee8c;border-radius:5px;margin:24px 0 28px;padding:20px}.streakStats{grid-template-columns:1.25fr repeat(3,1fr);gap:7px;display:grid}.streakStats>div{background:#ebe6dc;border:1px solid #ddd5c7;border-radius:3px;grid-template-columns:auto 1fr;align-items:baseline;column-gap:5px;min-width:0;padding:13px 12px;display:grid}.streakStats>div.primaryStreak{color:#f8f4ea;border-color:var(--green);background:var(--green)}.streakStats span{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;grid-column:1/-1;margin-bottom:8px;font-size:9px;font-weight:700}.streakStats .primaryStreak span{color:#f8f4eabf}.streakStats strong{font-family:var(--serif);font-size:28px;font-weight:600;line-height:1}.streakStats small{color:var(--muted);font-size:9px}.streakStats .primaryStreak small{color:#f8f4eacc}.calendarHeader{justify-content:space-between;align-items:flex-end;gap:16px;margin:22px 0 13px;display:flex}.calendarKicker{color:var(--muted);text-transform:uppercase;letter-spacing:.09em;margin:0 0 4px;font-size:9px;font-weight:700}.calendarHeader h3{font-family:var(--serif);margin:0;font-size:20px;font-weight:600}.calendarNav{gap:6px;display:flex}.calendarNav button{border:1px solid var(--line);color:var(--muted);background:var(--surface);border-radius:3px;padding:6px 8px;font-size:9px}.calendarNav button:hover:not(:disabled){border-color:var(--brass);color:var(--ink)}.calendarNav button:disabled{cursor:not-allowed;opacity:.35}.calendarWeekdays,.calendarGrid{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;display:grid}.calendarWeekdays{margin-bottom:6px}.calendarWeekdays span{color:#8f948c;text-align:center;text-transform:uppercase;font-size:8px;font-weight:700}.calendarDay{min-height:50px;color:var(--muted);font-variant-numeric:tabular-nums;background:#f9f6ee9e;border:1px solid #ded7ca;border-radius:3px;padding:7px;font-size:10px;position:relative}.calendarDay.outsideMonth{opacity:.32}.calendarDay.today{box-shadow:inset 0 0 0 1px var(--brass);border-color:var(--brass)}.calendarDay.intensityOne{color:#294a3a;background:#dbe5da;border-color:#aebead}.calendarDay.intensityTwo{color:#f7f3e9;background:#607f6c;border-color:#607f6c}.calendarDay.intensityThree{border-color:var(--green);color:#f7f3e9;background:var(--green)}.sessionMark{background:currentColor;border-radius:50%;place-items:center;min-width:9px;height:9px;font-size:7px;display:grid;position:absolute;bottom:6px;right:6px}.intensityTwo .sessionMark,.intensityThree .sessionMark{color:#f7f3e9;background:#ffffff40}.calendarNote{color:var(--muted);font-family:var(--serif);margin:12px 0 0;font-size:10px;font-style:italic;line-height:1.4}.repairPanel{background:#f3ecdf;border:1px solid #d4c8b7;border-radius:4px;grid-template-columns:minmax(160px,1fr) auto;align-items:end;gap:18px;margin:24px 0;padding:18px;display:grid}.repairPanel h3,.historyHeading h3{font-family:var(--serif);margin:0;font-size:17px}.repairPanel p,.managerHelp{color:var(--muted);margin:7px 0 0;font-size:12px;line-height:1.45}.compactForm{grid-template-columns:66px 66px auto;align-items:end;gap:8px;display:grid}.compactForm label{color:var(--muted);grid-row:1;font-size:10px;font-weight:700}.compactForm label:first-of-type{grid-column:1}.compactForm label:nth-of-type(2){grid-column:2}.compactForm input{grid-row:2;width:66px}.compactForm button{grid-row:2}.managerDialog input,.managerDialog select{border:1px solid var(--line);color:var(--ink);background:var(--surface);border-radius:3px;outline:none;padding:10px 11px}.managerDialog input:focus,.managerDialog select:focus{border-color:var(--green);box-shadow:0 0 0 3px #2446371a}.secondaryButton{border:1px solid var(--green);color:#f8f4ea;background:var(--green);border-radius:3px;padding:10px 14px;font-size:12px;font-weight:700}.secondaryButton:hover{background:var(--green-hover)}.secondaryButton:disabled,.dangerButton:disabled{cursor:wait;opacity:.5}.addSessionPanel{border:1px solid var(--line);background:#f9f6ee73;border-radius:4px;margin-bottom:28px;padding:16px 18px}.addSessionPanel summary{cursor:pointer;font-size:13px;font-weight:700}.managerForm{flex-direction:column;gap:13px;margin-top:16px;display:flex}.managerForm label{color:var(--muted);flex-direction:column;gap:6px;font-size:10px;font-weight:700;display:flex}.formRow{grid-template-columns:1fr 1fr 1.4fr;gap:10px;display:grid}.managerForm .secondaryButton{align-self:flex-start}.historySection{padding-top:4px}.historyHeading{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.historyHeading span{color:var(--muted);font-size:11px}.historyList{flex-direction:column;display:flex}.historyItem{border-top:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:20px;padding:17px 0;display:flex}.historyBody{flex-direction:column;gap:5px;min-width:0;display:flex}.historyBody strong,.editForm strong{font-size:13px;line-height:1.35}.sessionMeta{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.sessionMeta>span{color:var(--muted);font-size:11px}.timeSpent{color:var(--brown);font-family:var(--sans);white-space:nowrap;background:#eee3d5;border:1px solid #d5c3ae;border-radius:3px;padding:3px 6px;font-size:10px;font-weight:700}.timeSpent.missingTime{color:#747b74;background:#e8e9e3;border-color:#d5d8d1;font-weight:500}.historyBody p{color:var(--ink-soft);font-family:var(--serif);margin:3px 0 0;font-size:13px;font-style:italic;line-height:1.4}.itemActions{flex:none;align-items:center;gap:12px;display:flex}.dangerButton{color:var(--danger);text-underline-offset:3px;background:0 0;border:0;padding:2px;font-size:11px;text-decoration:underline}.editForm{width:100%;margin-top:0}.editRow{grid-template-columns:.75fr 1.35fr .8fr}.emptyHistory{border-top:1px solid var(--line);color:var(--muted);font-family:var(--serif);margin:0;padding:26px 0;font-size:13px;font-style:italic}@keyframes spin{to{transform:rotate(360deg)}}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}@keyframes overlayOut{0%{opacity:1}to{opacity:0}}@keyframes drawerIn{0%{opacity:.72;transform:translate(14px)}to{opacity:1;transform:translate(0)}}@keyframes drawerOut{0%{opacity:1;transform:translate(0)}to{opacity:.72;transform:translate(10px)}}@media (prefers-reduced-motion:reduce){.managerOverlay,.managerDialog,.managerOverlay.closing,.managerOverlay.closing .managerDialog{animation-duration:1ms}}@media (width<=600px){.topbar{width:calc(100% - 32px);padding-top:20px}.headerProgress{display:none}.headerRight{gap:7px}.brand{font-size:18px}.sessionCard{padding:46px 4px 40px}.successNote>div{flex-direction:column;align-items:flex-start;gap:2px}.resultGrid{gap:6px}.resultGrid button{min-height:72px;padding-inline:4px;font-size:11px}footer{text-align:center;justify-content:center;width:calc(100% - 32px)}footer span:last-child{display:none}.authCard{padding:40px 24px 35px}.managerDialog{padding:26px 20px 40px}.streakButton{padding:7px 9px}.streakButton span:last-child{font-size:0}.streakButton strong{font-size:12px}.streakButton span:last-child:after{content:" day streak";font-size:10px}.streakStats{grid-template-columns:repeat(2,1fr)}.calendarGrid,.calendarWeekdays{gap:4px}.calendarDay{min-height:42px;padding:6px}.repairPanel{grid-template-columns:1fr;align-items:start}.compactForm{grid-template-columns:72px 72px auto}.compactForm input{width:72px}.formRow,.editRow{grid-template-columns:1fr}.historyItem{flex-direction:column;gap:12px}}
