/* Functional app adapters for the exact approved sample, styled by approved-shell.css.
   These keep real account, engine, keyboard and session flows working in that shell. */
:root{color-scheme:light;--lacquer:var(--ink);--lacquer-dark:var(--ink);--lacquer-deep:var(--paper);--brass:var(--turm);--brass-light:var(--ink2);--ivory:var(--paper2);--muted:var(--ink2)}
[hidden]{display:none!important}button,a,input,select{touch-action:manipulation}button:disabled{cursor:default}a{color:inherit}button,a,input,select,summary{ -webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--pink);outline-offset:4px}button.primary{background:var(--jungle);color:#fff}button:disabled{opacity:.5}
#play-app{padding:0}#play-app>main{min-width:0;flex:1}.content{padding:16px 16px 28px}.content h1{font:400 1.35rem/1.1 var(--display);margin:4px 2px 10px;letter-spacing:.2px}.content h2{margin-top:22px}.help{font-size:.82rem;line-height:1.35;color:var(--ink2);margin:8px 2px}.draft-note{font-size:.78rem}.vh{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* Header and board keep the reference's exact geometry. */
.top .logo{overflow:hidden}.top .logo svg{display:block}.stars-chip{margin-left:auto;display:inline-flex;align-items:center;gap:5px;height:36px;border:2.5px solid var(--ink);border-radius:99px;box-shadow:2px 3px var(--ink);background:var(--paper2);color:var(--ink);font:400 1rem var(--display);padding:0 8px;text-decoration:none}.pill{text-decoration:none;position:relative}.pill::after{content:'';position:absolute;inset:-4px 0}.pill .plus{font-style:normal}.friendsbtn>svg{width:26px;height:26px;flex:none}.chips .chip{position:relative}.chips .chip::after{content:'';position:absolute;inset:-4px 0}.grid .piece{padding:0;min-width:0;min-height:0}.grid .piece.dim{position:relative;inset:auto;z-index:auto;background:var(--c);pointer-events:auto;opacity:.28;filter:grayscale(1);transform:scale(.9)}.cell.is-filtered .nm{opacity:.28}.piece-name{margin:0}.cell .art{display:block}.board{width:auto;height:auto}.board>.lattice{opacity:1}.daily-row{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px}.studs{display:flex;align-items:center;gap:7px}.stud{display:block;width:13px;height:13px;border:2px solid var(--ink);border-radius:50%;background:var(--paper2)}.stud.on{background:var(--turm)}.claim{min-height:44px;padding:6px 12px;border:2.5px solid var(--ink);border-radius:99px;background:var(--paper2);font-weight:700}
/* Navigation uses real hash links with exactly the approved five icon tabs. */
nav.tabs{position:sticky;left:auto;transform:none;width:100%;flex:none;backdrop-filter:none}nav.tabs a{flex:initial;text-decoration:none;line-height:normal;min-height:44px;justify-content:initial;position:relative}nav.tabs a[aria-current=page]{color:var(--ink)}nav.tabs a[aria-current=page] svg{background:var(--turm);border:2px solid var(--ink);padding:1px}nav.tabs a::after{display:none}
.status{margin:0;padding:0 16px;color:var(--ink2);font-size:.9rem;overflow-wrap:anywhere}.status:empty{display:none}.status:not(:empty){padding-block:10px}.friends-page h1{margin-top:4px}.friends-page>.note{margin-bottom:12px}.friends-list{grid-template-columns:repeat(3,minmax(0,1fr))}.friends-list .art-wrap{display:block;width:70%;height:70%}.friends-list .art-wrap .art{width:100%;height:100%}.friends-list .item{min-width:0}.friends-join #join-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.friends-join #code-help{grid-column:1/-1;margin-top:0}.friends-join input{height:48px;font-weight:700;letter-spacing:2px}
/* Real game selection replaces the sample's simulated-win buttons. */
.sheet-wrap{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:rgba(27,34,80,.45)}.sheet-wrap .sheet{position:relative;left:auto;bottom:auto;transform:none;width:min(100%,440px);max-height:calc(100dvh - 20px);overflow:auto;transition:none;padding:25px 18px calc(22px + env(safe-area-inset-bottom));animation:viewIn .35s var(--ease-boing)}.sheet .grab{position:absolute;top:0;left:calc(50% - 28px);width:56px;height:44px;background:transparent;margin:0;border:0;border-radius:12px}.sheet .grab:before{content:'';position:absolute;top:10px;left:6px;display:block;width:44px;height:5px;border-radius:3px;background:#cfc6ad}.sheethead h2{font:400 1.7rem/1.05 var(--display);margin:0}.sheet p{margin:6px 0 0}.sheet .actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:16px}.sheet .actions button{position:relative;min-height:46px;flex:1 1 42%;padding:8px 12px;border:2.5px solid var(--ink);border-radius:99px;box-shadow:2px 3px 0 var(--ink);background:var(--paper2);font:400 1.02rem/1.2 var(--display);overflow-wrap:anywhere}.sheet .actions button.primary{flex-basis:100%;background:var(--mad);color:#fff}.goti-choice{margin-top:16px}.goti-choice>button{width:100%;min-height:46px;padding:8px 14px;border:2.5px solid var(--ink);border-radius:99px;box-shadow:2px 3px 0 var(--ink);font:400 1.02rem var(--display)}
/* Account forms remain complete and use the approved paper, outlines and type. */
.auth{max-width:440px;margin:auto;width:100%}.auth .brand{display:flex;align-items:center;gap:12px;margin-bottom:24px}.auth .brand h1{margin:0;font:400 1.6rem/1.05 var(--display)}.auth .brand .logo{width:52px;height:52px;border-color:var(--ink)}.auth h2{margin:0 0 12px}.auth form,#profile-form{display:grid;gap:16px}.languages{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 20px}.languages button,.auth button,.me-actions button,#edit-profile,.restore,.look-act button,.confirm button{min-height:44px;padding:7px 14px;border:2.5px solid var(--ink);border-radius:99px;background:var(--paper2);box-shadow:2px 3px 0 var(--ink);font-weight:700}.languages button[aria-pressed=true]{background:var(--ink);color:#fff}.auth button.primary{background:var(--jungle);color:#fff}.auth #google{display:block;width:100%;margin-top:14px}form{margin:0}label.field{display:grid;gap:5px;font-weight:700}input:not([type=checkbox]):not([type=range]),select{width:100%;min-width:0;min-height:48px;border:2.5px solid var(--ink);border-radius:14px;background:var(--paper2);color:var(--ink);padding:8px 12px}input[type=checkbox]{width:22px;height:22px;margin:0;accent-color:var(--jungle);flex-shrink:0}.check{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:8px 0;cursor:pointer}.check span{flex:1}.field-error{color:var(--mad);font-weight:700}.field-error:empty{display:none}[aria-invalid=true]{border-color:var(--mad)!important}.consents{border:0;padding:0;margin:16px 0 0}.consents legend{font-weight:700}.actions{display:flex;flex-wrap:wrap;gap:10px}.actions>*{flex:1;min-width:100px}.panel{border:3px solid var(--ink);background:var(--paper2);border-radius:22px;padding:16px;margin:16px 0;box-shadow:4px 5px var(--ink)}.panel p:last-child{margin-bottom:0}.account-details{border:3px solid var(--ink);border-radius:22px;margin-top:22px;padding:12px 14px;background:var(--paper2);box-shadow:4px 5px var(--ink)}summary{min-height:44px;align-content:center;cursor:pointer;font-weight:700}.account-details[open]>summary{margin-bottom:16px}.summary{overflow-wrap:anywhere}.summary dd{margin:0 0 14px}.summary dt{color:var(--ink2);font-weight:700}.me-actions{display:grid;gap:10px;margin:20px 0}.me-actions>a{justify-content:center;display:flex;align-items:center;min-height:44px}.account-links{display:flex;flex-wrap:wrap;gap:4px 18px}.account-links a{display:inline-flex;align-items:center;min-height:44px;font-size:.875rem}.about{margin-top:24px}.about p{margin:4px 0}.about a{display:inline-flex;align-items:center;min-height:44px}.language-row .seg button{position:relative}.language-row .seg button:after{content:'';position:absolute;inset:-5px 0}
/* The existing game frame keeps its loading, back and failure controls. */
.game-frame{position:fixed;inset:0;z-index:70;display:flex;flex-direction:column;background:var(--paper);color:var(--ink);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.frame-bar{display:flex;align-items:center;gap:12px;padding:6px 10px;background:var(--tiger);border-bottom:3px solid var(--ink);flex-shrink:0}.frame-bar strong{min-width:0;overflow-wrap:anywhere;flex:1;font-family:var(--display);font-weight:400}.frame-back{font-size:14px;min-height:44px;padding:4px 12px;border:2.5px solid var(--ink);border-radius:99px;background:var(--paper2)}.game-frame iframe{border:0;width:100%;flex:1;background:var(--paper2);visibility:hidden}.game-frame[data-ready=true] iframe{visibility:visible}.frame-status{position:absolute;top:50%;left:20px;right:20px;text-align:center}.frame-status:before{content:'';display:block;margin:0 auto 16px;width:28px;height:28px;border:3px solid var(--ink);border-right-color:transparent;border-radius:50%;animation:spin 1s linear infinite}.game-frame[data-failed=true] .frame-status:before{display:none}.frame-status:empty{display:none}@keyframes spin{to{transform:rotate(360deg)}}
/* Earlier star collection remains available from account links. */
.balance{font:64px var(--display);color:var(--mad);margin:20px 0}.stars-page .studs{margin:20px 0}.stars-links{display:grid;gap:10px;margin:22px 0 8px}.stars-links a{min-height:48px;display:flex;align-items:center;justify-content:center;border:2.5px solid var(--ink);border-radius:99px;background:var(--paper2)}.crumb{margin:0 0 6px}.crumb a{display:inline-flex;align-items:center;min-height:44px}.collection-stars{font-weight:700}.look-group{margin-top:26px}.looks{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.look{display:flex;flex-direction:column;gap:8px;min-width:0;border:2.5px solid var(--ink);border-radius:18px;padding:10px;background:var(--paper2);box-shadow:3px 4px var(--ink)}.look.using{background:#FFF4D0}.look:has(.confirm){grid-column:1/-1}.look-preview{display:grid;place-items:center;height:96px;border-radius:12px;overflow:hidden}.look-card{display:block;width:46px;height:64px;border-radius:7px;box-shadow:0 4px 0 #1b225044}.look-text{display:grid;gap:4px}.look-text strong{font-size:17px;line-height:1.2}.look-text small{color:var(--ink2);font-size:14px;line-height:1.3}.badge{font-size:12px;font-weight:700;padding:1px 9px;border:2px solid var(--ink);border-radius:99px}.look-act{margin-top:auto}.look-act button{width:100%;font-size:15px}.in-use{display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;font-weight:700}.in-use:before{content:'✓'}.confirm{border-top:2px dashed #1b225033;padding-top:10px}.confirm p{margin:0 0 10px}.restore{width:100%;margin-top:12px}.fair{margin-top:24px}.ledger{list-style:none;margin:8px 0 16px;padding:0}.ledger li{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:12px 0;border-bottom:2px dashed #1b225033}.ledger .what,.ledger .pts{font-weight:700}.ledger .pts,.ledger .run{text-align:right;font-variant-numeric:tabular-nums}.ledger time,.ledger .run{color:var(--ink2);font-size:14px}
/* Motion preference also covers functional app adapters. */
.calm *,.calm *:before,.calm *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.noglow .tok .halo,.noglow .tok .shine,.noglow .tok .spk{animation:none!important;opacity:0!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}main h1[tabindex="-1"]:focus,main h2[tabindex="-1"]:focus{outline:none}
/* Bigger text is an explicit saved preference, leaving the approved default intact. */
.big{font-size:18px}.big .chip{font-size:1rem}.big .cell .nm{font-size:1rem}.big nav.tabs a{font-size:.82rem}@media(max-width:359px){.top .word small{font-size:.76rem}.top .word b{font-size:1.3rem}.top .pills{gap:5px}.top .pill{font-size:.9rem;padding-right:3px}.toprow{gap:6px}.top .logo{width:36px;height:36px}.top .pill .plus{width:17px;height:17px;font-size:12px}}

.sheet .btns .btn{height:auto;min-height:46px;flex:none;line-height:normal;white-space:normal;max-width:100%;overflow-wrap:anywhere}.sheet .btns .btn.wide{width:100%}
/* Keep the game viewport scrollable inside the phone's fixed app frame. */
.game-frame iframe{min-height:0}
.frame-retry{position:absolute;top:calc(50% + 80px);align-self:center;z-index:1;min-height:44px;padding:8px 20px;border:2px solid var(--ink);border-radius:99px;background:var(--paper2)}
.frame-retry[hidden]{display:none}

/* Game window bar (approved pictures, 8 Nov 2026): a round ✕, the game name and one short line under it. */
.frame-bar .frame-x{width:44px;min-width:44px;height:44px;padding:0;display:grid;place-items:center;border-radius:50%;font:700 20px/1 system-ui;box-shadow:2px 3px 0 var(--ink)}
.frame-bar strong{display:flex;flex-direction:column;line-height:1.1}
.frame-bar .frame-sub{display:block;font:600 12px/1.2 Mukta,system-ui,sans-serif;opacity:.9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Today's goals card (8 Nov 2026, approved pictures 6a): under Today's trek on the Games tab. */
.eg-goals{margin:10px 0 0;padding:10px 10px 6px;background:var(--paper2,#FBF7EA);border:3px solid var(--ink,#1B2250);border-radius:20px;box-shadow:4px 5px 0 var(--ink,#1B2250)}
.eg-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:0 2px 6px}
.eg-head b{font:400 1.08rem/1.1 var(--display,'Lilita One');color:var(--ink,#1B2250)}
.eg-head span{font:700 .78rem/1.2 Mukta,sans-serif;color:var(--ink2,#454C78);text-align:right}
.eg-goal{width:100%;display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 4px;margin:0;background:none;border:0;border-top:2px dashed rgba(27,34,80,.18);border-radius:0;text-align:left;color:var(--ink,#1B2250);cursor:pointer}
.eg-goal:first-of-type{border-top:0}
.eg-ic{flex:none;width:34px;height:34px;border-radius:11px;display:grid;place-items:center;border:2px solid var(--ink,#1B2250);color:#fff;font:400 1rem var(--display,'Lilita One')}
.eg-tx{flex:1;min-width:0}.eg-tx b{display:block;font:700 .92rem/1.15 Mukta,sans-serif}.eg-tx small{display:block;font-size:.78rem;line-height:1.2;color:var(--ink2,#454C78)}
.eg-st{flex:none;padding:4px 9px;border:2px solid var(--ink,#1B2250);border-radius:99px;background:var(--turm,#F0B323);font:400 .85rem var(--display,'Lilita One');white-space:nowrap}
.eg-goal.done .eg-st{background:var(--jungle,#13906A);color:#fff}
.eg-goal.done .eg-tx{opacity:.75}
.eg-more{width:100%;min-height:44px;margin-top:2px;background:none;border:0;border-top:2px dashed rgba(27,34,80,.18);border-radius:0;font:700 .88rem Mukta,sans-serif;color:var(--pink,#E0245E);cursor:pointer}
