:root{--bg: #0f1216;--surface: #171b21;--raised: #1e242c;--line: #2a323c;--line-soft: #212831;--text: #e7ecf1;--muted: #8794a3;--faint: #5d6875;--ok: #5fbf95;--warn: #d9a441;--late: #d9604d;--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(--ok);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(--late);background:#d9604d1a;border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:#f0b3a9;font-size:.875rem}.error.small{padding:6px 10px;font-size:.813rem}.sync-status{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;gap:6px;padding:8px 16px;padding-top:calc(8px + env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--line-soft)}.sync-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:.8rem;font-weight:600;background:var(--raised);color:var(--muted)}.sync-pill.busy{background:#d9a44124;color:var(--warn)}.sync-pill.error{background:#d9604d26;color:var(--late);font-weight:500}.sync-dismiss{background:none;border:none;color:inherit;font-size:1rem;line-height:1;cursor:pointer;padding:0}.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)}.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)}.id-card{display:flex;flex-direction:column;gap:14px;padding:14px;margin-bottom:20px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius)}.id-top{display:flex;gap:16px;align-items:flex-start}.id-photo{position:relative;flex:none;width:84px;height:84px}.id-photo img,.id-photo svg{display:block;width:84px;height:84px;object-fit:cover;border-radius:var(--radius-sm);background:var(--raised)}.id-photo-edit,.id-photo-remove{position:absolute;display:grid;place-items:center;width:26px;height:26px;padding:0;border:2px solid var(--surface);border-radius:50%;font-size:.75rem;line-height:1;cursor:pointer}.id-photo-edit{right:-6px;bottom:-6px;background:var(--ok);color:#0b1a14}.id-photo-edit:disabled{opacity:.6;cursor:default}.id-photo-remove{left:-6px;bottom:-6px;background:var(--raised);border-color:var(--surface);color:var(--muted)}.id-fields{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;margin:2px 0 0;min-width:0}.id-fields dt{font-size:.688rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.id-fields dd{margin:2px 0 0;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.id-conditions{padding-top:14px;border-top:1px solid var(--line-soft)}.id-conditions .eyebrow{margin-bottom:8px}.chip-list{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.chip-list .chip{font-size:.813rem;padding:5px 10px}.boot{display:grid;place-items:center;min-height:100vh}.spinner{width:26px;height:26px;border:2px solid var(--line);border-top-color:var(--ok);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(--ok);color:#0b1a14;font-weight:600}.btn.primary:hover:not(:disabled){background:#6fcda3}.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:#d9604d66;color:var(--late)}.btn.danger:hover:not(:disabled){background:#d9604d1f}.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(--warn);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(--ok);outline:none}textarea{resize:vertical}.tags-input .row{margin-top:8px}.tag-list{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.tag{display:inline-flex;align-items:center;gap:6px;padding:5px 6px 5px 10px;border-radius:999px;background:#d9604d26;color:var(--late);font-size:.813rem;font-weight:600}.tag button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;color:inherit;font-size:.9rem;line-height:1;cursor:pointer;opacity:.75}.tag button:hover{opacity:1}input[type=date]{min-height:44px}.password-input{position:relative}.password-input input{padding-right:44px}.password-toggle{position:absolute;top:0;right:0;display:grid;place-items:center;width:44px;height:100%;padding:0;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{position:relative;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)}.dog-card .corner-chips{position:absolute;top:14px;right:14px;display:flex;flex-direction:column;align-items:flex-end;gap:4px}.chip{display:inline-block;padding:3px 8px;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.01em;white-space:nowrap}.chip.ok{background:#5fbf9524;color:var(--ok)}.chip.warn{background:#d9a44124;color:var(--warn)}.chip.late{background:#d9604d26;color:var(--late)}.chip.quiet{background:var(--raised);color:var(--faint);font-weight:500}.id-pending{margin-left:10px;vertical-align:middle}.dot{flex:none;width:7px;height:7px;border-radius:50%}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.late{background:var(--late)}.due-list{margin:8px 0 0;padding:0;list-style:none}.due-list a{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line-soft)}.due-list li:first-child a{border-top:none}.due-label{display:flex;flex-direction:column;min-width:0;margin-right:auto}.due-label strong{font-size:.938rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.due-label em{font-style:normal;font-size:.75rem;color:var(--faint)}.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(--ok)}.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}.chevron{flex:none;color:var(--faint);font-size:.75rem;line-height:1;transition:transform .15s ease}.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}.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}.chart{padding:14px 14px 10px;margin-bottom:16px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius)}.chart svg{display:block;width:100%;height:auto}.chart .grid{stroke:var(--line-soft);stroke-width:1}.chart .axis{fill:var(--faint);font-size:9px;font-family:var(--font)}.chart .area{fill:#5fbf951a}.chart .line{fill:none;stroke:var(--ok);stroke-width:1.75;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.chart .node{fill:var(--bg);stroke:var(--ok);stroke-width:1.5}.chart-caption{display:flex;align-items:baseline;gap:6px;margin:8px 0 0;font-size:.813rem;color:var(--muted);font-variant-numeric:tabular-nums}.chart-caption strong{font-size:1.125rem;color:var(--text)}.chart-caption em{margin-left:auto;font-style:normal;color:var(--faint)}.chart-empty{padding:20px 14px;margin-bottom:16px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);text-align:center;color:var(--muted);font-size:.875rem}.files{margin:12px 0}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;margin:0 0 10px;padding:0;list-style:none}.photo-tile{position:relative;aspect-ratio:1;border-radius:var(--radius-sm);overflow:hidden;background:var(--raised)}.photo-open{display:block;width:100%;height:100%;padding:0;border:none;background:none;cursor:pointer}.photo-tile img{display:block;width:100%;height:100%;object-fit:cover}.photo-remove{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:22px;height:22px;padding:0;border:none;border-radius:50%;background:#0f1216b8;color:var(--text);font-size:.875rem;line-height:1;cursor:pointer}.photo-remove:hover{background:#0f1216e6}.file-list{display:flex;flex-direction:column;gap:6px;margin:0 0 10px;padding:0;list-style:none}.file-list li{display:flex;align-items:center;gap:8px}.file-open{display:flex;align-items:center;gap:10px;flex:1;min-width:0;padding:7px 10px;border:none;background:var(--raised);border-radius:var(--radius-sm);font:inherit;color:inherit;text-align:left;cursor:pointer}.file-glyph{display:grid;place-items:center;flex:none;width:34px;height:34px;border-radius:5px;background:var(--bg);font-size:.625rem;font-weight:700;letter-spacing:.04em;color:var(--faint)}.file-glyph.large{width:64px;height:64px;font-size:.75rem}.preview-image{display:block;width:100%;max-height:65vh;object-fit:contain;border-radius:var(--radius-sm);background:var(--raised)}.preview-fallback{display:flex;flex-direction:column;align-items:center;gap:10px;padding:40px 20px;text-align:center}.file-name{display:flex;flex-direction:column;min-width:0;font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-name em{font-style:normal;font-size:.75rem;color:var(--faint)}.member-list{margin:0;padding:0;list-style:none}.member-list li{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line-soft)}.member-list li>span:first-child{display:flex;flex-direction:column;margin-right:auto}.member-list em{font-style:normal;font-size:.75rem;color:var(--faint)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:flex-end;justify-content:center;background:#06080bb3;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}.record-body dl{grid-template-columns:repeat(2,1fr);gap:12px 20px}.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}}
