
:root{font-family:system-ui,-apple-system,sans-serif;color:#19342b;background:#f2f5f3;font-size:16px}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}button,input,select{font:inherit}button,select,input{min-height:46px;border-radius:10px;border:1px solid #b9c9c0;padding:10px 14px;background:white;color:inherit}button{cursor:pointer;font-weight:650}button:hover{border-color:#145940;background:#edf6f0}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #e6ad40;outline-offset:3px}button:disabled{opacity:.5;cursor:default}.primary{background:#145940;color:white;border-color:#145940}.primary:hover{background:#0b4330}.quiet{background:transparent}header{background:#145940;color:white;padding:24px max(20px,calc((100vw - 1080px)/2));display:flex;align-items:center;gap:15px}.brandmark{font-size:32px}header strong{font-size:23px;letter-spacing:-.6px}header small{display:block;color:#d2e8dc;margin-top:3px}.demo{background:#fff1cc;padding:12px 20px;text-align:center;font-size:14px;color:#654811}.wrap{max-width:1080px;margin:auto;padding:24px 20px 50px}.toolbar{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:26px}.toolbar label{display:grid;gap:6px;font-size:14px}.toolbar .reset{margin-left:auto}.tabs{display:flex;gap:8px;border-bottom:1px solid #cdd9d2;padding-bottom:14px;margin-bottom:26px;flex-wrap:wrap}.tabs button.active{background:#193e30;color:white}.topline{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 0 16px}h1{font-size:30px;letter-spacing:-1px;margin:0 0 6px}h2{font-size:23px;margin:0}h3{font-size:20px;margin:0}.muted{color:#596f63;font-size:14px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.card{border:1px solid #d4dfd8;border-radius:18px;background:white;padding:24px;box-shadow:0 5px 18px #163d2705}.cardhead{display:flex;align-items:start;justify-content:space-between;gap:12px}.badge{display:inline-block;font-size:14px;border-radius:7px;padding:5px 9px;background:#e7f3ec;color:#1e563b}.badge.warn{background:#fff0ce;color:#745000}.badge.gray{background:#edf0ef;color:#56645d}.balance{margin:23px 0 16px;font-size:16px;color:#586d61}.balance b{font-size:42px;color:#153f2d;line-height:1}.stamps{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin:18px 0}.stamp{aspect-ratio:1.1;border:1px dashed #bacdc0;border-radius:50%;display:grid;place-items:center;color:#6b7b72;background:#f8faf8;font-size:18px}.stamp.used{background:#145940;color:white;border:0;font-size:23px}.cardfoot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:20px;flex-wrap:wrap}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.notice{padding:13px 16px;border-radius:10px;background:#fff1cf;color:#6b4c0e;margin:16px 0;font-size:14px}.list{display:grid;gap:12px}.row{background:white;border:1px solid #d4dfd8;border-radius:13px;padding:18px;display:flex;align-items:center;gap:15px;flex-wrap:wrap}.row .grow{flex:1;min-width:130px}.row input[type=checkbox]{width:24px;min-height:24px;accent-color:#145940}.row small{display:block;margin-top:5px;color:#5b6c62}.summary{background:#dceee3;color:#214c35;padding:18px;border-radius:13px;margin-bottom:18px}.empty{padding:30px;background:white;border-radius:14px;color:#587062}.event{padding:14px 0;border-bottom:1px solid #e1e7e3}.event p{margin:4px 0}.event small{color:#596f63}dialog{border:0;border-radius:18px;width:min(540px,calc(100% - 28px));padding:25px;max-height:85vh;box-shadow:0 20px 100px #0004}dialog::backdrop{background:#142a2366}dialog h2{margin-bottom:12px}dialog label{display:grid;gap:6px;margin:15px 0}dialog input,dialog select{width:100%}.dialoghead{display:flex;justify-content:space-between;align-items:start;gap:12px}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#173e2d;color:white;padding:14px 22px;border-radius:12px;box-shadow:0 4px 25px #0002;max-width:90%;z-index:5}footer{margin-top:32px;font-size:13px;color:#62746a}a{color:#145940}@media(max-width:650px){.grid{grid-template-columns:1fr}.wrap{padding:20px 14px 35px}header{padding:20px 16px}.card{padding:20px}.toolbar .reset{margin-left:0}h1{font-size:26px}.toolbar label{flex:1}.toolbar select{width:100%}.topline{align-items:start}.tabs button{flex:1;padding:10px}.row{padding:15px}.brandmark{font-size:28px}}
.doggroup{margin:12px 0;border:1px solid #cdd9d2;border-radius:14px;background:white;overflow:hidden}.doggroup summary{cursor:pointer;padding:18px;min-height:65px;display:flex;align-items:center;gap:12px;list-style:none}.doggroup summary::-webkit-details-marker{display:none}.doggroup summary::before{content:'▸';font-size:22px;color:#145940}.doggroup[open] summary::before{content:'▾'}.doggroup summary:focus-visible{outline:3px solid #e6ad40;outline-offset:-3px}.doggroup summary .doginfo{flex:1;min-width:0;overflow-wrap:anywhere}.doggroup summary strong{font-size:20px}.doggroup summary small{display:block;margin-top:4px}.dogbody{padding:0 18px 18px}.dogbody>.actions{margin:0 0 16px}.searchbox{display:grid;gap:7px;margin:20px 0 12px}.searchbox input{width:100%}.searchcount{margin:0 0 18px}@media(max-width:650px){.doggroup summary{padding:15px}.dogbody{padding:0 12px 12px}.doggroup summary .badge{max-width:120px}}
.dogphoto{width:58px;height:58px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#e7f3ec}.photofallback{display:inline-grid;place-items:center;font-size:26px}.dogtitle{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.photopreview{display:block;width:150px;height:150px;object-fit:cover;border-radius:18px;margin:16px auto}.photopreview.photofallback{display:grid;font-size:52px}.photohelp{font-size:14px;color:#596f63}input[type=file]{max-width:100%}#photoError{color:#a12727} @media(max-width:650px){.course-filters{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:stretch}.course-filters label{min-width:0;width:100%;gap:7px}.course-filters select,.course-filters input{width:100%;min-width:0;max-width:100%;min-height:48px}}

form.inline{display:inline-block;margin:4px 0}form label{display:grid;gap:6px;margin:10px 0}a.button{display:inline-block;padding:12px;border:1px solid #b9c9c0;border-radius:10px;text-decoration:none;background:white}nav a.active{background:#145940;color:white}.card details{margin-top:12px}summary{cursor:pointer;padding:12px 0}form .actions{align-items:end}.login{max-width:460px;margin:30px auto}.notice{overflow-wrap:anywhere}.course-filters{align-items:end}form select,form input{max-width:100%;min-width:0}.row .dogphoto{width:48px;height:48px}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}@media(max-width:650px){.admin-grid{grid-template-columns:1fr}.tabs{gap:6px}.tabs a{flex:1;text-align:center}.row{gap:10px}.course-filters{display:grid;grid-template-columns:1fr}.course-filters label{width:100%}}.password-field{position:relative;display:block;width:100%}.password-field input{width:100%;padding-right:54px}.password-eye{position:absolute;right:2px;top:2px;bottom:2px;min-height:40px;width:46px;border:0;background:transparent;display:grid;place-items:center;padding:6px}.password-match{color:#145940;font-size:14px}.password-mismatch,.photo-error{color:#a12a20;font-size:14px}.photo-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.photo-choices button{min-height:64px}.photo-placeholder{display:grid;place-items:center;height:190px;background:#edf5ef;border-radius:16px;font-size:64px;margin:18px 0}#photo-preview{width:100%;height:240px;object-fit:contain;background:#edf5ef;border-radius:16px}#photo-dialog{max-width:490px;width:calc(100% - 28px)}.photo-remove{margin-top:20px;background:transparent;color:#9a2a22;border:0}.photo-open{margin:12px 0}.password-eye:focus-visible{outline:3px solid #e6ad40;outline-offset:0}
