.town-page{background:#197f94;margin:0;color:#263f39}.town-page *{box-sizing:border-box}.town-shell{width:100%;min-height:100dvh;padding:0;margin:0;max-width:none}.glass{background:rgba(255,253,243,.83);border:1px solid #ffffff9c;box-shadow:0 8px 32px #173e4024;backdrop-filter:blur(22px) saturate(1.4);-webkit-backdrop-filter:blur(22px) saturate(1.4);border-radius:20px}.town-header{position:fixed;left:24px;right:24px;top:18px;z-index:20;margin:0;padding:12px 22px;display:flex;align-items:center;gap:24px;min-height:60px}.town-header .brand{font-size:20px;white-space:nowrap}.town-header nav{display:flex;align-items:center;gap:22px;margin-left:auto;font-size:12px}.town-motto{font-size:12px;color:#5c7369;margin:0}.town-shell #status{position:fixed;z-index:25;top:88px;left:50%;transform:translateX(-50%);font-size:13px;background:#fff9e9;border-radius:12px;padding:6px 14px;max-width:80vw}.town-shell #status:empty{display:none}.town-intro{position:fixed;left:36px;right:36px;top:94px;display:flex;justify-content:space-between;align-items:flex-start;gap:20px;z-index:5;pointer-events:none}.town-intro>*{pointer-events:auto}.island-welcome{padding:14px 20px;max-width:350px}.town-intro .eyebrow{font-size:9px;letter-spacing:.19em;margin:0 0 5px;color:#698174}.town-intro h1{font:500 27px/1.25 Georgia,"Songti SC",serif;margin:0 0 5px}.town-intro p:not(.eyebrow){font-size:11px;max-width:285px;margin:0;line-height:1.65}.town-date{padding:12px 18px;display:flex;flex-direction:column;text-align:right;font-size:10px;text-decoration:none;color:#4d6b5d}.town-date strong{font:500 24px/1.7 Georgia,serif;color:#244436}.island-frame{position:fixed;inset:0;isolation:isolate;z-index:0;overflow:hidden;background:#197f94}.island-scene{position:absolute;inset:0;width:100%;height:100%;isolation:isolate;container-type:inline-size}.terrain{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.town-roads{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}.town-roads path{fill:none;stroke:#ccba86;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 1px #79673c55);opacity:.68}.town-building{position:absolute;display:block;transform:translate(-50%,-70%);z-index:2;text-decoration:none;text-align:center;-webkit-tap-highlight-color:transparent}.town-building img{display:block;width:100%;height:auto;filter:drop-shadow(2px 7px 3px #213f2755);transition:filter .18s,transform .18s}.town-building:hover,.town-building:focus-visible{z-index:8}.town-building:hover img,.town-building:focus-visible img{filter:drop-shadow(0 0 7px #fff1a3) drop-shadow(2px 6px 3px #213f2777);transform:translateY(-4px)}.town-building:focus-visible{outline:3px solid #ffe8a7;border-radius:12px}.building-label{position:absolute;left:50%;top:84%;transform:translateX(-50%);display:block;padding:5px 12px;white-space:nowrap;background:#fffae9f2;border:1px solid #ffffffc4;box-shadow:0 3px 8px #233d3438;border-radius:9px;color:#334c3d;font-size:clamp(10px,.95vw,15px);font-weight:600;letter-spacing:.02em}.building-widget{display:none}.building-postoffice .building-label,.building-greenhouse .building-label{top:91%}.building-arcade .building-label{top:97%}.building-board .building-label{top:90%}.board-text{position:absolute;left:14%;top:37%;width:72%;height:29%;display:flex;align-items:center;justify-content:center;padding:4px 7px;background:#fff6dbea;box-shadow:inset 0 0 0 1px #ad8f56;border-radius:2px;font-size:clamp(9px,.9vw,14px);font-weight:700;line-height:1.5;color:#4a412b;white-space:pre-line;overflow:hidden}.building-popover{position:fixed;z-index:40;width:270px;padding:20px 22px;border-radius:24px;background:#ffffffe3;pointer-events:none;color:#253e36}.building-popover[hidden]{display:none}.building-popover strong{font-size:17px;letter-spacing:.01em}.building-popover p{font-size:12px;line-height:1.7;color:#667c72;margin:8px 0}.building-popover .popover-stat{padding-top:12px;border-top:1px solid #688b6c27;font-size:13px;color:#305a44;font-weight:600}.building-popover>span{font-size:11px;color:#7c8b7b}.daily-board summary{padding:13px 18px;cursor:pointer;font-size:13px;font-weight:600;list-style:none}.daily-board summary span{font-size:10px;font-weight:400;float:right;color:#667c72}.daily-board-content{padding:0 20px 18px;max-height:55vh;overflow:auto}.daily-board h2{font-size:16px;margin:8px 0}.daily-board .eyebrow{font-size:9px;margin:12px 0 0}.daily-board p,.daily-board li{font-size:11px;line-height:1.6;color:#617969}.daily-board a{font-size:12px}.latest-item{display:block;padding:6px 0}.latest-item span{float:right;font-size:10px}.town-directory{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:15;display:flex;justify-content:center;gap:6px;padding:9px 14px;white-space:nowrap;max-width:calc(100vw - 36px);overflow:auto;border-radius:18px;font-size:11px}.town-directory a{padding:6px 8px;text-decoration:none;border-radius:9px}.town-directory a:hover{background:#e6ecd7}.scenic-login{isolation:isolate;position:relative;min-height:100vh;background:#16768b}.login-scene{position:fixed;inset:0;overflow:hidden;z-index:-2;pointer-events:none}.scenic-login:before{content:'';position:fixed;inset:0;background:linear-gradient(90deg,#143d3d66,#173b3c11 60%,#143d3d55);z-index:-1;pointer-events:none}.scenic-login .gate{max-width:1220px;gap:100px}.scenic-login .welcome{color:#fffbe4;text-shadow:0 2px 9px #234b3e90;justify-content:center;padding-bottom:80px}.scenic-login .welcome .eyebrow,.scenic-login .welcome .description,.scenic-login .gate-note,.scenic-login .footnote{color:#fffbe4}.scenic-login .welcome h1{font-family:Georgia,"Songti SC",serif}.scenic-login .welcome .brand{position:absolute;top:45px}.scenic-login .gate-note{border-color:#fffae666;width:max-content}.scenic-login .form-card{box-shadow:0 12px 55px #123d3f55;background:#fffcf3f5;border-color:#e4dabc;padding:35px}.scenic-login .footnote{position:absolute;bottom:25px}.scenic-login .form-card h2{font-family:Georgia,"Songti SC",serif;font-size:26px}@media(min-aspect-ratio:2/1){.town-building{width:calc(var(--building-width,12)*1vh)!important}.building-library,.building-theater{--building-width:20}.building-clock{--building-width:18}.building-arcade{--building-width:8}}@media(max-width:1000px){.town-motto{display:none}.town-header{left:16px;right:16px;padding:10px 16px}.town-header nav{gap:12px}.town-intro{left:24px;right:24px}.island-welcome{padding:10px 14px;max-width:270px}.town-intro h1{font-size:22px}.town-date strong{font-size:19px}.town-directory{gap:0;padding:8px}.town-directory a{padding:6px}.scenic-login .gate{gap:35px;padding:30px}}@media(max-width:650px){.town-header{top:10px;left:10px;right:10px;gap:10px}.town-header nav{font-size:10px;gap:10px}.town-intro{top:86px;left:12px;right:12px;gap:10px}.town-intro .island-welcome{max-width:45%;padding:10px}.town-intro h1{font-size:18px}.town-intro .island-welcome p:not(.eyebrow){display:none}.town-date{padding:10px}.town-date strong{font-size:15px}.town-directory{justify-content:flex-start}.building-label{font-size:9px;padding:3px 5px}.town-building{min-width:62px}.building-arcade{min-width:35px}.scenic-login .welcome{display:none}.scenic-login .gate{min-height:100vh;align-content:center;padding:22px}}@media(prefers-reduced-motion:reduce){.town-building img{transition:none}}
/* Shared island, softened behind the login title and form. */
.scenic-login .login-scene{filter:blur(8px);transform:scale(1.04)}.scenic-login:before{background:linear-gradient(100deg,#123c43a6,#18494c44 60%,#143d3d77)}.scenic-login .welcome h1{font-size:clamp(52px,6vw,92px);font-weight:500;letter-spacing:.08em;margin:12px 0 20px}.login-subtitle{font:400 24px/1.7 "Songti SC",serif;letter-spacing:.12em;margin:0 0 20px}.scenic-login .form-card{backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-radius:26px;background:#fffdf3e8}.scenic-login .gate{min-height:100dvh}.scenic-login .welcome .brand{top:35px}@media(max-width:650px){.scenic-login .welcome{display:flex;padding:0;align-items:center;text-align:center}.scenic-login .welcome .brand,.scenic-login .welcome .eyebrow,.scenic-login .welcome .description,.scenic-login .welcome .gate-note,.scenic-login .welcome .footnote{display:none}.scenic-login .welcome h1{font-size:38px;margin:0 0 8px}.scenic-login .login-subtitle{font-size:14px;margin:0}.scenic-login .gate{gap:24px}.scenic-login .form-card{padding:25px}}



@media(min-aspect-ratio:3/2){.building-library,.building-theater{top:40%!important}}

.board-text{height:33%;padding:2px;line-height:1.2;font-size:clamp(9px,.8vw,12px)}

/* Keep movement feedback above the bottom directory, away from the daily card. */
.town-shell #status{top:auto;bottom:84px;margin:0;max-width:min(520px,calc(100vw - 48px));padding:10px 16px;line-height:1.6;text-align:center;border:1px solid #fff7df;box-shadow:0 6px 22px #173e4024;pointer-events:none}


/* Daily overview belongs to the header; its panel appears only on request. */
.town-header .daily-board{position:relative;inset:auto;transform:none;width:280px;flex:0 0 280px;z-index:auto;overflow:visible;max-height:none;margin-left:auto}
.town-header .daily-board[hidden]{display:none}
.town-header .daily-board summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-radius:12px;border:1px solid #728b692e;background:#fffdf342;white-space:nowrap}
.town-header .daily-board summary::-webkit-details-marker{display:none}
.town-header .daily-board summary:focus-visible{outline:2px solid #50765e;outline-offset:3px}
.town-header .daily-board summary span{float:none}
.town-header .daily-board summary:after{content:'⌄';color:#667c72}
.town-header .daily-board[open] summary:after{content:'⌃'}
.town-header .daily-board-content{position:absolute;top:calc(100% + 18px);right:0;width:min(420px,calc(100vw - 48px));max-height:calc(100dvh - 210px);padding:8px 22px 20px;background:#fffdf3f5;border:1px solid #ffffffbb;border-radius:18px;box-shadow:0 12px 32px #173e4033;overflow:auto}
.town-header nav{margin-left:0;flex-shrink:0}
@media(max-width:1250px){.town-motto{display:none}}
@media(max-width:1100px){.town-header .daily-board{width:auto;flex:0 0 auto}.town-header .daily-board summary span{display:none}}
@media(max-width:650px){.town-header{flex-wrap:wrap}.town-header nav{margin-left:auto}.town-header .daily-board{order:3;flex-basis:100%;margin-left:0}.town-header .daily-board summary{padding:6px 12px}.town-header .daily-board summary span{display:inline}.town-header .daily-board-content{right:0;top:calc(100% + 12px)}.town-intro{top:142px}}

.scenic-login .gate{min-height:calc(100dvh - 42px)}.scenic-login .footnote{bottom:55px}.scenic-login .icp-footer{position:relative;z-index:2;margin:0;padding:10px 14px 16px;border:0;text-align:center;color:#fffbe4;font-size:11px;text-shadow:0 1px 5px #123d3f}.scenic-login .icp-footer a{color:inherit;text-underline-offset:3px}.town-page .icp-footer{position:fixed;left:50%;bottom:2px;transform:translateX(-50%);z-index:20;margin:0;padding:2px 10px;border:0;border-radius:7px;background:#fffdf3d9;color:#304a3d;font-size:10px;line-height:1.35;white-space:nowrap;text-align:center}.town-page .icp-footer a{color:inherit;text-underline-offset:2px}.icp-footer a:focus-visible{outline:3px solid #b4bf6e;outline-offset:2px}

/* Keep the login form inside a short, non-fullscreen desktop viewport. */
@media (max-height: 700px) and (min-width: 651px) {
  .scenic-login .gate{min-height:calc(100dvh - 38px);padding:10px 28px;gap:clamp(24px,5vw,70px)}
  .scenic-login .welcome{padding-bottom:30px}
  .scenic-login .welcome .brand{top:15px}
  .scenic-login .welcome .eyebrow{margin:22px 0 9px}
  .scenic-login .welcome h1{font-size:clamp(42px,5.5vw,70px);margin:5px 0 9px}
  .scenic-login .login-subtitle{font-size:17px;margin:0 0 7px}
  .scenic-login .welcome .description{margin:0 0 10px}
  .scenic-login .gate-note{margin-top:8px;padding:10px 0}
  .scenic-login .footnote{display:none}
  .scenic-login .form-card{padding:16px 21px}
  .scenic-login .form-card h2{font-size:23px;margin:5px 0 1px}
  .scenic-login .form-card .hint{margin:0 0 6px}
  .scenic-login #status:empty{display:none}
  .scenic-login .portal-options{margin:6px 0;gap:7px}
  .scenic-login .portal-options legend{padding-bottom:3px}
  .scenic-login .portal-options label{padding:7px 8px}
  .scenic-login .portal-options small{margin-top:1px}
  .scenic-login #login-form>label,.scenic-login #activation-form>label{margin:8px 0 3px}
  .scenic-login input:not([type=radio]):not([type=checkbox]){padding:7px 9px}
  .scenic-login .check{margin:8px 0}
  .scenic-login .primary{margin-top:10px;padding:8px 12px}
  .scenic-login .privacy-note{margin:10px 0 0;padding-top:8px}
  .scenic-login .icp-footer{padding:7px 14px 10px}
}
@media (max-height: 570px) and (min-width: 651px) {
  .scenic-login .gate{padding:4px 23px;gap:24px}
  .scenic-login .form-card{padding:11px 16px}
  .scenic-login .form-card h2{font-size:21px}
  .scenic-login .portal-options small{display:none}
  .scenic-login .portal-options label{padding:5px 7px}
  .scenic-login .privacy-note{font-size:9px;line-height:1.4}
  .scenic-login .welcome .eyebrow{margin:12px 0 6px}
  .scenic-login .welcome h1{font-size:43px}
}
