.vh-notice {
  position: fixed;
  z-index: 80;
  right: 24px;
  bottom: calc(24px + env(safe-area-inset-bottom, 0px));
  width: min(420px, calc(100% - 32px));
  box-sizing: border-box;
  padding: 22px;
  border: 1px solid #ece5da;
  border-top: 3px solid #ff6a00;
  border-radius: 20px;
  background: #fffdf9;
  color: #454d58;
  box-shadow: 0 12px 44px #14171c26;
  animation: vh-notice-rise 450ms cubic-bezier(.2,.8,.2,1) both;
}
.vh-notice-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-right: 24px;
  margin-bottom: 14px;
}
.vh-notice-warning { width: 44px; height: 44px; flex: 0 0 44px; }
.vh-notice h2 {
  margin: 0;
  color: #14171c;
  font-size: 18px;
  line-height: 1.4;
}
.vh-notice-body {
  max-height: min(310px, 40vh);
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  font-size: 14px;
  line-height: 1.65;
}
.vh-notice-body p { margin: 0 0 12px; }
.vh-notice-body p:last-child { margin-bottom: 0; }
.vh-notice-hint { display: none; }
.vh-notice-close {
  position: absolute;
  top: 8px;
  right: 8px;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #454d58;
  font-size: 26px;
  cursor: pointer;
}
.vh-notice-close:hover { background: #fff2e7; }
.vh-notice :focus-visible { outline: 2px solid #a54100; outline-offset: 2px; }
@keyframes vh-notice-rise {
  from { opacity: 0; transform: translateY(calc(100% + 32px)); }
  to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 600px) {
  .vh-notice {
    right: 16px;
    bottom: calc(12px + env(safe-area-inset-bottom, 0px));
    padding: 18px;
    border-radius: 16px;
  }
  .vh-notice h2 { font-size: 16px; }
  /* Whole line-height units keep the resting edge between text lines.
     Paragraph gaps use the same unit so they preserve that alignment. */
  .vh-notice-body { max-height: 8lh; font-size: 14px; }
  .vh-notice-body p { margin-bottom: 1lh; }
  .vh-notice-body p:last-child { margin-bottom: 0; }
  .vh-notice-hint {
    display: block;
    margin: 12px 0 0;
    padding-top: 10px;
    border-top: 1px solid #ece5da;
    color: #a54100;
    font-size: 12px;
    line-height: 1.5;
  }
}
@media (max-width: 600px) and (max-height: 650px) {
  .vh-notice-body { max-height: 3lh; }
}
@media (prefers-reduced-motion: reduce) {
  .vh-notice { animation: none; }
}
