:root{--bg: #EFEEEA;--ink: #17181A;--body: #3A3B3E;--muted: #6E7075;--faint: #96948D;--ghost: #B0AEA6;--line: #DEDCD6;--line2: #E4E2DC;--hair: #F0EEE9;--card: #FFFFFF;--cell: #FBFAF8;--cell-off: #F5F4F1;--panel: #F7F6F3;--rust: #B4432B;--rust-dark: #8E3421;--green: #2F5D50;--blue: #2B4C7E;--ochre: #C1873B;--display: "Bricolage Grotesque", sans-serif}html,body{margin:0;padding:0;background:var(--bg)}*{box-sizing:border-box}body{font-family:Instrument Sans,system-ui,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}a{color:var(--rust);text-decoration:none;cursor:pointer}a:hover{color:var(--rust-dark);text-decoration:underline}input,textarea,button,select{font:inherit;color:inherit}textarea{resize:none}input::placeholder,textarea::placeholder{color:var(--ghost)}input:focus,textarea:focus{outline:none}.kicker{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}.display{font-family:var(--display)}.login{display:grid;grid-template-columns:1.05fr 1fr;min-height:100vh}.login-hero{background:var(--ink);color:var(--bg);padding:56px 56px 48px;display:flex;flex-direction:column;justify-content:space-between;min-height:100vh}.login-logo{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:.16em;text-transform:uppercase}.login-title{font-family:var(--display);font-size:58px;line-height:.98;letter-spacing:-.02em;max-width:480px;text-wrap:pretty}.login-sub{margin-top:22px;font-size:16px;line-height:1.6;color:#9c9a93;max-width:360px}.login-footer{display:flex;gap:26px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:48px}.login-form{width:100%;max-width:320px}.login-form .kicker{font-size:11px;letter-spacing:.12em;color:var(--muted)}.login-input{width:100%;border:none;border-bottom:1px solid var(--line);background:transparent;padding:12px 2px;font-size:17px}.btn-primary{margin-top:30px;width:100%;border:none;background:var(--rust);color:#fff;padding:14px;font-size:15px;font-weight:600;cursor:pointer}.btn-primary:hover{background:var(--rust-dark)}.btn-secondary{margin-top:10px;width:100%;border:1px solid var(--line);background:transparent;padding:14px;font-size:15px;font-weight:500;cursor:pointer}.btn-secondary:hover{border-color:var(--ink)}.login-note{margin-top:18px;font-size:13px;color:var(--muted);line-height:1.6}.login-error{margin-top:14px;font-size:13px;color:var(--rust)}.home{max-width:1080px;margin:0 auto;padding:34px 44px 90px}.home-bar{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:18px}.home-logo{font-family:var(--display);font-weight:700;font-size:16px;letter-spacing:.16em;text-transform:uppercase}.home-bar-right{display:flex;gap:18px;align-items:baseline;font-size:13px;color:var(--muted)}.home-head{margin-top:46px;display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.home-title{font-family:var(--display);font-size:38px;letter-spacing:-.02em;line-height:1}.home-sub{margin-top:8px;font-size:14px;color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin-top:26px}.card{background:var(--card);border:1px solid var(--line2);padding:20px;cursor:pointer;display:flex;flex-direction:column;gap:16px;min-height:176px;transition:border-color .14s,transform .14s}.card:hover{border-color:var(--ink);transform:translateY(-2px)}.card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.card-name{font-family:var(--display);font-size:24px;letter-spacing:-.01em}.card-level{margin-top:3px;font-size:12px;color:var(--muted);letter-spacing:.04em}.card-flag{width:8px;height:8px;border-radius:50%;margin-top:8px;flex:none}.card-focus{font-size:13px;line-height:1.5;color:var(--body)}.card-foot{margin-top:auto;display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted)}.card-new{border:1px dashed #C9C6BE;padding:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;min-height:176px;color:var(--muted);font-size:14px}.card-new:hover{border-color:var(--ink);color:var(--ink)}.portal{display:flex;flex-direction:column;height:100vh}.portal-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 28px;border-bottom:1px solid var(--line);background:var(--bg);flex:none}.portal-bar-left{display:flex;align-items:baseline;gap:18px}.portal-back{font-size:13px;color:var(--muted)}.portal-name{font-family:var(--display);font-size:22px;letter-spacing:-.01em}.portal-level{font-size:12px;color:var(--muted);letter-spacing:.04em}.portal-bar-right{display:flex;align-items:center;gap:16px;font-size:12px;color:var(--muted)}.portal-body{display:flex;flex:1;min-height:0}.profile{width:260px;flex:none;border-right:1px solid var(--line);padding:24px 22px;overflow-y:auto}.profile-inner{display:flex;flex-direction:column;gap:22px}.profile-value{margin-top:7px;font-size:13px;line-height:1.55}.profile-value.injuries{color:var(--rust)}.profile textarea.profile-edit,.profile input.profile-edit{margin-top:7px;width:100%;border:none;background:transparent;font-size:13px;line-height:1.55;padding:0}.profile-grid{margin-top:7px;display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:13px}.profile-grid .label{color:var(--muted)}.profile-grid input{border:none;background:transparent;padding:0;font-size:13px;min-width:0;width:100%}.adherence-track{margin-top:8px;height:3px;background:var(--line2)}.adherence-fill{height:3px;background:var(--green)}.cal-col{flex:1;min-width:0;display:flex;flex-direction:column;overflow-y:auto}.cal-head{padding:22px 26px 0;display:flex;align-items:center;justify-content:space-between;gap:20px}.cal-head-left{display:flex;align-items:baseline;gap:14px}.cal-month{font-family:var(--display);font-size:26px;letter-spacing:-.01em}.cal-nav{font-size:15px;color:var(--muted)}.month-goal-wrap{flex:1;max-width:460px}.month-goal{width:100%;border:none;border-bottom:1px solid var(--line);background:transparent;padding:6px 2px;font-size:14px}.month-goal:focus{border-color:var(--rust)}.cal-grid-wrap{padding:18px 26px 40px}.cal-grid{display:grid;grid-template-columns:124px repeat(7,minmax(0,1fr));gap:1px;background:var(--line2);border:1px solid var(--line2)}.cal-corner{background:var(--bg)}.cal-dayname{background:var(--bg);padding:6px 8px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.week-gutter{background:var(--bg);padding:8px 7px;display:flex;flex-direction:column;gap:6px}.week-label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.week-focus{border:none;background:transparent;font-size:11px;line-height:1.35;color:var(--body);height:76px;padding:0;width:100%;min-width:0}.day-cell{background:var(--cell);min-height:104px;padding:7px 8px;cursor:pointer;display:flex;flex-direction:column;gap:5px}.day-cell.off{background:var(--cell-off);cursor:default}.day-cell.selected{background:#fff;box-shadow:inset 0 0 0 2px var(--ink)}.day-cell-top{display:flex;align-items:center;justify-content:space-between}.day-num{font-size:12px;font-weight:500;color:var(--muted)}.day-cell.selected .day-num{color:var(--ink)}.day-dot{width:5px;height:5px;border-radius:50%;background:transparent}.day-task{font-size:11px;line-height:1.3;padding-left:6px;border-left:2px solid;color:#26282b}.legend{margin-top:14px;display:flex;flex-wrap:wrap;gap:14px;font-size:11px;color:var(--muted)}.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-swatch{width:8px;height:2px}.day-panel{width:404px;flex:none;border-left:1px solid var(--line);background:var(--card);overflow-y:auto}.day-panel-inner{padding:22px 24px 60px;display:flex;flex-direction:column;gap:26px}.sel-label{font-family:var(--display);font-size:21px;letter-spacing:-.01em}.sel-sub{margin-top:3px;font-size:12px;color:var(--faint)}.divider{height:1px;background:var(--line2)}.section{display:flex;flex-direction:column;gap:12px}.task{border-left:2px solid;padding-left:12px;display:flex;flex-direction:column;gap:8px}.task-title{border:none;background:transparent;font-family:var(--display);font-size:16px;padding:0;width:100%}.chip-row{display:flex;flex-wrap:wrap;gap:5px;min-width:0}.chip{cursor:pointer;font-size:11px;padding:3px 8px;border:1px solid var(--line2);color:var(--muted);background:transparent}.task-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.task-summary{font-size:12px;color:var(--muted);font-family:var(--display)}.task-fields input{border:none;border-bottom:1px solid var(--line2);background:transparent;font-size:13px;padding:4px 0;width:100%;min-width:0}.task-notes{border:none;background:var(--panel);font-size:13px;line-height:1.5;padding:8px 10px;height:70px}.add-session{cursor:pointer;font-size:13px;color:var(--muted);padding:8px 0;border-top:1px solid var(--hair)}.add-session:hover{color:var(--rust)}.remove-session{cursor:pointer;font-size:11px;color:var(--ghost);align-self:flex-start}.remove-session:hover{color:var(--rust)}.diary-head{display:flex;align-items:baseline;justify-content:space-between}.diary-meta{font-size:11px;color:var(--ghost)}.status-row{display:flex;gap:6px}.status-chip{cursor:pointer;font-size:11px;padding:4px 10px;border:1px solid var(--line2);color:var(--muted);background:transparent}.diary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}.field{display:flex;flex-direction:column;gap:5px}.field-label{font-size:11px;color:var(--muted)}.field-label.pain{color:var(--rust)}.field input{border:none;border-bottom:1px solid var(--line2);background:transparent;font-size:13px;padding:4px 0;width:100%;min-width:0}.field input.pain{color:var(--rust)}.scale{display:flex;gap:3px}.scale span{cursor:pointer;flex:1;text-align:center;font-size:11px;padding:4px 0;background:var(--hair);color:var(--muted)}.scale span.on{background:var(--ink);color:var(--bg)}.diary-text{border:1px solid var(--line2);background:var(--card);font-size:14px;line-height:1.6;padding:12px;height:168px;width:100%}.diary-text:focus{border-color:var(--ink)}.thread{display:flex;flex-direction:column;gap:10px}.comment{display:flex;flex-direction:column;gap:3px;border-left:2px solid;padding-left:10px}.comment-who{font-size:11px;color:var(--faint)}.comment-text{font-size:13px;line-height:1.55;white-space:pre-wrap}.comment-input{border:none;background:var(--panel);font-size:13px;line-height:1.5;padding:10px 12px;height:58px}.saved-label{font-size:12px;color:var(--muted);min-width:60px;text-align:right}.copy-notice{font-size:12px;color:var(--rust)}.phone-stage{min-height:100vh;background:var(--ink);display:flex;justify-content:center;padding:28px 16px}.phone{width:390px;background:var(--bg);border-radius:34px;overflow:hidden;box-shadow:0 24px 60px #0006;display:flex;flex-direction:column;min-height:780px;max-height:calc(100vh - 56px)}.phone-head{flex:none;padding:16px 20px 12px;display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--line)}.phone-month{font-family:var(--display);font-size:19px;letter-spacing:-.01em}.phone-goal{font-size:11px;color:var(--muted);margin-top:2px}.phone-user{font-size:11px;color:var(--muted)}.phone-nav{font-size:13px;color:var(--muted);margin-right:8px}.view-switch{flex:none;display:flex;gap:6px;padding:10px 14px 0}.view-switch span{cursor:pointer;flex:1;text-align:center;font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:6px 0;border:1px solid var(--line2);color:var(--muted)}.view-switch span.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}.mini-grid-wrap{flex:none;padding:12px 14px 0}.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line2);border:1px solid var(--line2)}.mini-dayname{background:var(--bg);padding:4px;font-size:9px;text-align:center;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.mini-cell{background:var(--cell);aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer}.mini-cell.off{background:var(--cell-off);cursor:default}.mini-cell.selected{background:#fff;box-shadow:inset 0 0 0 2px var(--ink)}.mini-num{font-size:12px;color:var(--muted)}.mini-cell.selected .mini-num{color:var(--ink)}.mini-dot{width:4px;height:4px;border-radius:50%;background:transparent}.phone-body{flex:1;overflow-y:auto;padding:18px 20px 34px;display:flex;flex-direction:column;gap:20px}.phone-body>*{flex-shrink:0}.phone-sel{font-family:var(--display);font-size:20px}.phone-saved{font-size:11px;color:var(--faint);margin-top:2px}.phone-tasks{display:flex;flex-direction:column;gap:10px}.phone-task{background:var(--card);border-left:2px solid;padding:11px 13px;display:flex;flex-direction:column;gap:5px}.phone-task-title{font-family:var(--display);font-size:15px}.phone-task-meta{font-size:12px;color:var(--muted)}.phone-task-notes{font-size:13px;line-height:1.5;color:var(--body);white-space:pre-wrap}.phone-status{display:flex;gap:6px}.phone-status span{cursor:pointer;flex:1;text-align:center;font-size:12px;padding:10px 0;border:1px solid var(--line2);color:var(--muted);background:transparent}.phone-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.phone-grid .scale span{font-size:12px;padding:8px 0}.phone-grid input{border:none;border-bottom:1px solid var(--line);background:transparent;font-size:14px;padding:6px 0;width:100%;min-width:0}.phone-diary-text{border:1px solid var(--line2);background:var(--card);font-size:14px;line-height:1.6;padding:12px;height:150px}.phone-diary-text:focus{border-color:var(--ink)}.phone-plan .task-title{font-size:15px}.phone-plan .task-notes{background:var(--card)}.phone-thread{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--line);padding-top:16px}.phone-thread .comment-input{background:var(--card);height:54px}.tests-page{flex:1;overflow-y:auto;padding:24px 28px 60px}.tests-page .tests{max-width:860px;margin:0 auto}.tests{display:flex;flex-direction:column;gap:18px}.tests-switch{padding:0}.tests-chart-card{background:var(--card);border:1px solid var(--line2);padding:16px 12px 12px}.tests-panels{display:flex;flex-direction:column;gap:18px}.tests-panels .kicker{padding:0 4px 6px}.chart-wrap{position:relative;width:100%}.chart-empty{font-size:13px;color:var(--faint);padding:30px 10px;text-align:center}.chart-tip{position:absolute;top:10px;background:var(--ink);color:var(--bg);font-size:11px;padding:8px 10px;pointer-events:none;display:flex;flex-direction:column;gap:4px;white-space:nowrap;z-index:2}.chart-tip-date{color:#9c9a93}.chart-tip-row{display:flex;align-items:center;gap:6px}.chart-tip-row b{margin-left:auto;padding-left:10px;font-weight:600}.chart-tip-swatch{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.chart-legend{display:flex;flex-wrap:wrap;gap:12px;padding:10px 4px 0;font-size:11px;color:var(--muted)}.chart-legend-item{display:inline-flex;align-items:center;gap:6px}.chart-note{padding:10px 4px 0;font-size:12px;line-height:1.5;color:var(--muted)}.tests-table-wrap{overflow-x:auto}.tests-table{width:100%;border-collapse:collapse;font-size:13px}.tests-table th{text-align:left;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-weight:500;padding:6px 8px;border-bottom:1px solid var(--line2);white-space:nowrap}.tests-th-sub{font-size:9px;letter-spacing:.06em;color:var(--ghost);margin-top:2px}.tests-table td{padding:8px;border-bottom:1px solid var(--hair);vertical-align:top}.tests-table input{border:none;border-bottom:1px solid var(--line2);background:transparent;font-size:13px;padding:3px 0;width:100%;min-width:52px}.tests-table input[type=date]{min-width:110px;color:var(--body)}.tests-computed{font-size:10px;color:var(--faint);margin-top:3px;white-space:nowrap}.tests-remove{cursor:pointer;color:var(--ghost);font-size:14px;padding:0 4px}.tests-remove:hover{color:var(--rust)}@media(max-width:900px){.login{grid-template-columns:1fr}.login-hero{min-height:0;padding:32px;gap:32px}.login-title{font-size:40px}.portal-body{flex-direction:column;overflow-y:auto}.profile{width:auto;border-right:none;border-bottom:1px solid var(--line)}.cal-col{overflow:visible}.day-panel{width:auto;border-left:none;border-top:1px solid var(--line)}.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.cal-corner,.week-gutter{display:none}.phone-stage{padding:0}.phone{width:100%;border-radius:0;max-height:none;min-height:100vh}}
