/* わんパス — カラーはエージェントBのパレット（コントラスト比検証済み）を使用 */
:root{
  --paper:#FBF8F2; --surface:#FFFFFF; --rule:#E3DCCE;
  --ink:#16202B; --ink60:#55606D;
  --navy:#1E3A5F; --navy-deep:#142942; --navy-tint:#E8EDF4;
  --gold:#8A6318; --gold-surface:#B8862B;
  --alert:#B03A2E; --leaf:#2E6F52; --amber:#8A5A00;
  --r:12px; --tap:48px;
  --fs:17px;
}
:root[data-theme="dark"], :root:not([data-theme="light"]) {}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#12161B; --surface:#1B222B; --surface2:#232C37; --rule:#333E4B;
    --ink:#F2EEE6; --ink60:#A8B2BE;
    --navy:#8FB4E0; --navy-deep:#A9C6EA; --navy-tint:#232C37;
    --gold:#E3B457; --gold-surface:#E3B457;
    --alert:#FF8B7A; --leaf:#6FCFA5; --amber:#E3B457;
  }
}
:root[data-theme="dark"]{
  --paper:#12161B; --surface:#1B222B; --surface2:#232C37; --rule:#333E4B;
  --ink:#F2EEE6; --ink60:#A8B2BE;
  --navy:#8FB4E0; --navy-deep:#A9C6EA; --navy-tint:#232C37;
  --gold:#E3B457; --gold-surface:#E3B457;
  --alert:#FF8B7A; --leaf:#6FCFA5; --amber:#E3B457;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--paper); color:var(--ink);
  font-family:"BIZ UDPGothic","Yu Gothic UI","Hiragino Sans","Noto Sans JP",system-ui,sans-serif;
  font-size:var(--fs); line-height:1.7;
  -webkit-text-size-adjust:100%;
  padding-bottom:env(safe-area-inset-bottom);
}
h1,h2,h3{line-height:1.4;margin:0 0 .4em}
h1{font-size:1.5rem}
h2{font-size:1.2rem}
h3{font-size:1.02rem;color:var(--ink60);font-weight:700;letter-spacing:.02em}
p{margin:0 0 .8em}
a{color:var(--navy)}

.boot{padding:3rem 1rem;text-align:center;color:var(--ink60)}

/* ---------- app bar ---------- */
/* アプリバーは両テーマとも濃紺で固定する。
   var(--navy) はダークで水色に反転するため、白文字とのコントラストが落ち、
   端末のステータスバー(theme-color)とも色が食い違ってしまう。 */
.appbar{
  position:sticky;top:0;z-index:30;
  display:flex;align-items:center;gap:.5rem;
  padding:.4rem .7rem; padding-top:calc(.4rem + env(safe-area-inset-top));
  background:#1E3A5F; color:#fff;
}
.appbar__dog{
  display:flex;align-items:center;gap:.55rem;
  background:transparent;border:0;color:inherit;font:inherit;font-weight:700;
  padding:.35rem .5rem;border-radius:10px;cursor:pointer;min-height:var(--tap);
  max-width:70%;
}
.appbar__dog:hover{background:rgba(255,255,255,.12)}
.appbar__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.appbar__caret{opacity:.8;font-size:.8em}
.appbar__actions{margin-left:auto;display:flex;align-items:center;gap:.3rem}
.avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;background:rgba(255,255,255,.25);flex:0 0 auto}
.avatar--lg{width:96px;height:96px}
.savestate{font-size:.78rem;opacity:.85;min-width:4.2em;text-align:right}
.iconbtn{
  min-width:var(--tap);min-height:var(--tap);
  display:inline-flex;align-items:center;justify-content:center;
  background:transparent;border:0;color:inherit;font-size:1.1rem;border-radius:10px;cursor:pointer;
}
.iconbtn:hover{background:rgba(255,255,255,.12)}

/* ---------- nav ---------- */
.nav{
  position:sticky;top:calc(var(--tap) + .8rem + env(safe-area-inset-top));z-index:20;
  display:flex;gap:.25rem;overflow-x:auto;scrollbar-width:thin;
  background:var(--surface);border-bottom:1px solid var(--rule);
  padding:.3rem .5rem;
}
.nav button{
  flex:0 0 auto;min-height:44px;padding:.3rem .8rem;
  background:transparent;border:0;border-radius:999px;
  font:inherit;font-size:.95rem;color:var(--ink60);cursor:pointer;white-space:nowrap;
}
.nav button[aria-current="page"]{background:var(--navy-tint);color:var(--navy);font-weight:700}

/* ---------- layout ---------- */
.view{max-width:860px;margin:0 auto;padding:1rem .9rem 5rem;outline:none}
.card{
  background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);
  padding:1rem;margin:0 0 1rem;
}
.card--flat{border:0;background:transparent;padding:0}
.card__head{display:flex;align-items:center;gap:.5rem;margin:0 0 .7rem}
.card__head h2,.card__head h3{margin:0}
.card__head .spacer{margin-left:auto}
.grid{display:grid;gap:.9rem}
@media(min-width:640px){ .grid--2{grid-template-columns:1fr 1fr} }
.row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}
.muted{color:var(--ink60)}
.small{font-size:.86rem}
.center{text-align:center}
.hr{height:1px;background:var(--rule);border:0;margin:1rem 0}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  min-height:var(--tap);padding:.55rem 1.1rem;
  border-radius:10px;border:1px solid var(--rule);background:var(--surface);color:var(--ink);
  font:inherit;font-weight:700;cursor:pointer;text-decoration:none;
}
.btn:hover{border-color:var(--navy)}
.btn--primary{background:var(--navy);border-color:var(--navy);color:#fff}
:root[data-theme="dark"] .btn--primary{color:#12161B}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .btn--primary{color:#12161B}}
.btn--primary:hover{background:var(--navy-deep);border-color:var(--navy-deep)}
.btn--alert{background:var(--alert);border-color:var(--alert);color:#fff}
:root[data-theme="dark"] .btn--alert{color:#12161B}
.btn--ghost{background:transparent}
.btn--sm{min-height:38px;padding:.25rem .7rem;font-size:.88rem;font-weight:600}
.btn--block{width:100%}
.btn--big{min-height:64px;font-size:1.12rem}
.btn:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{
  outline:3px solid var(--navy);outline-offset:2px
}

/* ---------- forms ---------- */
.field{margin:0 0 .85rem}
.field > label{display:block;font-size:.9rem;font-weight:700;color:var(--ink60);margin:0 0 .25rem}
.field .hint{font-size:.82rem;color:var(--ink60);margin:.25rem 0 0}
input[type=text],input[type=date],input[type=number],input[type=tel],input[type=url],select,textarea{
  width:100%;min-height:var(--tap);padding:.5rem .7rem;
  background:var(--surface);color:var(--ink);
  border:1px solid var(--rule);border-radius:10px;font:inherit;
}
textarea{min-height:5.5rem;resize:vertical;line-height:1.6}
input::placeholder,textarea::placeholder{color:var(--ink60);opacity:.7}
.checkline{display:flex;align-items:center;gap:.6rem;min-height:var(--tap)}
.checkline input{width:22px;height:22px;flex:0 0 auto}
.chips{display:flex;flex-wrap:wrap;gap:.45rem}
.chip{
  display:inline-flex;align-items:center;min-height:40px;padding:.25rem .8rem;
  border:1px solid var(--rule);border-radius:999px;background:var(--surface);
  font:inherit;font-size:.92rem;cursor:pointer;color:var(--ink);
}
.chip[aria-pressed="true"]{background:var(--navy-tint);border-color:var(--navy);color:var(--navy);font-weight:700}
.chip--danger[aria-pressed="true"]{background:var(--alert);border-color:var(--alert);color:#fff}
:root[data-theme="dark"] .chip--danger[aria-pressed="true"]{color:#12161B}

details.fold{border:1px solid var(--rule);border-radius:var(--r);background:var(--surface);margin:0 0 .8rem}
details.fold > summary{
  min-height:var(--tap);display:flex;align-items:center;gap:.5rem;
  padding:.6rem .9rem;cursor:pointer;font-weight:700;list-style:none;
}
details.fold > summary::-webkit-details-marker{display:none}
details.fold > summary::before{content:"▸";color:var(--ink60)}
details.fold[open] > summary::before{content:"▾"}
details.fold > .fold__body{padding:0 .9rem .9rem}

/* ---------- lists ---------- */
.list{list-style:none;margin:0;padding:0}
.item{
  display:flex;gap:.8rem;align-items:flex-start;
  padding:.75rem 0;border-top:1px solid var(--rule);
}
.item:first-child{border-top:0}
.item__main{flex:1;min-width:0}
.item__title{font-weight:700}
.item__sub{font-size:.87rem;color:var(--ink60)}
.item__act{display:flex;gap:.3rem;flex:0 0 auto}

.badge{
  display:inline-block;padding:.1rem .55rem;border-radius:999px;
  font-size:.8rem;font-weight:700;border:1px solid currentColor;
}
.badge--ok{color:var(--leaf)}
.badge--warn{color:var(--amber)}
.badge--alert{color:var(--alert)}
.badge--info{color:var(--navy)}

.empty{
  border:1px dashed var(--rule);border-radius:var(--r);
  padding:1.4rem 1rem;text-align:center;color:var(--ink60)
}

/* ---------- home ---------- */
.hero{display:flex;gap:1rem;align-items:center;margin:0 0 1rem}
.hero__name{font-size:1.6rem;font-weight:800;margin:0}
.hero__meta{color:var(--ink60);font-size:.92rem}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.7rem}
.tile{
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:.15rem;
  min-height:82px;padding:.8rem;border-radius:var(--r);
  border:1px solid var(--rule);background:var(--surface);color:var(--ink);
  font:inherit;text-align:left;cursor:pointer;
}
.tile:hover{border-color:var(--navy)}
.tile__k{font-size:.82rem;color:var(--ink60)}
.tile__v{font-size:1.05rem;font-weight:700}
.notice{
  display:flex;gap:.6rem;align-items:flex-start;
  border-left:4px solid var(--amber);background:var(--surface);
  border-radius:0 var(--r) var(--r) 0;padding:.7rem .9rem;margin:0 0 .6rem;
}
.notice--alert{border-left-color:var(--alert)}
.notice--ok{border-left-color:var(--leaf)}

.lostbanner{
  background:var(--alert);color:#fff;border-radius:var(--r);
  padding:.8rem 1rem;margin:0 0 1rem;font-weight:700;
  display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
}
:root[data-theme="dark"] .lostbanner{color:#12161B}

/* ---------- qr ---------- */
.qrbox{
  background:#fff;padding:14px;border-radius:var(--r);
  display:inline-block;line-height:0;border:1px solid var(--rule);
}
.qrbox svg{display:block;width:min(74vw,260px);height:auto}

/* ---------- photos ---------- */
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:.5rem}
.thumb{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;border:1px solid var(--rule);background:var(--surface)}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb__x{position:absolute;top:4px;right:4px;background:rgba(0,0,0,.62);color:#fff;border:0;border-radius:999px;width:30px;height:30px;cursor:pointer;font-size:.9rem}
.filelabel{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  min-height:var(--tap);padding:.55rem 1.1rem;border:1px dashed var(--rule);border-radius:10px;
  cursor:pointer;font-weight:700;
}
.filelabel input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}

/* ---------- sheet(modal) ---------- */
/* hidden 属性は UA の display:none を付けるだけなので、
   下の display:flex に負ける。明示的に打ち消しておく。 */
.sheet[hidden],.toast[hidden]{display:none !important}
.sheet{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center}
.sheet__backdrop{position:absolute;inset:0;background:rgba(10,14,20,.55)}
.sheet__panel{
  position:relative;width:min(700px,100%);max-height:88vh;overflow:auto;
  background:var(--paper);border-radius:16px 16px 0 0;padding:0 1rem 1.2rem;
  padding-bottom:calc(1.2rem + env(safe-area-inset-bottom));
}
@media(min-width:700px){
  .sheet{align-items:center}
  .sheet__panel{border-radius:16px;max-height:86vh}
}
.sheet__head{
  position:sticky;top:0;background:var(--paper);z-index:2;
  display:flex;align-items:center;gap:.5rem;padding:.8rem 0 .6rem;border-bottom:1px solid var(--rule);margin-bottom:.9rem
}
.sheet__head h2{margin:0;flex:1;font-size:1.1rem}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;transform:translateX(-50%);bottom:calc(1.2rem + env(safe-area-inset-bottom));
  background:var(--ink);color:var(--paper);padding:.6rem 1.1rem;border-radius:999px;
  z-index:90;font-size:.92rem;box-shadow:0 4px 16px rgba(0,0,0,.25);max-width:90vw;text-align:center;
}

/* 画面では印刷領域を隠す */
.printarea{display:none}

@media (prefers-reduced-motion:no-preference){
  .toast{animation:pop .18s ease-out}
  @keyframes pop{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
}
