@font-face {font-family:Nunito;src:url("assets/fonts/nunito-latin.woff2") format("woff2");font-style:normal;font-weight:200 1000;font-display:swap;}
/* Keep the original shop and machine crisp; the blue floor holds the real UI. */
#welcome,#account-dialog {font-family:Nunito,'Arial Rounded MT Bold','Trebuchet MS',sans-serif;}
html:has(#welcome:not([hidden])) {height:100%;overflow:hidden;}
body:has(#welcome:not([hidden])) {height:100dvh;min-height:0;overflow:hidden;}
#welcome {
  width:100%;height:100dvh;min-height:0;margin:0;padding:0;border:0;border-radius:0;
  box-shadow:none;display:grid;grid-template-rows:minmax(0,1fr) max(120px,29dvh);
  isolation:isolate;position:relative;background:#24aff1;overflow:hidden;
}
#welcome .welcome-title {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
.welcome-visual {position:relative;min-height:0;pointer-events:none;z-index:1;}
.welcome-visual picture {display:block;width:100%;height:100%;overflow:hidden;}
.welcome-art {display:block;width:100%;height:100%;object-fit:cover;object-position:center top;}
.welcome-machine {position:absolute;left:50%;bottom:-5%;height:54%;width:40%;max-width:420px;object-fit:contain;transform:translateX(-50%);}
.welcome-content {position:relative;min-width:0;min-height:0;text-align:center;display:flex;flex-direction:column;justify-content:safe center;overflow:auto;gap:8px;padding:22px max(24px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));}
.welcome-floor {position:absolute;inset:0;overflow:hidden;z-index:-1;border-top:3px solid #318de8;}
.welcome-floor img {position:absolute;bottom:0;left:0;width:100%;height:456.8%;object-fit:cover;object-position:center bottom;}
.welcome-actions {width:min(100%,1040px);align-self:center;display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.welcome-choice {display:flex;flex-direction:column;align-items:stretch;gap:12px;min-width:0;}
#welcome button {width:100%;min-height:56px;padding:10px 18px;margin:0;font-size:clamp(18px,2.3vw,28px);line-height:1.2;}
#welcome #welcome-login {font-size:clamp(23px,3vw,32px);color:white;text-shadow:0 2px 0 #68326f,-1px 0 #68326f,1px 0 #68326f;}
#welcome .welcome-benefit,#welcome .welcome-note {margin:0;font-size:clamp(14px,1.2vw,17px);line-height:1.4;font-weight:700;color:#112557;}
#welcome-status {position:relative;margin:0;line-height:1.4;font-size:14px;color:#211557;font-weight:700;}
#welcome-status:empty,#account-error:empty {display:none;}
#welcome button:focus-visible,#account-dialog button:focus-visible {outline:3px solid #551e84;outline-offset:3px;}
#welcome button:disabled,#account-submit:disabled {opacity:.65;cursor:wait;}
/* A compact modal with native, labelled form fields. */
#account-dialog {
  width:min(600px,96vw);max-width:none;max-height:calc(100dvh - 24px);padding:0;
  margin:auto;border:3px solid #70539a;border-radius:26px;overflow:auto;
  background:#fff3fc url("assets/welcome-clouds.webp") center/cover;
  box-shadow:0 7px 0 #a882b7;text-align:left;overscroll-behavior:contain;
}
#account-dialog[open] {display:block;}
#account-dialog::backdrop {background:#29134099;backdrop-filter:blur(5px);}
.account-content {min-width:0;padding:24px;}
.account-header {display:flex;align-items:flex-start;gap:12px;margin-bottom:20px;}
#account-dialog h1 {font-size:clamp(23px,3vw,32px);line-height:1.15;margin:0;color:#39256e;}
.account-header p {font-size:14px;line-height:1.4;color:#705780;margin:8px 0 0;}
#account-close {margin:0 0 0 auto;padding:8px 13px;font-size:14px;min-height:44px;flex:none;}
#account-form {display:grid;gap:16px;}
#account-form label {display:block;margin:0 0 6px;font-size:15px;font-weight:bold;color:#39256e;}
#account-form input {width:100%;min-height:48px;padding:10px 14px;border:2px solid #b49acb;border-radius:14px;background:#fffcff;color:#211557;font:inherit;font-size:16px;}
#account-form input::placeholder {color:#82738e;}
#account-form input:focus {outline:3px solid #ddc6f3;outline-offset:2px;border-color:#704099;}
#account-error {font-size:14px;line-height:1.4;margin:0;padding:10px 12px;background:#ffe3f0;border-radius:12px;color:#8a164b;overflow-wrap:anywhere;}
#account-submit {width:100%;min-height:48px;font-size:18px;padding:10px 16px;margin:2px 0 5px;}


@media (orientation:portrait) {
  #welcome {grid-template-rows:minmax(0,1fr) max(248px,38dvh);}
  .welcome-art {width:114%;height:114%;max-width:none;margin-left:-7%;}
  .welcome-machine {height:57%;width:67%;bottom:-7%;}
  .welcome-content {padding:26px max(22px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(22px,env(safe-area-inset-left));}
  .welcome-actions {max-width:440px;grid-template-columns:1fr;gap:24px;}
  .welcome-choice {gap:10px;}
  #welcome button {font-size:clamp(18px,4.8vw,25px);min-height:clamp(64px,16vw,78px);}
  #welcome #welcome-login {font-size:clamp(24px,6.2vw,29px);}
  #welcome .welcome-benefit,#welcome .welcome-note {font-size:14px;}
  #account-dialog {width:min(500px,calc(100vw - 24px));}
  .account-content {padding:24px 20px;}
}
@media (orientation:landscape) and (max-height:600px) {
  .welcome-content {padding:16px max(24px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));}
  .welcome-choice {gap:8px;}
  #welcome button {min-height:54px;font-size:clamp(16px,2.3vw,23px);padding:9px 12px;}
  #welcome .welcome-benefit,#welcome .welcome-note {font-size:14px;}
  #account-dialog {max-height:calc(100dvh - 16px);width:min(600px,calc(100vw - 24px));border-radius:22px;}
  .account-content {padding:14px 18px;}
  .account-header {margin-bottom:12px;}
  #account-dialog h1 {font-size:24px;}
  .account-header p {margin-top:4px;font-size:13px;}
  #account-form {gap:10px;}
  #account-form label {font-size:14px;margin-bottom:4px;}
  #account-form input {min-height:44px;padding:8px 12px;}
  #account-submit {min-height:44px;margin:0 0 4px;padding:8px 14px;font-size:17px;}
}
@media (orientation:landscape) and (min-height:601px) {
  #welcome button {min-height:72px;font-size:clamp(20px,2.8vw,30px);}
  #welcome .welcome-benefit,#welcome .welcome-note {font-size:16px;}
}
@media (orientation:portrait) and (max-height:720px) {
  #welcome button {min-height:56px;}
}
/* At zoom/keyboard sizes, keep every action reachable. */
@media (max-height:500px) and (orientation:portrait) {
  #welcome {grid-template-rows:minmax(80px,1fr) 248px;overflow:auto;}
}
@media (max-height:300px) {
  #welcome {grid-template-rows:minmax(80px,1fr) 120px;overflow:auto;}
  #account-form {grid-template-columns:1fr 1fr;}
  #account-error,#account-submit {grid-column:1/-1;}
}
