*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
:root{
  --paper:#FBF7F3; --paper-warm:#F3EAE3; --card:#FFFFFF;
  --ink:#3B2B31; --ink-mid:rgba(59,43,49,.72); --ink-dim:rgba(59,43,49,.52);
  --line:rgba(59,43,49,.14); --plum:#8E4A63; --plum-soft:#C98BA3; --plum-wash:#F7EDF1;
  --gold:#B08442; --gold-wash:#FBF3E6; --radius:10px; --gut:clamp(1.25rem,5vw,2rem);
}
html{ -webkit-text-size-adjust:100%; }
body{
  background:var(--paper); color:var(--ink); line-height:1.9; font-size:16px;
  font-family:'Shippori Mincho', serif;
  padding:calc(env(safe-area-inset-top,0px) + 2.5rem) var(--gut) calc(env(safe-area-inset-bottom,0px) + 3rem);
}
.en{ font-family:'Outfit',sans-serif; letter-spacing:.18em; text-transform:uppercase; }
.sheet{ width:min(640px,100%); margin-inline:auto; }
.brand{ text-align:center; margin-bottom:2.2rem; }
.brand a{ color:inherit; text-decoration:none; }
.brand .name{ font-size:1.05rem; font-weight:600; letter-spacing:.14em; }
.brand .sub{ font-family:'Outfit',sans-serif; font-size:.62rem; letter-spacing:.3em; color:var(--ink-dim); text-transform:uppercase; margin-top:.3rem; }
h1{ font-size:clamp(1.4rem,4.6vw,1.9rem); font-weight:600; line-height:1.6; text-align:center; }
.lead{ color:var(--ink-mid); font-size:.9rem; text-align:center; margin-top:.9rem; }
.card{ background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:clamp(1.4rem,4vw,2.2rem); margin-top:2rem; }
.field{ margin-bottom:1.8rem; }
.field:last-child{ margin-bottom:0; }
fieldset{ border:none; padding:0; margin:0; }
label.q, legend.q{ display:block; font-size:.95rem; font-weight:600; margin-bottom:.2rem; padding:0; width:100%; }
.hint{ font-size:.76rem; color:var(--ink-dim); line-height:1.8; margin-bottom:.7rem; }
input[type=text], input[type=email], input[type=date], select, textarea{
  width:100%; font-family:inherit; font-size:1rem; color:var(--ink);
  background:var(--paper); border:1px solid var(--line); border-radius:8px; padding:.8rem .9rem;
}
textarea{ resize:vertical; min-height:5.5rem; line-height:1.8; }
input:focus-visible, select:focus-visible, textarea:focus-visible, button:focus-visible, a:focus-visible{
  outline:2px solid var(--plum); outline-offset:2px;
}
.choices{ display:grid; gap:.6rem; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
.choice{ position:relative; }
.choice input{ position:absolute; opacity:0; inset:0; width:100%; height:100%; cursor:pointer; }
.choice span{
  display:block; text-align:center; padding:.85rem .6rem; border:1px solid var(--line);
  border-radius:8px; background:var(--paper); font-size:.92rem; transition:all .2s ease;
}
.choice b{ display:block; font-size:.7rem; font-family:'Outfit',sans-serif; letter-spacing:.14em; color:var(--ink-dim); font-weight:500; }
.choice input:checked + span{ background:var(--plum-wash); border-color:var(--plum); color:var(--plum); font-weight:600; }
.choice input:focus-visible + span{ outline:2px solid var(--plum); outline-offset:2px; }
.agree{ display:flex; gap:.7rem; align-items:flex-start; font-size:.85rem; color:var(--ink-mid); background:var(--gold-wash); border:1px solid rgba(176,132,66,.28); border-radius:8px; padding:1rem; }
.agree input{ margin-top:.45rem; flex:none; width:18px; height:18px; accent-color:var(--plum); }
.agree a{ color:var(--plum); }
button.submit{
  width:100%; margin-top:1.8rem; background:var(--plum); color:#fff; border:none; border-radius:999px;
  font-family:inherit; font-size:1.02rem; font-weight:600; letter-spacing:.06em; padding:1.05rem 1rem; cursor:pointer;
  transition:transform .3s cubic-bezier(.22,1,.36,1), background .3s ease, box-shadow .3s ease;
  box-shadow:0 6px 20px rgba(142,74,99,.2);
}
button.submit:hover:not(:disabled){ transform:translateY(-2px); background:#7d3F57; box-shadow:0 12px 28px rgba(142,74,99,.28); }
button.submit:disabled{ opacity:.55; cursor:not-allowed; }
.msg{ margin-top:1rem; font-size:.86rem; padding:.9rem 1rem; border-radius:8px; display:none; }
.msg.err{ display:block; background:#FDF0F0; border:1px solid #E7B9B9; color:#9A3B3B; }
.footnote{ font-size:.75rem; color:var(--ink-dim); text-align:center; margin-top:2rem; line-height:1.9; }
.footnote a{ color:var(--ink-dim); }
.legal{ font-size:.88rem; color:var(--ink-mid); }
.legal h2{ font-size:1.02rem; font-weight:600; color:var(--ink); margin:2rem 0 .7rem; }
.legal h2:first-child{ margin-top:0; }
.legal ol, .legal ul{ padding-left:1.3rem; }
.legal li{ margin-bottom:.4rem; }
@media (prefers-reduced-motion: reduce){ *{ transition:none !important; animation:none !important; } }
