@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700;800&display=swap";:root{color:#27243b;font-synthesis:none;text-rendering:optimizelegibility;--ink:#27243b;--muted:#9996a6;--quiet:#b4b1bd;--line:#e7e4ed;--paper:#fbfafc;--violet:#6956bb;--violet-soft:#eeeaff;--teal:#338e91;--teal-soft:#e5f5f3;--red:#c66070;background:#f5f4f8;font-family:Noto Sans SC,-apple-system,BlinkMacSystemFont,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;min-width:0;max-width:100%;min-height:100%;margin:0;overflow-x:clip}body{background:#f5f4f8}#root{isolation:isolate}button,input{font:inherit}input{-webkit-appearance:none;appearance:none;min-width:0;font-size:16px}input::placeholder{color:var(--muted)}button{-webkit-tap-highlight-color:transparent;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.52}button:focus-visible{outline-offset:3px;outline:2px solid #6956bb73}input:focus-visible{outline-offset:3px;outline:2px solid #6956bb73}.app-shell{isolation:isolate;width:100%;max-width:100%;min-height:100svh;position:relative;overflow:clip}.ambient{z-index:-1;pointer-events:none;opacity:.5;border-radius:50%;position:absolute}.ambient-one{background:#ded9fa;width:420px;height:420px;top:-260px;right:-170px}.ambient-two{background:#d8f2ee;width:340px;height:340px;bottom:-230px;left:-190px}.page{width:100%;max-width:600px;height:100svh;min-height:0;padding:max(20px, env(safe-area-inset-top)) clamp(16px, 6vw, 28px) max(20px, env(safe-area-inset-bottom));margin:0 auto;overflow:hidden}.topbar{justify-content:space-between;align-items:center;gap:14px;height:40px;display:flex}.topbar-title{color:#777386;letter-spacing:.04em;font-size:13px;font-weight:600}.topbar-spacer{width:72px}.brand-mark{align-items:end;gap:4px;width:34px;height:28px;padding:0 6px;display:flex}.brand-mark span{background:var(--violet);border-radius:8px;width:5px;transform:rotate(28deg)}.brand-mark span:first-child{opacity:.45;height:13px}.brand-mark span:nth-child(2){height:24px}.brand-mark span:nth-child(3){background:var(--teal);opacity:.75;height:14px}.icon-button{color:#797588;background:#ffffff94;border:0;border-radius:50%;place-items:center;width:36px;height:36px;padding:0;display:grid}.icon-button:hover{color:var(--ink);background:#fff}.lobby-actions{align-items:center;gap:12px;display:flex}.connection-state{color:var(--quiet);align-items:center;gap:4px;font:11px DM Sans,sans-serif;display:inline-flex}.connection-state.online{color:#5c9b80}.text-button{color:var(--violet);background:0 0;border:0;align-items:center;gap:5px;padding:8px 0;font-size:12px;font-weight:700;display:inline-flex}.room-code-mini{color:var(--quiet);letter-spacing:.16em;font:600 11px DM Sans,sans-serif}.lobby-page{grid-template-rows:auto auto auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);display:grid}.page>*,.modal-card>*,.topbar>*,.identity-bar>*,.lobby-cta-row>*,.mode-note>*{min-width:0}.identity-bar>span,.room-intro h1,.room-intro p,.mode-note{overflow-wrap:anywhere}.identity-bar>button,.icon-button,.room-card-icon,.room-card-meta,.room-chevron{flex-shrink:0}.name-form{min-width:0}.room-card-copy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mode-options>button,.category-options>button,.modal-time-options>button{overflow-wrap:anywhere;min-width:0}.category-options svg,.lobby-cta-row svg{flex-shrink:0}.lobby-cta-row{gap:8px;display:flex}.lobby-cta-row .primary-button,.lobby-cta-row .secondary-button{flex:1;min-height:44px;padding:0 12px}.lobby-hero{padding:8px 3px 12px}.hero-kicker{color:var(--violet);letter-spacing:.1em;align-items:center;gap:7px;margin-bottom:9px;font-size:11px;font-weight:700;display:flex}.lobby-hero h1{color:var(--ink);letter-spacing:.04em;margin:0;font-family:Songti SC,STSong,serif;font-size:max(44px,min(10vw,64px));font-weight:600;line-height:1.16}.lobby-hero h1 em,.result-heading h1 em{color:var(--violet);font-style:normal}.lobby-hero p{color:#777386;margin:13px 0 16px;font-size:13px;line-height:1.5}.identity-bar{min-height:36px;color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin:0 3px;font-size:12px;display:flex}.identity-bar strong{color:var(--ink)}.identity-bar>button,.name-form button{min-height:36px;color:var(--violet);background:var(--violet-soft);border:0;border-radius:9px;padding:0 10px;font-size:12px;font-weight:600}.name-form{flex:1;align-items:center;gap:8px;display:flex}.name-form input{width:0;height:40px;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:9px;flex:1;padding:0 12px;font-size:16px}.primary-button,.secondary-button{border:0;border-radius:11px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:0 18px;font-size:13px;font-weight:700;transition:background .15s;display:inline-flex}.primary-button{color:#fff;background:var(--violet);box-shadow:0 8px 18px #6956bb24}.primary-button:hover{background:#5745a5}.secondary-button{color:var(--violet);background:var(--violet-soft)}.hero-button{min-width:178px}.full-button{width:100%}.rooms-section{border-top:1px solid var(--line);padding-top:16px}.lobby-page .rooms-section{flex-direction:column;flex:1;min-height:0;display:flex}.lobby-page .room-list-scroll{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;min-height:0;padding:0 3px 4px 0;overflow-y:auto}.lobby-page .room-list-scroll::-webkit-scrollbar{width:4px}.lobby-page .room-list-scroll::-webkit-scrollbar-thumb{background:#d7d2e5;border-radius:4px}.section-heading{justify-content:space-between;align-items:end;gap:12px;margin-bottom:15px;display:flex}.section-label{color:var(--violet);letter-spacing:.11em;font-size:10px;font-weight:700}.section-heading h2{color:var(--ink);letter-spacing:-.05em;margin:6px 0 0;font-size:22px;font-weight:700}.room-count{color:var(--quiet);font-size:11px}.search-field{color:#aaa7b3;border:1px solid var(--line);background:#ffffff94;border-radius:10px;align-items:center;gap:8px;height:43px;margin-bottom:10px;padding:0 12px;display:flex}.search-field input{min-width:0;color:var(--ink);background:0 0;border:0;outline:0;flex:1;font-size:16px}.search-field input::placeholder{color:#aaa7b3}kbd{color:#aaa7b3;background:#eeedf2;border-radius:5px;place-items:center;width:20px;height:20px;font:11px DM Sans,sans-serif;display:grid}.room-list{gap:7px;display:grid}.room-card{width:100%;color:var(--ink);text-align:left;background:#ffffff94;border:1px solid #0000;border-radius:12px;align-items:center;gap:11px;padding:11px 10px;display:flex}.room-card:hover:not(:disabled){background:#fff;border-color:#ddd8f5}.room-card-icon{width:35px;height:35px;color:var(--violet);background:var(--violet-soft);border-radius:9px;flex:none;place-items:center;display:grid}.room-card-copy{flex:1;gap:3px;min-width:0;display:grid}.room-card-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.room-card-copy small{color:var(--quiet);font-size:10px}.room-card-meta{color:var(--quiet);align-items:center;gap:5px;font-size:10px;display:flex}.status-dot{background:#68b191;border-radius:50%;width:6px;height:6px}.status-dot.busy{background:#b4b1bd}.room-chevron{color:#b6b2c0}.empty-state{color:#8e8b9c;justify-items:center;gap:6px;padding:38px 10px;font-size:13px;display:grid}.empty-state small{color:var(--quiet);font-size:11px}.empty-state button{color:var(--violet);background:0 0;border:0;margin-top:6px;padding:7px 0;font-size:12px;font-weight:700}.room-page{flex-direction:column;display:flex}.room-intro{padding:12px 3px 14px}.room-intro h1{color:var(--ink);letter-spacing:0;margin:6px 0;font-family:Songti SC,STSong,serif;font-size:28px;font-weight:600;line-height:1.3}.room-intro p{color:var(--muted);margin:0;font-size:13px}.room-panel{text-align:center;background:#ffffffb3;border:1px solid #ebe8f0;border-radius:17px;padding:20px 18px 18px}.room-panel-top{justify-content:space-between;align-items:center;display:flex}.room-badge,.copy-button{color:var(--muted);align-items:center;gap:6px;font-size:10px;display:inline-flex}.pulse-dot{background:#68b191;border-radius:50%;width:6px;height:6px}.copy-button{color:var(--violet);background:var(--violet-soft);border:0;border-radius:7px;padding:6px 8px;font-weight:700}.room-code-large{color:var(--ink);letter-spacing:.17em;justify-content:center;gap:7px;margin:23px 0 18px;font:700 29px DM Sans,sans-serif;display:flex}.room-code-large span:nth-child(2),.room-code-large span:nth-child(5){color:var(--violet)}.room-players{justify-content:center;align-items:center;gap:11px;display:flex}.player-with-name{justify-items:center;gap:5px;min-width:52px;display:grid}.player-with-name small{max-width:74px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.player{color:#fff;border-radius:50%;place-items:center;width:36px;height:36px;font-size:12px;font-weight:700;display:grid}.avatar-purple{background:var(--violet)}.avatar-mint{color:var(--teal);background:var(--teal-soft);border:1px dashed #93c5c3}.connection-line{gap:4px;display:flex}.connection-line span{background:#d7d3df;border-radius:50%;width:4px;height:4px}.waiting-copy{color:#767386;margin:14px 0 0;font-size:12px;line-height:1.6}.waiting-copy small{color:var(--quiet);font-size:10px}.settings-panel{background:#ffffff80;border:1px solid #ebe8f0;border-radius:14px;margin-top:10px;padding:15px}.setting-title{color:var(--violet);align-items:center;gap:9px;display:flex}.setting-title>div{gap:2px;display:grid}.setting-title strong{color:var(--ink);font-size:12px}.setting-title small{color:var(--quiet);font-size:10px}.mode-note{color:var(--violet);background:var(--violet-soft);border-radius:8px;justify-content:space-between;align-items:baseline;gap:10px;margin-top:12px;padding:9px 10px;font-size:11px;font-weight:700;display:flex}.mode-note small{color:#938cb9;font-size:9px;font-weight:500}.time-options{grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px;display:grid}.time-options button,.modal-time-options button{color:#9491a0;border:1px solid var(--line);background:#ffffffb3;border-radius:8px;min-height:35px;font-size:11px}.time-options button.selected,.modal-time-options button.selected{color:var(--violet);background:var(--violet-soft);border-color:#c7bff0;font-weight:700}.time-options small{margin-left:2px;font-size:9px}.bottom-action{text-align:center;margin-top:0;padding-top:16px}.room-page>*{flex-shrink:0}.room-settings-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.settings-edit{min-height:36px;padding-inline-start:12px;padding-inline-end:12px;font-size:12px}.room-settings-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0 0;display:grid}.room-settings-summary>div{min-width:0}.room-settings-summary dt{color:var(--muted);font-size:11px}.room-settings-summary dd{color:var(--ink);overflow-wrap:anywhere;margin:4px 0 0;font-size:14px;font-weight:600}.micro-copy{color:var(--quiet);justify-content:center;align-items:center;gap:5px;margin-top:9px;font-size:10px;display:flex}.game-page{flex-direction:column;display:flex}.timer{color:var(--violet);align-items:center;gap:5px;font:600 12px DM Sans,sans-serif;display:inline-flex}.timer.urgent{color:var(--red)}.timer-track{background:#e5e2eb;border-radius:2px;height:2px;margin-top:11px;overflow:hidden}.timer-track span{border-radius:inherit;background:var(--violet);height:100%;transition:width .25s linear;display:block}.game-content{flex-direction:column;flex:1;justify-content:center;padding:5vh 0 7vh;display:flex}.game-note{color:var(--muted);text-align:center;font-size:11px}.prompt-pair{grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr);align-items:center;gap:7px;margin:20px 0 27px;display:grid}.prompt-card{border-radius:15px;flex-direction:column;justify-content:center;align-items:center;gap:7px;min-height:103px;display:flex}.prompt-card span{color:currentColor;opacity:.55;font-size:9px}.prompt-card strong{overflow-wrap:anywhere;color:currentColor;letter-spacing:-.06em;text-align:center;max-width:100%;font-size:max(18px,min(5vw,25px));font-weight:700}.prompt-card.purple{color:var(--violet);background:var(--violet-soft)}.prompt-card.mint{color:var(--teal);background:var(--teal-soft)}.prompt-symbol{color:#b7b2c0;text-align:center;font-size:16px}.game-question{color:var(--ink);letter-spacing:-.04em;text-align:center;margin:0 0 15px;font-size:16px;font-weight:600}.answer-form{background:#ffffffbf;border:1px solid #e6e2eb;border-radius:13px;padding:13px 13px 11px}.answer-form>input{width:100%;min-height:40px;color:var(--ink);text-align:center;background:0 0;border:0;outline:0;padding:0 2px;font-size:19px;font-weight:600}.answer-form>input::placeholder{color:#c0bdc8;font-weight:500}.input-footer{border-top:1px solid #efedf2;justify-content:space-between;align-items:center;margin-top:10px;padding-top:10px;display:flex}.input-footer>span{color:var(--quiet);font:10px DM Sans,sans-serif}.submit-button{min-height:36px;box-shadow:none;border-radius:8px;padding:0 12px;font-size:11px}.privacy-note{color:var(--quiet);justify-content:center;align-items:center;gap:6px;margin-top:13px;font-size:10px;display:flex}.lock-shape{background:#b4b0bd;border-radius:2px;width:9px;height:7px;display:inline-block;position:relative}.lock-shape:before{content:"";border:1px solid #b4b0bd;border-bottom:0;border-radius:5px 5px 0 0;width:5px;height:6px;position:absolute;top:-5px;left:2px}.game-bottom{color:var(--quiet);border-top:1px solid var(--line);justify-content:space-between;padding-top:12px;font-size:10px;display:flex}.opening-mark{width:126px;height:126px;color:var(--violet);background:var(--violet-soft);border:1px dashed #c5bde9;border-radius:50%;place-items:center;margin:25px auto 29px;display:grid}.opening-mark strong{font:600 51px DM Sans,sans-serif}.opening-mark span{color:var(--muted);margin-top:174px;font-size:10px;position:absolute}.result-page{flex-direction:column;display:flex}.result-page>.topbar,.result-heading,.result-actions,.result-footer{flex-shrink:0}.result-heading{text-align:left;padding:8px 0 12px}.result-heading h1{color:var(--ink);letter-spacing:0;margin:0 0 6px;font-size:max(19px,min(5.2vw,24px));font-weight:700;line-height:1.4}.result-heading p{color:var(--muted);margin:0;font-size:11px}.result-heading i{color:#d0cbd8;padding:0 4px;font-style:normal}.trajectory{border-top:1px solid var(--line);flex-direction:column;flex:1;min-height:0;padding-top:14px;display:flex}.trajectory-label{flex-shrink:0}.trajectory-list{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;min-height:0;padding-right:4px;overflow-x:hidden;overflow-y:auto}.trajectory-list::-webkit-scrollbar{width:4px}.trajectory-list::-webkit-scrollbar-thumb{background:#d7d2e5;border-radius:4px}.trajectory-label{color:var(--quiet);justify-content:space-between;margin-bottom:10px;font-size:10px;display:flex}.trajectory-label span:first-child{color:#747083;font-weight:700}.trajectory-row{margin-bottom:7px}.round-label{color:var(--quiet);margin:0 2px 3px;font-size:9px;display:block}.initial-row .round-label{color:var(--violet)}.word-pair{grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr);align-items:center;gap:7px;display:grid}.result-word{overflow-wrap:anywhere;text-align:center;border-radius:9px;place-items:center;min-height:39px;padding:4px 7px;font-size:max(12px,min(3.7vw,15px));font-weight:600;line-height:1.25;display:grid}.result-word.left{color:var(--violet);background:var(--violet-soft)}.result-word.right{color:var(--teal);background:var(--teal-soft)}.pair-mark{color:#b9b5c1;text-align:center;font:500 14px DM Sans,sans-serif}.match-row .result-word{color:#fff;background:linear-gradient(135deg,#7562c8,#4b9c9e)}.match-row .pair-mark{color:var(--violet);font-weight:700}.initial-row .result-word{border:1px solid #ded8f7}.result-actions{gap:7px;margin-top:13px;display:grid}.result-actions .primary-button,.result-actions .secondary-button{min-height:43px}.result-footer{display:none}.modal-backdrop{z-index:10;left:0;right:0;top:var(--visible-top,0px);height:var(--visible-height,100dvh);background:#27243b52;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);place-items:center;min-width:0;padding:16px;display:grid;position:fixed}.modal-card{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border:1px solid var(--line);background:var(--paper);border-radius:20px;width:100%;min-width:0;max-width:460px;max-height:100%;padding:max(16px,min(5vw,24px));overflow-x:hidden;overflow-y:auto;box-shadow:0 18px 45px #2d275329}.modal-heading h2,.form-hint,.field-label,.choice-field legend{overflow-wrap:anywhere}.modal-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.modal-heading h2{color:var(--ink);letter-spacing:0;margin:0;font-size:22px;font-weight:700;line-height:1.4}.field-label,.choice-field legend{color:#787487;font-size:13px;font-weight:600}.field-label{gap:8px;margin-bottom:16px;display:grid}.text-input,.field-label>input,.code-input{width:100%;height:46px;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:11px;padding:0 13px;font-size:16px}.text-input:focus,.field-label>input:focus,.code-input:focus,.name-form input:focus{outline-offset:1px;border-color:var(--violet);outline:2px solid #c7bff0}.name-setup-card>.text-input{margin-bottom:20px}.name-setup-card>.field-label{margin-bottom:8px}.form-hint{color:var(--muted);margin:8px 0 16px;font-size:12px;line-height:1.6}.choice-field{border:0;min-width:0;margin:0 0 16px;padding:0}.choice-field legend{margin-bottom:8px;padding:0}.choice-field .form-hint{margin-bottom:0}.mode-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.mode-options button{color:var(--muted);text-align:left;border:1px solid var(--line);background:#fff;border-radius:11px;gap:5px;padding:12px;display:grid}.mode-options button strong{color:var(--ink);font-size:13px}.mode-options button small{font-size:11px;line-height:1.5}.mode-options button.selected,.category-options button.selected{border-color:var(--violet);background:var(--violet-soft)}.mode-options button.selected strong{color:var(--violet)}.category-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.category-options button{color:#787487;border:1px solid var(--line);background:#fff;border-radius:11px;justify-content:center;align-items:center;gap:5px;min-height:44px;padding:8px;font-size:13px;font-weight:600;display:flex}.category-options button.selected{color:var(--violet)}.modal-time-options{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.modal-time-options button{border-radius:11px;min-height:44px;font-size:13px}.code-input{letter-spacing:.16em;text-align:center;text-transform:uppercase;margin-bottom:15px;font:700 21px DM Sans,sans-serif}.toast{z-index:20;top:max(18px, env(safe-area-inset-top));color:#fff;white-space:normal;overflow-wrap:anywhere;background:#27243bf0;border-radius:14px;width:max-content;max-width:calc(100% - 32px);padding:9px 14px;font-size:12px;line-height:1.5;position:fixed;left:50%;transform:translate(-50%)}.fatal-error{min-height:100svh;color:var(--ink);text-align:center;align-content:center;place-items:center;gap:11px;padding:28px;display:grid}.fatal-error-mark{color:#fff;background:var(--red);border-radius:50%;place-items:center;width:32px;height:32px;font-weight:800;display:grid}.fatal-error h1{margin:0;font-size:21px}.fatal-error p{max-width:320px;color:var(--muted);word-break:break-word;margin:0 0 7px;font-size:12px;line-height:1.6}@media (max-width:699px){html,body,#root,.app-shell{width:100%;height:100%;min-height:0;overflow:clip}body{position:fixed;top:0;bottom:0;left:0;right:0}}@media (max-width:359px){.category-options{grid-template-columns:repeat(2,minmax(0,1fr))}.modal-time-options{gap:5px}.modal-time-options button{padding-inline-start:4px;padding-inline-end:4px}}@media (max-height:700px) and (max-width:699px){.page{padding-top:max(12px, env(safe-area-inset-top));padding-bottom:max(12px, env(safe-area-inset-bottom))}.lobby-page{grid-template-rows:auto auto auto minmax(0,1fr)}.lobby-hero{padding-top:4px;padding-bottom:8px}.lobby-hero h1{font-size:46px}.lobby-hero p{margin:9px 0 12px;line-height:1.45}.room-list-scroll{max-height:none}.room-intro{padding-top:8px;padding-bottom:10px}.room-panel{padding-top:14px;padding-bottom:13px}.room-code-large{margin:15px 0 12px;font-size:25px}.waiting-copy{margin-top:9px;line-height:1.45}.settings-panel{padding:11px 12px}.mode-note{margin-top:8px;padding:7px 9px}.time-options{margin-top:8px}.bottom-action{padding-top:11px}.game-content{padding-top:2vh;padding-bottom:3vh}.prompt-pair{margin-top:12px;margin-bottom:16px}.prompt-card{min-height:76px}.opening-mark{width:105px;height:105px;margin:14px auto 23px}.opening-mark strong{font-size:44px}.opening-mark span{margin-top:148px}.result-heading{padding-top:4px;padding-bottom:10px}.trajectory{padding-top:9px}.trajectory-label{margin-bottom:6px}.trajectory-row{margin-bottom:3px}.round-label{margin-bottom:1px;font-size:8px}.result-word{border-radius:7px;min-height:29px;padding:2px 5px;font-size:11px}.result-actions{margin-top:8px}.result-actions .primary-button,.result-actions .secondary-button{min-height:35px}.result-footer{display:none}}@media (min-width:700px){body{padding:24px 0}.app-shell{background:#fbfafc85;border:1px solid #e8e5ed;border-radius:24px;width:600px;min-height:calc(100svh - 48px);margin:0 auto}.page{min-height:calc(100svh - 48px)}.modal-backdrop{place-items:center}.modal-card{border-radius:19px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
