:root{--bg: #0a0a0a;--surface: #141414;--raised: #1c1c1c;--line: #333333;--line-soft: #242424;--text: #f5f5f5;--muted: #a3a3a3;--faint: #6b6b6b;--accent: #dc2f3a;--accent-strong: #ea4b54;--danger: #dc2f3a;--radius: 12px;--radius-sm: 8px;--gap: 16px;--font: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display: "Bebas Neue", var(--font);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}h1,h2,h3{margin:0;font-family:var(--font-display);font-weight:400;letter-spacing:.02em}h1{font-size:1.875rem}h2{font-size:1.3rem}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.eyebrow{margin:0 0 2px;font-size:.688rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}.meta{margin:4px 0 0;font-size:.875rem;color:var(--muted)}.hint{font-size:.875rem;color:var(--muted)}.error{margin:0;padding:10px 12px;border-left:2px solid var(--danger);background:#dc2f3a1f;border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:#f5b3b8;font-size:.875rem}.error.small{padding:6px 10px;font-size:.813rem}.page{max-width:780px;margin:0 auto;padding:20px 16px 64px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:20px}.back{display:inline-block;margin-bottom:6px;font-size:.875rem;color:var(--muted)}.tabs{display:flex;gap:4px;margin-bottom:18px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line-soft)}.tabs::-webkit-scrollbar{display:none}.tab{flex:none;padding:10px 12px;border:none;border-bottom:2px solid transparent;background:none;font-family:var(--font-display);font-size:1.25rem;text-transform:uppercase;letter-spacing:.01em;color:var(--muted);cursor:pointer;white-space:nowrap}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.row{display:flex;gap:8px;align-items:center}.row .btn{flex:1}.col{display:flex;flex-direction:column;gap:6px}.stack{display:flex;flex-direction:column;gap:14px}.panel{padding:14px;margin-bottom:20px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius)}.boot{display:grid;place-items:center;min-height:100vh}.spinner{width:26px;height:26px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{padding:28px 16px;text-align:center;color:var(--muted);font-size:.938rem}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:var(--radius-sm);padding:11px 16px;font:inherit;font-size:.938rem;font-weight:500;color:var(--text);background:var(--raised);cursor:pointer;transition:background .15s ease,border-color .15s ease}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--accent);color:#fff;font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-strong)}.btn.ghost{background:transparent;border-color:var(--line);color:var(--muted)}.btn.ghost:hover:not(:disabled){border-color:var(--faint);color:var(--text)}.btn.danger{background:transparent;border-color:#dc2f3a73;color:var(--danger)}.btn.danger:hover:not(:disabled){background:#dc2f3a24}.btn.link{background:none;padding:10px 0;color:var(--muted);font-size:.875rem;text-align:left}.btn.link:hover{color:var(--text)}.btn.small{padding:7px 12px;font-size:.813rem}.btn.icon{padding:4px 9px;font-size:1.25rem;line-height:1;border-color:transparent}.btn.wide{width:100%;margin-top:16px}.field{display:flex;flex-direction:column;gap:5px}.field>span{font-size:.813rem;font-weight:500;color:var(--muted)}.field i{color:var(--accent);font-style:normal}input,select,textarea{width:100%;padding:11px 12px;font:inherit;font-size:1rem;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);transition:border-color .15s ease}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}textarea{resize:vertical}input[type=date]{min-height:44px}.password-field{position:relative}.password-field input{padding-right:44px}.password-toggle{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;padding:0 12px;border:none;background:none;color:var(--faint);cursor:pointer}.password-toggle:hover{color:var(--muted)}.gate{display:grid;place-items:center;min-height:100vh;padding:20px}.gate-card{width:100%;max-width:380px;padding:26px 22px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius)}.gate-title{margin:0 0 22px;font-size:1.75rem;line-height:1.2}.dog-grid{display:grid;gap:12px;margin:0;padding:0;list-style:none}.dog-card{display:block;padding:16px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);transition:border-color .15s ease}.dog-card:hover{border-color:var(--line)}.stat{display:flex;align-items:baseline;gap:5px;margin:12px 0 0;font-variant-numeric:tabular-nums}.stat strong{font-size:1.5rem;font-weight:600}.stat span{font-size:.875rem;color:var(--muted)}.stat em{margin-left:auto;font-style:normal;font-size:.813rem;color:var(--faint)}.stat.empty{font-size:.875rem;color:var(--faint)}.session-list{margin:0;padding:0;list-style:none;border:1px solid var(--line-soft);border-radius:var(--radius);overflow:hidden}.session-list li+li{border-top:1px solid var(--line-soft)}.session-list li.open{background:var(--surface)}.session-head{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;border:none;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:background .15s ease}.session-head:hover{background:var(--raised)}.session-date{flex:none;width:88px;font-size:.813rem;color:var(--faint);font-variant-numeric:tabular-nums}.session-summary{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.938rem;color:var(--muted)}.session-name{color:var(--text);font-weight:600;margin-right:8px}.chevron{flex:none;color:var(--faint);font-size:.75rem;line-height:1;transition:transform .15s ease}.session-head[aria-expanded=true] .chevron{transform:rotate(180deg)}.session-body{padding:4px 14px 14px;border-top:1px solid var(--line-soft)}.session-block{margin-top:14px}.session-block h3{margin-bottom:6px;font-size:.75rem;font-family:var(--font);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.exercise-block{padding:10px 12px;margin-bottom:8px;background:var(--raised);border-radius:var(--radius-sm)}.exercise-block .exercise-name{margin:0 0 4px;font-weight:600;font-size:.938rem}.bullet-list{margin:0;padding:0;list-style:none}.bullet-list li{position:relative;padding-left:14px;font-size:.9rem;line-height:1.5}.bullet-list li:before{content:"•";position:absolute;left:0;color:var(--accent)}.bullet-list.achievements li:before{content:"★";color:var(--accent);font-size:.75em;top:.15em}.record-list{margin:0;padding:0;list-style:none;border:1px solid var(--line-soft);border-radius:var(--radius);overflow:hidden}.record-list li+li{border-top:1px solid var(--line-soft)}.record-list li.open{background:var(--surface)}.record-head{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;border:none;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:background .15s ease}.record-head:hover{background:var(--raised)}.record-date{flex:none;width:88px;font-size:.813rem;color:var(--faint);font-variant-numeric:tabular-nums}.record-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.938rem;color:var(--muted)}.record-name{color:var(--text);font-weight:600;margin-right:8px}.record-head[aria-expanded=true] .chevron{transform:rotate(180deg)}.record-body{padding:0 14px 14px;border-top:1px solid var(--line-soft)}.record-body dl{display:grid;gap:8px;margin:12px 0 0}.record-body dt{font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.record-body dd{margin:2px 0 0;font-size:.938rem;white-space:pre-wrap}.bullet-editor{display:flex;flex-direction:column;gap:6px}.bullet-row{display:flex;gap:6px;align-items:center}.bullet-row input{flex:1}.exercise-card{padding:12px;background:var(--raised);border:1px solid var(--line-soft);border-radius:var(--radius-sm)}.exercise-card+.exercise-card{margin-top:10px}.exercise-card-head{display:flex;gap:8px;align-items:center;margin-bottom:10px}.exercise-card-head input{flex:1}.faint{color:var(--faint)}.row .field{flex:1;min-width:0}.exercise-card-head select{flex:none;width:auto}.record-list li.done .record-name{color:var(--muted)}.progress-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.progress-list .meta,.progress-list .hint{margin:2px 0 0}.progress-head{display:flex;align-items:center;gap:8px}.priority{padding:1px 8px;font-size:.75rem;border:1px solid var(--line);border-radius:999px;color:var(--muted)}.priority.p3{border-color:var(--accent);color:var(--accent-strong)}.plan{display:grid;gap:12px;margin-top:10px}.plan-week h4{margin:0 0 6px;font-size:.75rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.plan-week ul{margin:0;padding:0;list-style:none;border:1px solid var(--line-soft);border-radius:var(--radius-sm);overflow:hidden}.plan-week li+li{border-top:1px solid var(--line-soft)}.plan-day{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:none;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.plan-day:hover{background:var(--raised)}.plan-day.past{opacity:.6}.plan-day.today{background:var(--raised);box-shadow:inset 3px 0 0 var(--accent)}.plan-date{flex:none;width:56px;font-size:.813rem;color:var(--muted);font-variant-numeric:tabular-nums}.plan-skills{display:flex;flex-wrap:wrap;gap:4px}.chip{padding:2px 8px;font-size:.813rem;background:var(--bg);border:1px solid var(--line);border-radius:999px}.chip.done{border-color:var(--accent)}.day-picker{display:flex;flex-wrap:wrap;gap:6px}.day-toggle{flex:1;min-width:44px;padding:9px 0;font:inherit;font-size:.875rem;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer}.day-toggle.on{color:var(--text);background:var(--accent);border-color:var(--accent)}.check-list{display:grid;gap:4px}.check-row{display:flex;align-items:center;gap:10px;padding:8px 4px;cursor:pointer}.check-row input{width:auto;accent-color:var(--accent)}.today-plan{margin-bottom:var(--gap);padding:12px 14px;background:var(--surface);border:1px solid var(--line-soft);border-left:3px solid var(--accent);border-radius:var(--radius-sm)}.today-plan h3{margin:0 0 6px}.today-plan p{margin:0 0 4px}.today-plan .btn{margin-top:8px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:flex-end;justify-content:center;background:#000000bf;animation:fade .15s ease}.sheet{width:100%;max-width:480px;max-height:92vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;animation:rise .2s ease}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 16px 12px;border-bottom:1px solid var(--line-soft)}.sheet-body{padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom));overflow-y:auto}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{transform:translateY(16px)}}@media (min-width: 640px){.dog-grid{grid-template-columns:repeat(2,1fr)}.page{padding:32px 24px 80px}h1{font-size:2.25rem}.scrim{align-items:center}.sheet{border-radius:var(--radius)}.row .btn{flex:0 1 auto;margin-left:auto}.row .btn+.btn{margin-left:0}.btn.wide{width:auto}}@media (min-width: 900px){.dog-grid{grid-template-columns:repeat(3,1fr)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
