:root{
  --bg:#f7f6f1;
  --paper:#ffffff;
  --ink:#17251f;
  --muted:#6a756f;
  --line:#dfe5df;
  --green:#1f6a4f;
  --green-dark:#164c3a;
  --mint:#dcefe5;
  --peach:#f4d8c6;
  --danger:#c44d5a;
  --warning:#ffcf66;
  --radius:26px;
  --shadow:0 18px 55px rgba(27,54,42,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;line-height:1.55}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
img{max-width:100%;display:block}
.shell{width:min(1120px,calc(100% - 32px));margin:auto}
.topbar{position:sticky;top:0;z-index:40;background:rgba(247,246,241,.88);backdrop-filter:blur(16px);border-bottom:1px solid rgba(223,229,223,.7)}
.nav{height:74px;display:flex;align-items:center;justify-content:space-between;gap:18px}
.brand{display:flex;align-items:center;gap:10px;font-weight:800}
.brand-mark{width:42px;height:42px;border-radius:14px;background:var(--green);display:grid;place-items:center;color:white}
.brand-mark svg{width:25px;height:25px}
.nav-links{display:flex;gap:24px;color:#4b5952;font-size:14px}
.nav-actions{display:flex;gap:10px}
.btn{border:0;border-radius:999px;min-height:46px;padding:0 20px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.2s ease}
.btn:hover{transform:translateY(-1px)}
.btn-primary{background:var(--green);color:white}
.btn-primary:hover{background:var(--green-dark)}
.btn-soft{background:var(--paper);border:1px solid var(--line)}
.btn-danger{background:#fff0f1;color:var(--danger);border:1px solid #ffd5da}
.btn-block{width:100%}
.hero{padding:72px 0 48px;display:grid;grid-template-columns:1fr;gap:64px;align-items:center}
.hero.has-uploaded-hero{grid-template-columns:1.05fr .95fr}
.kicker{display:inline-flex;align-items:center;gap:8px;background:var(--mint);padding:8px 12px;border-radius:999px;font-size:13px;font-weight:700;color:var(--green-dark)}
h1,h2,h3,p{margin-top:0}
h1{font-size:clamp(48px,7vw,84px);line-height:1.03;letter-spacing:-.05em;margin:20px 0 22px;max-width:9ch}
h2{font-size:clamp(34px,4vw,52px);letter-spacing:-.035em;line-height:1.1}
.lead{font-size:clamp(18px,2vw,22px);color:var(--muted);max-width:620px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.hero-card{background:var(--paper);border:1px solid var(--line);border-radius:34px;padding:18px;box-shadow:var(--shadow);transform:rotate(1.5deg)}
.tag-demo{background:linear-gradient(135deg,#f1eadc,#fbfaf5);border-radius:26px;padding:26px;min-height:500px;display:flex;flex-direction:column;justify-content:space-between}
.tag-top{display:flex;justify-content:space-between;align-items:flex-start}
.dog-avatar{width:155px;height:155px;border-radius:42px;background:var(--peach);display:grid;place-items:center;font-size:62px;overflow:hidden}
.tag-code{font-size:12px;letter-spacing:.16em;color:var(--muted);font-weight:700}
.tag-demo h3{font-size:34px;margin:18px 0 6px}
.status-pill{display:inline-flex;align-items:center;gap:7px;background:white;border:1px solid var(--line);padding:7px 11px;border-radius:999px;font-size:13px;font-weight:700}
.status-dot{width:8px;height:8px;border-radius:50%;background:#35ad74}
.call-card{background:var(--ink);color:white;border-radius:24px;padding:22px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.call-card small{color:#cbd4cf}
.section{padding:86px 0}
.section-heading{max-width:720px;margin-bottom:34px}
.section-heading p{color:var(--muted);font-size:18px}
.steps,.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.step,.feature{background:var(--paper);border:1px solid var(--line);border-radius:24px;padding:26px}
.step-num{width:38px;height:38px;border-radius:12px;background:var(--mint);display:grid;place-items:center;color:var(--green);font-weight:900;margin-bottom:24px}
.step h3,.feature h3{font-size:21px;margin-bottom:8px}
.step p,.feature p{color:var(--muted);margin-bottom:0}
.feature-icon{width:48px;height:48px;border-radius:16px;background:#f0f5f1;display:grid;place-items:center;margin-bottom:20px;font-size:22px}
.cta{background:var(--green);color:white;border-radius:34px;padding:42px;display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:80px}
.cta p{color:#d9eee5;margin:8px 0 0}
.footer{padding:28px 0 42px;color:var(--muted);font-size:14px;border-top:1px solid var(--line)}

.auth-page,.dashboard-page,.profile-page{min-height:100vh}
.panel-shell{width:min(920px,calc(100% - 28px));margin:38px auto 70px}
.auth-card{width:min(520px,calc(100% - 28px));margin:56px auto;background:var(--paper);border:1px solid var(--line);border-radius:30px;padding:30px;box-shadow:var(--shadow)}
.auth-card .brand{margin-bottom:26px}
.tabs{display:grid;grid-template-columns:1fr 1fr;background:#f2f4f1;border-radius:14px;padding:4px;margin-bottom:24px}
.tab{border:0;background:transparent;border-radius:11px;padding:10px;font-weight:700;color:var(--muted)}
.tab.active{background:white;color:var(--ink);box-shadow:0 3px 12px rgba(0,0,0,.05)}
.form-group{margin-bottom:16px}
label{display:block;font-size:13px;font-weight:800;margin-bottom:7px;color:#425049}
input,textarea,select{width:100%;border:1px solid var(--line);border-radius:14px;background:white;padding:13px 14px;color:var(--ink);outline:none}
input:focus,textarea:focus,select:focus{border-color:#79aa92;box-shadow:0 0 0 4px rgba(80,140,109,.1)}
textarea{min-height:100px;resize:vertical}
.form-note{font-size:12px;color:var(--muted)}
.alert{padding:12px 14px;border-radius:14px;margin:14px 0;font-size:14px;display:none}
.alert.show{display:block}
.alert.error{background:#fff0f1;color:#9a3340;border:1px solid #ffd7db}
.alert.success{background:#eef9f2;color:#246145;border:1px solid #d1eedc}

.dash-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:34px 0 24px}
.dash-head h1{font-size:44px;max-width:none;margin:0 0 6px}
.dash-head p{color:var(--muted);margin:0}
.dog-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.dog-card{background:var(--paper);border:1px solid var(--line);border-radius:24px;padding:18px;display:grid;grid-template-columns:110px 1fr;gap:18px;align-items:center}
.dog-thumb{width:110px;height:110px;border-radius:20px;background:var(--peach);display:grid;place-items:center;font-size:42px;overflow:hidden}
.dog-thumb img{width:100%;height:100%;object-fit:cover}
.dog-card h3{margin-bottom:4px;font-size:23px}
.dog-meta{font-size:13px;color:var(--muted)}
.dog-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}
.btn-small{min-height:36px;padding:0 13px;font-size:13px}
.empty-card{grid-column:1/-1;background:white;border:1px dashed #b9c7bf;border-radius:24px;padding:42px;text-align:center;color:var(--muted)}

.modal{position:fixed;inset:0;background:rgba(17,29,23,.46);display:none;place-items:center;z-index:100;padding:20px}
.modal.show{display:grid}
.modal-card{background:var(--paper);border-radius:28px;width:min(760px,100%);max-height:88vh;overflow:auto;padding:26px}
.modal-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}
.modal-head h2{font-size:30px;margin:0}
.icon-btn{border:0;background:#eef1ee;width:42px;height:42px;border-radius:50%;font-size:22px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.span-2{grid-column:1/-1}
.photo-upload{display:grid;grid-template-columns:100px 1fr;gap:16px;align-items:center;background:#f5f6f3;padding:14px;border-radius:18px}
.photo-preview{width:100px;height:100px;border-radius:18px;background:#eadfd5;display:grid;place-items:center;font-size:36px;overflow:hidden}
.photo-preview img{width:100%;height:100%;object-fit:cover}
.switch-row{display:flex;align-items:center;gap:10px;padding:12px 0}
.switch-row input{width:auto}
.qr-card{text-align:center;background:#f6f7f4;border-radius:20px;padding:22px}
.qr-card img{width:210px;height:210px;margin:0 auto 14px;background:white;border-radius:14px;padding:8px}
.copy-row{display:flex;gap:8px}.copy-row input{flex:1}

.profile-wrap{width:min(780px,calc(100% - 26px));margin:26px auto 60px}
.profile-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}
.profile-card{background:var(--paper);border:1px solid var(--line);border-radius:34px;overflow:hidden;box-shadow:var(--shadow)}
.lost-banner{display:none;background:#ffd1d5;color:#8d2632;padding:13px 22px;font-weight:900;text-align:center}
.lost-banner.show{display:block}
.profile-hero{padding:28px;display:grid;grid-template-columns:220px 1fr;gap:28px;align-items:center;background:linear-gradient(135deg,#f5eadf,#f6fbf7)}
.profile-photo{width:220px;height:220px;border-radius:48px;background:var(--peach);overflow:hidden;display:grid;place-items:center;font-size:76px}
.profile-photo img{width:100%;height:100%;object-fit:cover}
.profile-hero h1{font-size:54px;max-width:none;margin:4px 0 8px}
.profile-code{font-size:12px;letter-spacing:.15em;color:var(--muted);font-weight:800}
.profile-body{padding:28px}
.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:28px}
.quick-actions .btn{min-height:58px}
.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.info-item{border:1px solid var(--line);border-radius:18px;padding:16px}
.info-label{font-size:12px;color:var(--muted);font-weight:800;margin-bottom:4px}
.info-value{font-weight:700;white-space:pre-wrap}
.info-item.full{grid-column:1/-1}
.emergency{margin-top:20px;background:#f5f7f5;border-radius:22px;padding:20px}
.emergency h3{margin-bottom:10px}
.profile-foot{text-align:center;color:var(--muted);font-size:12px;margin-top:16px}
.notfound{text-align:center;padding:100px 20px}.notfound h1{font-size:64px;max-width:none}

@media(max-width:820px){
  .nav-links{display:none}.hero{grid-template-columns:1fr;gap:34px;padding-top:46px}.hero-card{transform:none}.tag-demo{min-height:430px}.steps,.feature-grid{grid-template-columns:1fr}.dog-grid{grid-template-columns:1fr}.profile-hero{grid-template-columns:1fr;text-align:center}.profile-photo{margin:auto}.profile-hero h1{font-size:46px}.cta{flex-direction:column;align-items:flex-start}
}
@media(max-width:560px){
  .shell{width:min(100% - 22px,1120px)}.nav{height:66px}.brand-name{font-size:14px}.nav-actions .btn-soft{display:none}.btn{padding:0 16px}.hero{padding-top:36px}h1{font-size:52px}.hero-card{padding:12px}.tag-demo{padding:20px;min-height:390px}.dog-avatar{width:120px;height:120px;border-radius:34px}.section{padding:64px 0}.auth-card{padding:22px;margin-top:28px}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.dash-head{align-items:flex-start;flex-direction:column}.dash-head h1{font-size:38px}.dog-card{grid-template-columns:82px 1fr}.dog-thumb{width:82px;height:82px}.profile-hero{padding:22px}.profile-photo{width:180px;height:180px;border-radius:40px}.quick-actions,.info-grid{grid-template-columns:1fr}.info-item.full{grid-column:auto}.profile-body{padding:20px}.copy-row{flex-direction:column}
}

/* Production additions */
.link-button{border:0;background:transparent;color:var(--green);padding:8px 0 0;font-weight:800;cursor:pointer}
.privacy-box{background:#f5f7f5;border:1px solid var(--line);border-radius:18px;padding:14px 16px}
.privacy-title{font-size:13px;font-weight:900;margin-bottom:6px;color:#425049}
.privacy-box .switch-row{padding:7px 0;margin:0}
.qr-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}
.admin-shell{width:min(1120px,calc(100% - 28px));margin:38px auto 70px}
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:18px}
.stat-card{background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:22px;display:flex;flex-direction:column;gap:8px}.stat-card span{color:var(--muted);font-size:13px;font-weight:800}.stat-card strong{font-size:36px}
.admin-grid{display:grid;grid-template-columns:360px 1fr;gap:18px;align-items:start}.admin-card{background:var(--paper);border:1px solid var(--line);border-radius:24px;padding:22px}.admin-card h2{font-size:27px;margin:0 0 18px}.admin-wide{min-width:0}.admin-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}.search-input{max-width:270px}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px}table{width:100%;border-collapse:collapse;min-width:650px}th,td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:12px;color:var(--muted);background:#f7f8f6}tr:last-child td{border-bottom:0}.status-badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:900}.status-badge.active{background:#e7f6ed;color:#236443}.status-badge.disabled{background:#f1f1f1;color:#707070}
@media(max-width:900px){.admin-grid{grid-template-columns:1fr}.stat-grid{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:560px){.stat-grid{grid-template-columns:1fr}.admin-card-head{flex-direction:column}.search-input{max-width:none}.nav-actions{gap:6px}.nav-actions .btn{padding:0 12px;font-size:12px}.qr-actions{flex-direction:column}.qr-actions .btn{width:100%}}

/* V3 simple admin password login */
.admin-login-card{margin-top:72px;text-align:left}
.admin-login-card h1{font-size:36px;margin:8px 0 8px}
.admin-login-icon{width:54px;height:54px;border-radius:18px;display:grid;place-items:center;background:var(--soft);font-size:26px;margin-bottom:18px}


/* V5 public lost-dog board */
.lost-nav-link{color:#a23542!important;font-weight:900!important}
.lost-public-section{padding:58px 0 76px;background:linear-gradient(180deg,#fff8f8 0%,#fffdf9 100%);border-top:1px solid #f2dddd;border-bottom:1px solid #f2dddd}
.lost-public-section[hidden],.lost-nav-link[hidden]{display:none!important}
.lost-public-head{display:flex;justify-content:space-between;gap:28px;align-items:flex-end;margin-bottom:28px}
.lost-public-head h2{font-size:clamp(36px,5vw,58px);margin:4px 0 10px;max-width:760px}
.lost-public-head p{color:var(--muted);font-size:17px;max-width:760px;margin:0}
.lost-kicker{color:#9a3440}
.lost-count-badge{flex:0 0 auto;background:#fff0f1;color:#942f3b;border:1px solid #f0c9ce;border-radius:999px;padding:10px 15px;font-size:13px;font-weight:900}
.lost-dogs-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.lost-dog-card{background:var(--paper);border:1px solid #efd7da;border-radius:25px;overflow:hidden;box-shadow:0 10px 28px rgba(96,38,47,.06)}
.lost-dog-photo{position:relative;display:grid;place-items:center;aspect-ratio:4/3;background:#f2e3df;overflow:hidden;font-size:58px}
.lost-dog-photo img{width:100%;height:100%;object-fit:cover;transition:transform .25s ease}
.lost-dog-photo:hover img{transform:scale(1.025)}
.lost-card-badge{position:absolute;top:13px;left:13px;background:#c84856;color:white;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:900;box-shadow:0 5px 15px rgba(119,34,45,.18)}
.lost-dog-copy{padding:20px}
.lost-dog-topline{font-size:10px;letter-spacing:.12em;font-weight:900;color:#9e777c;margin-bottom:7px}
.lost-dog-copy h3{font-size:26px;margin:0 0 5px}
.lost-dog-meta{color:var(--muted);margin:0 0 10px;font-size:14px}
.lost-dog-note{color:#4d5551;margin:0 0 16px;font-size:14px;line-height:1.55}
.btn-danger{background:#c84856;color:white;border-color:#c84856}
.lost-detail-btn{width:100%;min-height:44px}
@media(max-width:900px){.lost-dogs-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.lost-public-section{padding:46px 0 56px}.lost-public-head{align-items:flex-start;flex-direction:column;gap:14px}.lost-public-head h2{font-size:38px}.lost-dogs-grid{grid-template-columns:1fr}.lost-dog-photo{aspect-ratio:16/11}}


/* V6: always show lost-dog board, including empty state */
.lost-empty-state{grid-column:1/-1;background:rgba(255,255,255,.72);border:1px dashed #e2c9cd;border-radius:25px;padding:46px 24px;text-align:center;color:var(--muted)}
.lost-empty-state h3{font-size:23px;color:var(--ink);margin:8px 0 7px}
.lost-empty-state p{margin:0 auto;max-width:520px}
.lost-empty-icon{font-size:34px}

/* V7 CMS + larger members */
.brand-mark{overflow:hidden}
.site-logo{width:100%;height:100%;object-fit:contain;border-radius:inherit;display:block}
.site-hero-image{width:100%;height:100%;min-height:520px;object-fit:cover;border-radius:28px;display:block}
.hero-card:has(.site-hero-image:not([hidden])){padding:0;overflow:hidden}

.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.admin-wide{grid-column:1 / -1;min-width:0}
.members-card{padding:28px}
.members-card h2{font-size:32px}
.members-table-wrap{width:100%;min-height:220px}
.members-table-wrap table{min-width:820px;font-size:15px}
.members-table-wrap th,.members-table-wrap td{padding:18px 18px}
.member-name{font-size:17px;color:var(--ink)}
.member-email{font-size:14px;color:var(--muted);margin-top:4px}

.cms-admin-card{padding:28px}
.site-image-editor{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:18px 0 24px}
.asset-editor{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:center;border:1px solid var(--line);border-radius:18px;padding:16px;background:#fbfcfa}
.asset-preview{height:120px;border:1px dashed #cfd8d1;border-radius:16px;background:#f3f6f2;display:grid;place-items:center;color:var(--muted);overflow:hidden}
.asset-preview-wide{height:120px}
.asset-preview img{width:100%;height:100%;object-fit:contain;background:white}
.asset-preview-wide img{object-fit:cover}
.asset-editor input[type=file]{max-width:100%;margin-top:10px}
.asset-actions{margin-top:10px}
.cms-editor{display:grid;gap:12px}
.cms-group{border:1px solid var(--line);border-radius:18px;background:#fbfcfa;overflow:hidden}
.cms-group summary{cursor:pointer;padding:18px 20px;font-weight:900;font-size:18px;list-style:none;display:flex;align-items:center;justify-content:space-between}
.cms-group summary::-webkit-details-marker{display:none}
.cms-group summary::after{content:'＋';color:var(--muted);font-size:20px}
.cms-group[open] summary::after{content:'−'}
.cms-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:0 20px 20px}
.cms-field{margin:0}
.cms-field-wide{grid-column:1 / -1}
.cms-field textarea{min-height:92px;resize:vertical}

@media(max-width:900px){
  .admin-grid{grid-template-columns:1fr}
  .admin-wide{grid-column:auto}
  .site-image-editor{grid-template-columns:1fr}
}
@media(max-width:640px){
  .cms-fields{grid-template-columns:1fr}
  .cms-field-wide{grid-column:auto}
  .asset-editor{grid-template-columns:1fr}
  .asset-preview{height:150px}
  .members-card,.cms-admin-card{padding:20px}
}

/* V8: homepage right side only shows an image uploaded by the owner. */
.uploaded-hero-only{transform:none;padding:0;overflow:hidden}
.uploaded-hero-only .site-hero-image{min-height:520px}
@media(max-width:820px){.hero.has-uploaded-hero{grid-template-columns:1fr}}


/* V9: owner document uploads */
.document-section{margin-top:18px;background:#f8faf7;border:1px solid var(--line);border-radius:20px;padding:18px}
.document-section-head h3{margin:0 0 4px;font-size:20px}.document-section-head p{margin:0 0 14px}
.document-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.document-upload-card{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:14px;display:grid;gap:10px}
.document-upload-card>label{font-weight:800}.document-preview{aspect-ratio:4/3;border-radius:14px;background:#eef2ed;border:1px dashed #bfc9c1;display:grid;place-items:center;overflow:hidden;color:var(--muted);font-weight:700}
.document-preview img{width:100%;height:100%;object-fit:contain;background:white}.document-preview a{width:100%;height:100%;display:block}
.document-privacy-note{margin:12px 0 0;padding:11px 12px;border-radius:12px;background:#fff3d9;color:#6f5617;font-size:13px;line-height:1.5}
.documents-viewer{display:grid;grid-template-columns:1fr 1fr;gap:16px}.document-view-item{margin:0}.document-view-item h3{margin:0 0 8px}.document-view-item img{width:100%;max-height:520px;object-fit:contain;background:#f7f7f4;border:1px solid var(--line);border-radius:16px}.document-empty{min-height:220px;background:#f7f7f4;border:1px dashed var(--line);border-radius:16px;display:grid;place-items:center;color:var(--muted)}
.public-documents{margin-top:24px;padding-top:22px;border-top:1px solid var(--line)}.public-documents h3{margin:0 0 14px;font-size:22px}.public-document-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.public-document-card{display:grid;gap:8px;color:inherit;text-decoration:none}.public-document-card img{width:100%;aspect-ratio:4/3;object-fit:contain;background:#f7f7f4;border:1px solid var(--line);border-radius:16px}.public-document-card strong{font-size:15px}.public-document-card span{font-size:12px;color:var(--muted)}
@media(max-width:620px){.document-upload-grid,.documents-viewer,.public-document-grid{grid-template-columns:1fr}}


/* V11: password recovery and member reset controls */
.forgot-password-row { display:flex; justify-content:flex-end; margin:-2px 0 14px; }
.forgot-password-row .text-link { font-size:14px; font-weight:700; color:var(--primary, #1f765b); text-decoration:underline; text-underline-offset:3px; }
.member-actions { display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; }
@media (max-width: 720px) { .member-actions { justify-content:flex-start; } }

.auth-section-title{margin:0 0 10px;font-size:28px}.auth-card .form-note{margin-top:0;margin-bottom:18px}.btn-block{width:100%}

.account-divider{border:0;border-top:1px solid var(--line);margin:26px 0;}
