* { box-sizing: border-box; }
html, body { min-height: 100%; }
body.dhv-auth-body { margin: 0; min-width: 320px; background: var(--dhv-bg); color: var(--dhv-text); font: 400 16px/1.55 var(--dhv-font); -webkit-font-smoothing: antialiased; }
.dhv-auth { min-height: 100vh; padding: 48px 20px; display: grid; place-items: center; }
.dhv-auth__wrap { width: min(100%, 448px); }
.dhv-auth__brand { display: grid; justify-items: center; margin-bottom: 22px; text-align: center; }
.dhv-auth__brand img { width: 72px; height: 72px; object-fit: contain; border-radius: 20px; background: #fff; }
.dhv-auth__brand span { margin-top: 10px; color: var(--dhv-muted); font-size: 12px; font-weight: 600; letter-spacing: .02em; }
.dhv-auth__panel { padding: 28px; border: 1px solid var(--dhv-border); border-radius: 20px; background: #fff; box-shadow: var(--dhv-shadow); }
.dhv-auth__head { margin-bottom: 22px; text-align: center; }
.dhv-auth__head h1 { margin: 0; color: var(--dhv-ink); font-size: 28px; line-height: 1.2; font-weight: 700; letter-spacing: -.02em; }
.dhv-auth__head p { margin: 8px 0 0; color: var(--dhv-muted); font-size: 14px; }
.dhv-auth__notice { margin-bottom: 16px; padding: 12px 13px; border-radius: 11px; font-size: 13px; }
.dhv-auth__notice.is-error { border: 1px solid #fecdca; background: var(--dhv-danger-bg); color: var(--dhv-danger); }
.dhv-auth__notice.is-success { border: 1px solid #abefc6; background: var(--dhv-success-bg); color: var(--dhv-success); }
.dhv-auth__notice.is-info { border: 1px solid #b2ddff; background: var(--dhv-info-bg); color: var(--dhv-info); }
.dhv-auth__form { display: grid; gap: 15px; }
.dhv-auth__form label { display: grid; gap: 7px; color: var(--dhv-text); font-size: 13px; font-weight: 600; }
.dhv-auth__form input[type="text"], .dhv-auth__form input[type="email"], .dhv-auth__form input[type="password"], .dhv-auth__form input[type="url"], .dhv-auth__form input[type="number"], .dhv-auth__form select { width: 100%; min-height: 46px; padding: 10px 12px; border: 1px solid var(--dhv-border-strong); border-radius: 10px; outline: none; background: #fff; color: var(--dhv-ink); font-size: 15px; font-weight: 400; }
.dhv-auth__form input:focus, .dhv-auth__form select:focus { border-color: var(--dhv-brand-action); box-shadow: 0 0 0 3px rgba(216,40,49,.10); }
.dhv-auth__password { display: flex; align-items: stretch; }
.dhv-auth__password input { border-radius: 10px 0 0 10px; }
.dhv-auth__password button { min-width: 60px; border: 1px solid var(--dhv-border-strong); border-left: 0; border-radius: 0 10px 10px 0; background: var(--dhv-surface-soft); color: var(--dhv-text); font-size: 12px; font-weight: 600; }
.dhv-auth__row { display: flex; align-items: center; justify-content: space-between; gap: 14px; font-size: 13px; }
.dhv-auth__remember { display: flex; align-items: center; gap: 8px; font-weight: 400; }
.dhv-auth__row a, .dhv-auth__secondary a { color: var(--dhv-brand-action); font-weight: 600; text-decoration: none; }
.dhv-auth__submit { min-height: 46px; border: 1px solid var(--dhv-brand-action); border-radius: 10px; background: var(--dhv-brand-action); color: var(--dhv-on-brand); font-size: 14px; font-weight: 600; }
.dhv-auth__submit:hover { border-color: var(--dhv-brand-hover); background: var(--dhv-brand-hover); }
.dhv-auth__submit:disabled { cursor: not-allowed; opacity: .55; }
.dhv-auth__secondary { margin-top: 18px; text-align: center; color: var(--dhv-muted); font-size: 13px; }
.dhv-auth__privacy { margin: 18px auto 0; max-width: 390px; color: var(--dhv-subtle); text-align: center; font-size: 12px; }
.dhv-auth__back { display: block; margin-top: 18px; color: var(--dhv-muted); text-align: center; font-size: 12px; font-weight: 500; text-decoration: none; }
.dhv-auth__role-grid { display: grid; gap: 8px; }
.dhv-auth__role { position: relative; display: block; }
.dhv-auth__role input { position: absolute; opacity: 0; pointer-events: none; }
.dhv-auth__role span { display: block; padding: 12px; border: 1px solid var(--dhv-border); border-radius: 11px; background: #fff; }
.dhv-auth__role strong { display: block; color: var(--dhv-ink); font-size: 14px; font-weight: 600; }
.dhv-auth__role small { display: block; margin-top: 3px; color: var(--dhv-muted); font-size: 12px; font-weight: 400; }
.dhv-auth__role input:checked + span { border-color: var(--dhv-brand-action); box-shadow: 0 0 0 2px rgba(216,40,49,.08); }
.dhv-auth__hint { color: var(--dhv-muted); font-size: 12px; font-weight: 400; }
.dhv-auth__check { display: flex; grid-template-columns: auto 1fr; align-items: flex-start; gap: 9px; color: var(--dhv-muted); font-size: 12px; font-weight: 400; }
@media (max-width: 520px) { .dhv-auth { padding: 26px 14px; align-items: start; } .dhv-auth__panel { padding: 22px 18px; border-radius: 17px; } .dhv-auth__brand img { width: 64px; height: 64px; } }
.dhv-auth__reset-stack { display: grid; grid-template-columns: 1fr auto; gap: 8px; }
.dhv-auth__reset-stack button { min-width: 60px; border: 1px solid var(--dhv-border-strong); border-radius: 10px; background: var(--dhv-surface-soft); color: var(--dhv-text); font-size: 12px; font-weight: 600; }
.dhv-auth__requirements { padding: 12px 14px; border: 1px solid var(--dhv-border); border-radius: 11px; background: var(--dhv-surface-soft); color: var(--dhv-muted); font-size: 13px; line-height: 1.65; }
.dhv-auth__status { min-height: 20px; color: var(--dhv-muted); font-size: 13px; font-weight: 600; }
.dhv-auth__footnote { margin: 18px 0 0; color: var(--dhv-muted); font-size: 12px; line-height: 1.6; }
.dhv-auth__footnote a { color: var(--dhv-brand-action); font-weight: 600; text-decoration: none; }

/* RC19.2 Auth + Knowledge Center unification. */
.dhv-auth__form .dhv-auth__remember { display:flex; grid-template-columns:none; align-items:center; gap:8px; font-weight:400; }
.dhv-auth__remember input,.dhv-auth__check input { width:17px; height:17px; min-height:0; margin:2px 0 0; accent-color:var(--dhv-brand-action); }
.dhv-auth__form textarea,.dhv-auth__search input { width:100%; padding:11px 12px; border:1px solid var(--dhv-border-strong); border-radius:10px; outline:none; background:#fff; color:var(--dhv-ink); font:400 15px/1.55 var(--dhv-font); }
.dhv-auth__form textarea { min-height:120px; resize:vertical; }
.dhv-auth__form textarea:focus,.dhv-auth__search input:focus { border-color:var(--dhv-brand-action); box-shadow:0 0 0 3px rgba(216,40,49,.10); }
.dhv-auth__hp,[hidden].dhv-auth__hp { display:none; }
.dhv-auth__panel--register { padding:30px; }
.dhv-auth__wrap--register { width:min(100%,620px); }
.dhv-auth__wrap--help { width:min(100%,980px); }
.dhv-auth__panel--help { padding:32px; }
.dhv-auth__head--left { text-align:left; }
.dhv-auth__head--left p { max-width:720px; font-size:15px; }
.dhv-auth__section { display:grid; gap:12px; margin-top:22px; }
.dhv-auth__section:first-of-type { margin-top:0; }
.dhv-auth__section-title { margin:0; color:var(--dhv-ink); font-size:18px; line-height:1.35; font-weight:700; }
.dhv-auth__section-copy { margin:-5px 0 0; color:var(--dhv-muted); font-size:14px; }
.dhv-auth__role-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.dhv-auth__role span { min-height:100%; }
.dhv-auth__register-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:15px; }
.dhv-auth__register-grid > label { min-width:0; }
.dhv-auth__register-grid .is-wide { grid-column:1/-1; }
.dhv-auth__divider { height:1px; margin:6px 0; background:var(--dhv-border); }
.dhv-auth__help-intro { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:20px; }
.dhv-auth__help-intro .dhv-auth__head { margin:0; }
.dhv-auth__help-login { color:var(--dhv-muted); font-size:13px; white-space:nowrap; }
.dhv-auth__help-login a { color:var(--dhv-brand-action); font-weight:600; text-decoration:none; }
.dhv-auth__search { margin:22px 0 18px; }
.dhv-auth__search input { min-height:50px; padding-left:15px; font-size:16px; }
.dhv-auth__help-groups { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-bottom:22px; }
.dhv-auth__help-group { padding:14px; border:1px solid var(--dhv-border); border-radius:12px; background:var(--dhv-surface-soft); color:var(--dhv-ink); text-decoration:none; }
.dhv-auth__help-group strong { display:block; font-size:14px; font-weight:700; }
.dhv-auth__help-group small { display:block; margin-top:4px; color:var(--dhv-muted); font-size:12px; line-height:1.45; }
.dhv-auth__help-group.is-active { border-color:var(--dhv-brand-action); background:#fff7f7; }
.dhv-auth__help-list { display:grid; gap:9px; }
.dhv-auth__help-topic { border:1px solid var(--dhv-border); border-radius:12px; background:#fff; }
.dhv-auth__help-topic[hidden] { display:none; }
.dhv-auth__help-topic summary { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:15px 16px; cursor:pointer; list-style:none; }
.dhv-auth__help-topic summary::-webkit-details-marker { display:none; }
.dhv-auth__help-topic summary strong { display:block; color:var(--dhv-ink); font-size:15px; font-weight:700; }
.dhv-auth__help-topic summary small { display:block; margin-top:4px; color:var(--dhv-muted); font-size:13px; line-height:1.5; }
.dhv-auth__help-topic summary b { color:var(--dhv-muted); font-size:18px; font-weight:400; }
.dhv-auth__help-topic > div { padding:0 16px 16px; border-top:1px solid var(--dhv-border); }
.dhv-auth__help-topic p { margin:14px 0 10px; color:var(--dhv-text); font-size:15px; line-height:1.7; }
.dhv-auth__help-topic a { color:var(--dhv-brand-action); font-size:13px; font-weight:700; text-decoration:none; }
.dhv-auth__help-empty { display:none; padding:18px; border:1px dashed var(--dhv-border-strong); border-radius:12px; color:var(--dhv-muted); text-align:center; font-size:14px; }
.dhv-auth__support { margin-top:26px; padding-top:24px; border-top:1px solid var(--dhv-border); }
.dhv-auth__support h2 { margin:0; color:var(--dhv-ink); font-size:20px; font-weight:700; }
.dhv-auth__support > p { margin:6px 0 16px; color:var(--dhv-muted); font-size:14px; }
.dhv-auth__support .dhv-auth__form { grid-template-columns:repeat(2,minmax(0,1fr)); }
.dhv-auth__support .is-wide,.dhv-auth__support .dhv-auth__submit { grid-column:1/-1; }
.dhv-auth__support .dhv-auth__submit { width:max-content; min-width:190px; }
.dhv-auth input:-webkit-autofill,.dhv-auth input:-webkit-autofill:hover,.dhv-auth input:-webkit-autofill:focus { -webkit-text-fill-color:var(--dhv-ink); -webkit-box-shadow:0 0 0 1000px #fff inset; transition:background-color 9999s ease-out 0s; }
@media (max-width:820px) {
  .dhv-auth__help-groups { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .dhv-auth__help-intro { grid-template-columns:1fr; align-items:start; }
  .dhv-auth__help-login { white-space:normal; }
}
@media (max-width:620px) {
  .dhv-auth__register-grid,.dhv-auth__support .dhv-auth__form,.dhv-auth__role-grid { grid-template-columns:1fr; }
  .dhv-auth__register-grid .is-wide,.dhv-auth__support .is-wide,.dhv-auth__support .dhv-auth__submit { grid-column:auto; }
  .dhv-auth__help-groups { grid-template-columns:1fr; }
  .dhv-auth__panel--help,.dhv-auth__panel--register { padding:22px 18px; }
}


/* RC19.3 · shared Help/Auth interaction */
.dhv-auth :where(a,button,input,select,textarea,summary):focus-visible { outline:2px solid var(--dhv-brand-action); outline-offset:2px; box-shadow:0 0 0 4px var(--dhv-focus-ring); }
.dhv-auth__submit, .dhv-auth button[type="submit"] { color:var(--dhv-on-brand); -webkit-text-fill-color:var(--dhv-on-brand); }
.dhv-auth__help-pagination{margin:16px 0 0;display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.dhv-auth__help-pagination button{min-width:38px;height:38px;border:1px solid var(--dhv-border);border-radius:9px;background:var(--dhv-surface);color:var(--dhv-text);font-size:13px;font-weight:600}.dhv-auth__help-pagination button.is-active{border-color:var(--dhv-brand-action);background:var(--dhv-brand-action);color:#fff;-webkit-text-fill-color:#fff}

/* RC19.3.1 · Color Authority + Password Geometry Polish */
body.dhv-auth-body .dhv-auth form.dhv-auth__form > button.dhv-auth__submit[type="submit"],
body.dhv-auth-body .dhv-auth .dhv-auth__support form.dhv-auth__form > button.dhv-auth__submit[type="submit"] {
  background: var(--dhv-brand-action);
  border-color: var(--dhv-brand-action);
  color: #fff;
  -webkit-text-fill-color: #fff;
  appearance: none;
  -webkit-appearance: none;
}
body.dhv-auth-body .dhv-auth form.dhv-auth__form > button.dhv-auth__submit[type="submit"]:hover,
body.dhv-auth-body .dhv-auth form.dhv-auth__form > button.dhv-auth__submit[type="submit"]:focus-visible {
  background: var(--dhv-brand-hover);
  border-color: var(--dhv-brand-hover);
  color: #fff;
  -webkit-text-fill-color: #fff;
}
.dhv-auth__password {
  display: grid;
  grid-template-columns: minmax(0,1fr) 72px;
  align-items: stretch;
  width: 100%;
}
.dhv-auth__password input {
  width: 100%;
  min-width: 0;
  height: 46px;
  min-height: 46px;
  border-radius: 10px 0 0 10px;
}
.dhv-auth__password button {
  width: 72px;
  min-width: 72px;
  height: 46px;
  min-height: 46px;
  padding: 0 10px;
  border-left: 0;
  line-height: 1;
  white-space: nowrap;
  appearance: none;
  -webkit-appearance: none;
}
.dhv-auth__register-grid > label { min-width: 0; align-content: start; }
.dhv-auth__privacy { color: var(--dhv-muted); }

