:root{font-synthesis:none;--radius:12px;--card-radius:16px;--space-1:8px;--space-2:12px;--space-3:16px;--space-4:24px;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;min-width:280px;margin:0;font-size:16px;line-height:1.5}main{max-width:640px;padding:max(8px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) calc(96px + env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));margin:0 auto}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.035em;overflow-wrap:anywhere;font-size:26px;font-weight:750;line-height:1.25}h2{letter-spacing:-.02em;margin-bottom:12px;font-size:18px;line-height:1.4}h3{font-size:16px}button,input,select,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}.button{border:1px solid var(--line);border-radius:var(--radius);background:var(--soft);min-width:0;max-width:100%;min-height:44px;color:var(--ink);cursor:pointer;overflow-wrap:anywhere;justify-content:center;align-items:center;gap:8px;padding:10px 14px;font-size:14px;font-weight:600;line-height:1.4;display:inline-flex}.button:active:not(:disabled){filter:brightness(.92)}button:disabled{opacity:.5;cursor:default}:where(button,select,input,textarea,summary):focus-visible{outline:2px solid var(--accent);outline-offset:3px}.primary{background:var(--button-bg);color:var(--button-ink);border-color:#0000}.secondary{background:var(--soft);color:var(--ink)}.danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}.ui-icon,.button svg{flex-shrink:0;width:20px;height:20px}.icon-label{align-items:center;gap:12px;min-width:0;display:inline-flex}.page-heading{justify-content:space-between;align-items:center;gap:12px;padding:20px 0 24px;display:flex}.page-heading h1{outline:none;margin:0}.heading-actions{align-items:center;gap:8px;display:flex}.refresh,.help-button{background:var(--surface);width:44px;height:44px;color:var(--ink);flex-shrink:0;padding:0}.goal-toolbar,.help-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:12px 0;display:flex}.back,.help-back{color:var(--muted);background:0 0;border-color:#0000;padding-inline:4px}.goal-toolbar .back svg{stroke:currentColor;stroke-width:1.8px;fill:none}.filters{background:var(--soft);border-radius:var(--radius);flex-wrap:wrap;gap:8px;margin-bottom:16px;padding:4px;display:flex}.filters .button{color:var(--muted);background:0 0;border-color:#0000;flex:1;padding-inline:8px;font-size:13px}.filters [aria-pressed=true]{background:var(--surface);color:var(--accent);border-color:var(--line)}.goals,.participants,.timeline,.day-actions,.goal-operations,.help-topics,.feature-list{margin:0;padding:0;list-style:none}.goal,.day-report,.activity,.goal-history,.hardcore-setting,.help-content,.season-form,.feature-form,.state{background:var(--surface);border:1px solid var(--line);border-radius:var(--card-radius);margin-bottom:16px;padding:16px}.goal h2{white-space:pre-wrap;margin:0;font-size:16px;font-weight:650;line-height:1.5}.goal-body{min-width:0}.card-link{text-align:left;width:100%;font:inherit;white-space:pre-wrap;background:0 0;border:0;border-radius:0;justify-content:space-between;gap:12px;padding:0;display:flex}.card-link svg{width:18px;height:18px;stroke:var(--muted);stroke-width:1.8px;fill:none;flex-shrink:0}.badges,.goal-context{flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:8px;display:flex}.badge{color:var(--muted);border-radius:6px;font-size:12px;display:inline-block}.badge.active{color:var(--accent)}.badge.hardcore{color:var(--danger)}.goal-meta,.card-note,.goal-context,.season-dates,.season-footer{color:var(--muted);overflow-wrap:anywhere;font-size:13px;line-height:1.5}.goal-meta{margin:8px 0 0}.personal-goal .goal-meta{flex-wrap:wrap;gap:8px 12px;display:flex}.card-note{margin:8px 0}code{font:inherit;color:var(--accent)}.state h3{margin:0 0 8px}.state p{color:var(--muted);font-size:14px}.state p:last-child{margin-bottom:0}.loader{border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;animation:1s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.loader{animation:none}}.bottom-nav{z-index:5;width:100%;max-width:640px;padding:8px max(12px, env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));background:var(--surface);border-top:1px solid var(--line);gap:4px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav .button{min-height:54px;color:var(--muted);background:0 0;border:0;flex-direction:column;flex:1;gap:4px;padding:4px;font-size:11px}.bottom-nav [aria-current=page]{background:var(--soft);color:var(--accent)}.bottom-nav svg{width:22px;height:22px}.progress-block{margin:16px 0}.progress-label,.season-teaser-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.progress-label{color:var(--muted);margin-bottom:8px;font-size:13px}progress{appearance:none;background:var(--line);width:100%;height:8px;accent-color:var(--accent);border:0;border-radius:8px;display:block;overflow:hidden}progress::-webkit-progress-bar{background:var(--line)}progress::-webkit-progress-value{background:var(--accent);border-radius:8px}progress::-moz-progress-bar{background:var(--accent);border-radius:8px}details{margin-top:12px}summary{cursor:pointer;min-height:48px;padding:12px 0;font-size:14px;font-weight:600}.disclosure>summary{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;list-style:none;display:flex}.disclosure>summary::-webkit-details-marker{display:none}.disclosure>summary:after{content:"";border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);flex-shrink:0;width:7px;height:7px;margin-right:4px;transform:rotate(-45deg)}.disclosure[open]>summary:after{transform:rotate(45deg)}.participants li{overflow-wrap:anywhere;justify-content:space-between;gap:12px;padding:8px 0;font-size:14px;display:flex}.participants li>span:last-child{color:var(--muted);text-align:right}.mission-comment,.feature-text,.season-description{white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px;line-height:1.6}.pagination{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:16px 0;font-size:12px;display:flex}.pagination .button{font-size:13px}.detail-title{white-space:pre-wrap;margin:16px 0 24px}.goal-state{align-items:center;gap:8px;display:inline-flex}.goal-state:before{content:"";background:currentColor;border-radius:50%;width:8px;height:8px}.goal-state.active{color:var(--accent)}.goal-state.failed,.notice{color:var(--danger)}.goal-primary-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px;display:grid}.goal-primary-actions>.danger{grid-column:1/-1}.goal-primary-actions svg{fill:none;stroke:currentColor;stroke-width:1.8px}.hardcore-setting{justify-content:space-between;align-items:center;gap:16px;display:flex}.hardcore-label{align-items:center;gap:8px;font-weight:650;display:flex}.hardcore-label .help-button{width:32px;min-height:44px;color:var(--muted);background:0 0;border:0}.hardcore-setting .card-note{margin:0}.hardcore-setting [role=switch]{background:0 0;border:0;flex-shrink:0;width:52px;height:44px;padding:0 4px;position:relative}.hardcore-setting [role=switch]:before{content:"";background:var(--muted);border-radius:16px;position:absolute;inset:10px 2px}.hardcore-setting [aria-checked=true]:before{background:var(--accent)}.hardcore-setting [role=switch] span{background:var(--surface);border-radius:50%;width:20px;height:20px;position:absolute;left:4px}.hardcore-setting [aria-checked=true] span{left:28px}.timeline li{border-left:1px solid var(--line);margin-left:4px;padding:0 0 24px 20px;position:relative}.timeline li:last-child{border-left-color:#0000;padding-bottom:0}.timeline li:before{content:"";background:var(--accent);border-radius:50%;width:9px;height:9px;position:absolute;top:6px;left:-5px}.timeline time{color:var(--muted);font-size:13px}.timeline p{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}.history-empty{color:var(--muted);margin:0;font-size:14px}.notice,.goal-notice{overflow-wrap:anywhere;margin:12px 0;font-size:13px}.goal-notice{color:var(--accent)}.day-anchor{outline:none;scroll-margin-top:16px}.day-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.day-heading h2{letter-spacing:-.03em;margin:0;font-size:24px}.day-title{flex:auto;min-width:0}.day-title>time{color:var(--muted);font-size:13px}.report-result{background:var(--soft);color:var(--muted);border-radius:8px;align-items:center;gap:6px;margin:4px 0;padding:6px 10px;font-size:12px;font-weight:600;display:inline-flex}.report-result.passed{color:var(--accent);background:var(--activity-bg)}.report-result.failed,.needs-report .report-result{color:var(--danger);background:var(--danger-bg)}.day-report.needs-report{border-color:var(--danger)}.report-reminder{color:var(--muted);margin:16px 0 0;font-size:14px}.report-reminder code{color:var(--ink);font-weight:600}.report-result .ui-icon{width:16px;height:16px}.day-actions{margin-top:var(--space-3)}.day-actions li{white-space:pre-wrap;overflow-wrap:anywhere;align-items:flex-start;gap:12px;padding:12px 0;display:flex}.day-actions li:first-child{padding-top:0}.day-actions li:last-child{padding-bottom:0}.day-actions li+li{border-top:1px solid var(--line)}.day-actions li>div{min-width:0}.day-actions .badge{display:block}.day-report>.disclosure{margin-top:var(--space-3)}.day-report>.disclosure>summary{min-height:44px;padding:10px 0}.day-report>.disclosure .icon-label>.ui-icon{width:24px}.action-mark{width:24px;height:24px;color:var(--button-ink);background:var(--button-bg);border-radius:8px;flex-shrink:0;place-items:center;display:grid}.action-mark .ui-icon{width:16px;height:16px}.action-mark.rejected{color:var(--danger);background:var(--danger-bg)}.activity{background:var(--activity-bg)}.activity-summary{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;margin-bottom:12px;display:flex}.activity-summary h2{margin:0;font-size:16px}.activity-summary>span{color:var(--muted);font-size:13px}.calendar-grid{--heat-gap:4px;width:100%;max-width:calc(24px + var(--calendar-weeks) * 18px + (var(--calendar-weeks) - 1) * var(--heat-gap));margin-inline:auto}.calendar-body{align-items:stretch;gap:8px;display:flex}.weekdays{gap:var(--heat-gap);color:var(--muted);flex:0 0 16px;grid-template-rows:repeat(7,1fr);font-size:10px;display:grid}.weekdays span{align-items:center;display:flex}.heatmap{gap:var(--heat-gap);flex:1;grid-template-rows:repeat(7,auto);grid-auto-flow:column;min-width:0;display:grid}.heat-cell{aspect-ratio:1;background:var(--heat-0);border:0;border-radius:3px;width:100%;min-height:0;padding:0;display:block;position:relative}.heat-cell.level-1{background:var(--heat-1)}.heat-cell.level-2{background:var(--heat-2)}.heat-cell.level-3{background:var(--heat-3)}.heat-cell.level-4{background:var(--heat-4)}.heat-cell.rejected:after,.calendar-key i{content:"";background:var(--danger);border:1px solid var(--activity-bg);border-radius:50%;width:5px;height:5px}.heat-cell.rejected:after{position:absolute;bottom:-1px;right:-1px}.heat-cell[aria-pressed=true]{outline:2px solid var(--ink);outline-offset:1px}.calendar-dates{color:var(--muted);justify-content:space-between;gap:8px;margin-top:8px;font-size:10px;display:flex}.calendar-legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;font-size:11px;display:flex}.legend-item{align-items:center;gap:4px;display:inline-flex}.legend-item .heat-cell{width:10px}.activity-footer{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:12px;font-size:11px;display:flex}.calendar-key{align-items:center;gap:5px;margin:0;display:flex}.calendar-key i{width:8px;height:8px}label{font-size:14px;font-weight:600}textarea,input,select{border:1px solid var(--line);border-radius:var(--radius);width:100%;min-width:0;min-height:44px;color:var(--ink);background:var(--bg);padding:12px;font-size:16px}textarea{resize:vertical;display:block}::placeholder{color:var(--muted);opacity:1}.goal-creation form{background:var(--surface);border:1px solid var(--line);border-radius:var(--card-radius);margin-bottom:16px;padding:16px}.goal-creation label{margin-bottom:12px;display:block}.add-goal{width:100%;margin-bottom:20px}.form-actions,.feature-actions{flex-wrap:wrap;gap:12px;margin-top:16px;display:flex}.form-actions .button,.feature-actions .button{flex:auto}.goal-operations li{border:1px solid var(--line);border-radius:var(--card-radius);background:var(--surface);overflow-wrap:anywhere;margin-bottom:16px;padding:16px}dialog{border:1px solid var(--line);border-radius:var(--card-radius);width:min(420px,100vw - 32px);max-height:calc(100dvh - 48px);color:var(--ink);background:var(--surface);padding:24px;overflow:auto}dialog::backdrop{background:var(--backdrop)}dialog p{overflow-wrap:anywhere;font-size:14px}.confirm-goal{white-space:pre-wrap;font-weight:600}[hidden]{display:none!important}.help-screen>h1,.season-screen>h1{outline:none;margin-bottom:20px}.help-content p,.changelog li{font-size:14px;line-height:1.65}.help-intro{margin-bottom:24px}.help-example{border-left:2px solid var(--accent);margin-bottom:24px;padding-left:14px}.help-example>span,.changelog time{color:var(--muted);margin-bottom:8px;font-size:12px;display:block}.help-question{margin-bottom:24px}.help-content h3{margin-bottom:8px}.help-related{border-top:1px solid var(--line);padding-top:16px}.help-related .button,.help-updates,.help-topics .button{text-align:left;background:0 0;border:0;border-radius:0;justify-content:space-between;gap:12px;width:100%;padding:16px 0;display:flex}.help-topics li+li{border-top:1px solid var(--line)}.help-topics strong{font-size:15px;display:block}.help-topics small{color:var(--muted);margin-top:4px;font-size:13px;font-weight:400;line-height:1.5;display:block}.help-related .ui-icon,.help-topics .ui-icon{color:var(--muted)}.changelog section+section{border-top:1px solid var(--line);margin-top:24px;padding-top:24px}.changelog ul{margin:12px 0 0;padding-left:18px}.changelog li+li{margin-top:12px}.menu-heading{color:var(--muted);letter-spacing:.02em;margin:4px 4px 10px;font-size:12px;font-weight:500}.menu-list,.settings-list{background:var(--surface);border-radius:var(--card-radius);margin:0 0 24px;padding:0 16px;list-style:none}.menu-list>li+li,.settings-list>.select-row+.select-row{border-top:1px solid var(--line)}.menu-row,.select-row{width:100%;min-height:60px;color:var(--ink);text-align:left;background:0 0;border:0;border-radius:0;align-items:center;gap:12px;padding:14px 0;font-size:15px;font-weight:500;line-height:1.4;display:flex}.menu-copy{flex:1;min-width:0}.menu-copy>span{display:block}.menu-copy small{color:var(--muted);margin-top:4px;font-size:12px;font-weight:400;line-height:1.4;display:block}.menu-icon{width:32px;height:32px;color:var(--muted);flex-shrink:0;place-items:center;display:grid}.menu-row>.ui-icon,.select-row>.ui-icon{width:16px;height:16px;color:var(--muted)}.select-row{cursor:pointer;position:relative}.select-row small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-row select{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.select-row:focus-within{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.select-row.is-disabled{opacity:.5;cursor:default}.feature-form{gap:10px;margin-top:20px;display:grid}.feature-actions [aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.season-teaser{background:var(--surface);border:1px solid var(--line);border-radius:var(--card-radius);text-align:left;width:100%;margin-bottom:16px;padding:16px;display:block}.eyebrow{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px;font-size:11px;font-weight:500;display:block}.season-teaser-title strong{overflow-wrap:anywhere;font-size:20px}.season-teaser progress{margin:16px 0 10px}.season-footer{flex-wrap:wrap;justify-content:space-between;gap:8px;font-weight:400;display:flex}.season-dates{font-size:12px}.season-section-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.season-section-heading h2{margin:0}.season-progress{background:var(--activity-bg);border-radius:var(--card-radius);margin:20px 0 16px;padding:16px;font-size:14px}.season-progress progress{margin-top:12px}.season-admin{margin-bottom:24px}.season-create{margin-bottom:var(--space-3)}.season-form label{min-width:0;margin:0 0 16px;display:block}.season-form input,.season-form textarea{margin-top:8px}.season-date-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.season-date-fields input{padding-inline:8px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=350px){main{padding-inline:max(16px, env(safe-area-inset-left))}.page-heading{gap:8px}.heading-actions{gap:4px}.filters .button{padding-inline:4px;font-size:12px}.goal-primary-actions,.season-date-fields{grid-template-columns:1fr}.calendar-grid{--heat-gap:3px}.calendar-legend{gap:6px}}
