:root{--bg-gradient: radial-gradient(120% 90% at 50% 0%, #ffffff 0%, #f2f2f7 70%);--text: #1d1d1f;--text-dim: #6e6e73;--text-faint: #9a9aa2;--surface: #ffffff;--surface-grad: linear-gradient(180deg, #ffffff, #f6f6fa);--surface-border: rgba(0, 0, 0, .08);--surface-border-strong: rgba(0, 0, 0, .13);--modal-bg: rgba(255, 255, 255, .82);--backdrop: rgba(120, 120, 130, .3);--input-bg: #ffffff;--placeholder-cell: rgba(0, 0, 0, .035);--placeholder-border: rgba(0, 0, 0, .05);--shadow-soft: 0 1px 2px rgba(16, 24, 40, .06), 0 8px 24px rgba(16, 24, 40, .09);--shadow-big: 0 30px 80px rgba(16, 24, 40, .22);--btn-shadow: 0 1px 2px rgba(16, 24, 40, .12), 0 5px 14px rgba(16, 24, 40, .12);--key-light: inset 0 1px 0 rgba(255, 255, 255, .55);--teal-bg: #e4f6f8;--teal-text: #006974;--teal-border: #a5dde4;--green-bg: #e7f6ee;--green-text: #16714a;--green-border: #b4e2c9;--indigo-bg: #eceffb;--indigo-text: #3b4cc0;--indigo-border: #c8cff2;--red-bg: #fdecea;--red-text: #a52a22;--red-border: #f2b8b3;--urgent-bg: #fbdfdc;--accent-green: #1e8a58;--key-bg: linear-gradient(180deg, #ffffff, #f0f0f4);--key-text: #1d1d1f;--key-border: rgba(0, 0, 0, .1);--msgbar-grad: linear-gradient(180deg, #ffffff, #f7f7fa);--msgbar-border: rgba(0, 0, 0, .07);--chip-grad: linear-gradient(180deg, #fbfbfd, #ededf2);--chip-border: #dcdfe6;--overlay-bg: rgba(250, 250, 252, .97);--overlay-text: #111114;--spring: cubic-bezier(.2, .9, .3, 1.2)}body.theme-dark{--bg-gradient: radial-gradient(120% 90% at 50% 0%, #101018 0%, #0a0a10 70%);--text: #ffffff;--text-dim: #9a9aa6;--text-faint: #6d6d78;--surface: #191922;--surface-grad: linear-gradient(180deg, rgba(255, 255, 255, .09), rgba(255, 255, 255, .03));--surface-border: rgba(255, 255, 255, .1);--surface-border-strong: rgba(255, 255, 255, .18);--modal-bg: rgba(22, 22, 32, .82);--backdrop: rgba(0, 0, 0, .55);--input-bg: rgba(0, 0, 0, .35);--placeholder-cell: rgba(255, 255, 255, .025);--placeholder-border: rgba(255, 255, 255, .05);--shadow-soft: 0 1px 2px rgba(0, 0, 0, .45), 0 8px 24px rgba(0, 0, 0, .35);--shadow-big: 0 30px 80px rgba(0, 0, 0, .6);--btn-shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 5px 14px rgba(0, 0, 0, .28);--key-light: inset 0 1px 0 rgba(255, 255, 255, .22);--teal-bg: rgba(0, 150, 160, .16);--teal-text: #8fe0e8;--teal-border: rgba(0, 188, 212, .4);--green-bg: rgba(48, 164, 108, .2);--green-text: #9fe3bd;--green-border: rgba(48, 164, 108, .5);--indigo-bg: rgba(63, 81, 181, .2);--indigo-text: #c5cae9;--indigo-border: rgba(121, 134, 203, .45);--red-bg: rgba(183, 28, 28, .14);--red-text: #ef9a9a;--red-border: rgba(229, 57, 53, .45);--urgent-bg: rgba(229, 57, 53, .26);--accent-green: #6fe0a8;--key-bg: linear-gradient(180deg, #3a4750, #2b353d);--key-text: #ffffff;--key-border: rgba(255, 255, 255, .09);--msgbar-grad: linear-gradient(180deg, #ffffff, #eef0f5);--msgbar-border: rgba(255, 255, 255, .6);--chip-grad: linear-gradient(180deg, #fbfbfd, #eceef3);--chip-border: #dcdfe6;--overlay-bg: rgba(4, 4, 8, .96);--overlay-text: #ffffff}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--bg-gradient);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior:none;touch-action:manipulation;user-select:none;-webkit-user-select:none}.app{height:100%;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.top-row{display:flex;align-items:stretch;gap:0}.top-row .message-bar{flex:1;margin-right:4px}.settings-button{flex:0 0 auto;width:52px;margin:10px 10px 10px 0;background:var(--surface-grad);color:var(--text);border:1px solid var(--surface-border);border-radius:16px;font-size:1.35rem;cursor:pointer;box-shadow:var(--shadow-soft),var(--key-light);transition:transform .15s var(--spring),filter .15s ease}.settings-button:active{transform:scale(.94);filter:brightness(.96)}.settings-button--phrases{background:var(--teal-bg);border-color:var(--teal-border)}.settings-button--listen{background:var(--indigo-bg);border:2px solid var(--indigo-border);font-weight:800}.onboarding{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;overflow-y:auto;text-align:center}.onboarding__dots{display:flex;gap:8px}.onboarding__dot{width:8px;height:8px;border-radius:50%;background:var(--surface-border-strong);transition:background .3s ease,transform .3s var(--spring)}.onboarding__dot--on{background:var(--accent-green);transform:scale(1.25);box-shadow:0 0 12px #30a46c80}.onboarding__title{font-size:2.1rem;font-weight:800;letter-spacing:-.02em}.onboarding__tagline{color:var(--text-dim);font-size:1.05rem;max-width:480px;line-height:1.5}.onboarding__question{font-size:1.35rem;font-weight:700;letter-spacing:-.01em}.onboarding__cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;width:min(680px,100%)}.onboarding__cards--mascots{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}.onboarding__card{display:flex;flex-direction:column;align-items:center;gap:6px;min-height:120px;padding:16px 12px;background:var(--surface-grad);color:var(--text);border:1px solid var(--surface-border);border-radius:20px;font-family:inherit;font-size:1rem;cursor:pointer;box-shadow:var(--shadow-soft),var(--key-light);transition:transform .18s var(--spring),border-color .18s ease,box-shadow .18s ease}.onboarding__card small{color:var(--text-dim);font-size:.85rem;line-height:1.4}.onboarding__card:active{transform:scale(.96)}.onboarding__card--picked,.onboarding__card:active{border-color:var(--accent-green);box-shadow:0 0 0 3px #30a46c38,var(--shadow-soft)}.onboarding__card--mascot{min-height:96px}.onboarding__card-icon{font-size:2.2rem}.onboarding__card-icon--big{font-size:3rem}.onboarding__install{max-width:520px;padding:14px 18px;background:var(--teal-bg);border:1px solid var(--teal-border);border-radius:16px;color:var(--teal-text);font-size:1rem;line-height:1.55}.onboarding__start{min-height:64px;padding:12px 46px;background:linear-gradient(180deg,#3cb877,#27935c);color:#fff;border:none;border-radius:18px;font-family:inherit;font-size:1.25rem;font-weight:800;letter-spacing:.03em;cursor:pointer;box-shadow:0 10px 30px #30a46c59,inset 0 1px #ffffff59;transition:transform .18s var(--spring),filter .18s ease}.onboarding__start:active{transform:scale(.96);filter:brightness(1.1)}.mascot-slot{position:relative;display:flex;align-items:center}.mascot{width:52px;margin:10px 4px 10px 10px;min-height:44px;background:var(--green-bg);border:1px solid var(--green-border);border-radius:16px;font-size:1.7rem;cursor:pointer;box-shadow:var(--shadow-soft),var(--key-light);transition:transform .15s var(--spring)}.mascot:active{transform:scale(.92)}.mascot--bounce{animation:mascot-bounce .6s var(--spring) 2}@keyframes mascot-bounce{0%,to{transform:translateY(0)}40%{transform:translateY(-8px) scale(1.1)}}.mascot__bubble{position:absolute;top:100%;left:0;z-index:30;min-width:150px;padding:9px 15px;background:#fff;color:#111;border:1px solid var(--surface-border);border-radius:4px 16px 16px;font-size:.95rem;font-weight:700;box-shadow:var(--shadow-big)}.app--big .symbol-button{min-height:76px}.app--big .symbol-grid{gap:10px;min-height:700px}.app--big .toolbar-button{min-height:72px;font-size:1.3rem}.app--big .prediction-chip,.app--big .message-chip{min-height:54px;font-size:1.25rem}.message-bar{flex:0 0 auto;display:flex;align-items:center;gap:8px;min-height:72px;margin:10px;padding:8px 14px;background:var(--msgbar-grad);border:1px solid var(--msgbar-border);border-radius:20px;overflow-x:auto;white-space:nowrap;box-shadow:var(--shadow-soft),inset 0 1px #ffffffe6}.message-bar__placeholder{color:#9aa0ab;font-size:1.12rem}.message-chip{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:6px 15px;background:var(--chip-grad);color:#16181d;border:1px solid var(--chip-border);border-radius:13px;font-size:1.3rem;font-weight:650;cursor:pointer;flex:0 0 auto;box-shadow:0 1px 2px #14182824,inset 0 1px #fff;transition:transform .12s var(--spring)}.message-chip:active{transform:scale(.95);background:#e5e7ee}.message-chip__symbol{font-size:1.2rem}.expansion-bar{flex:0 0 auto;display:flex;align-items:center;gap:8px;margin:0 10px 8px;min-height:44px}.expansion-bar__hint{font-size:1.2rem}.expansion-bar__button{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:7px 18px;background:var(--green-bg);color:var(--green-text);border:1px solid var(--green-border);border-radius:15px;font-family:inherit;font-size:1.15rem;font-weight:650;cursor:pointer;text-align:left;box-shadow:var(--shadow-soft),var(--key-light);transition:transform .15s var(--spring),filter .15s ease}.expansion-bar__button:active{transform:scale(.97);filter:brightness(.96)}.expansion-bar__speak{font-size:1.1rem}.prediction-bar{flex:0 0 auto;display:flex;gap:8px;margin:0 10px 8px;overflow-x:auto;white-space:nowrap}.prediction-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:6px 16px;background:var(--surface-grad);color:var(--text);border:1.5px solid var(--surface-border-strong);border-radius:22px;font-family:inherit;font-size:1.05rem;font-weight:650;cursor:pointer;box-shadow:var(--shadow-soft),var(--key-light);transition:transform .15s var(--spring),filter .15s ease}.prediction-chip:active{transform:scale(.94);filter:brightness(.96)}.symbol-button--predicted{box-shadow:0 0 0 2.5px #fffffff2,0 0 16px 4px #1ea05f8c,var(--btn-shadow)!important}.scan-highlight{outline:5px solid #fff!important;outline-offset:-2px;box-shadow:0 0 0 8px #ffc828bf,0 0 22px 6px #ffb400d9!important;position:relative;z-index:5}.phrases-view{display:flex;flex-direction:column;height:100%}.phrases-scroll{flex:1;overflow-y:auto;padding-bottom:8px}.phrase-group{margin-bottom:16px}.phrase-group__title{font-size:1rem;color:var(--text-dim);margin:6px 2px 10px;letter-spacing:.06em;text-transform:uppercase;font-weight:700}.phrase-group__title--urgent{color:#d13c34}.phrase-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.phrase-wrap{position:relative;display:flex}.phrase-button{flex:1;min-height:64px;padding:10px 16px;background:var(--teal-bg);color:var(--teal-text);border:1px solid var(--teal-border);border-radius:16px;font-family:inherit;font-size:1.12rem;font-weight:600;text-align:left;cursor:pointer;box-shadow:var(--shadow-soft),var(--key-light);transition:transform .15s var(--spring),filter .15s ease}.phrase-button:active{transform:scale(.97);filter:brightness(.96)}.phrase-button--urgent{background:var(--urgent-bg);color:var(--red-text);border-color:var(--red-border);font-weight:700}.phrase-button--add{min-height:64px;background:none;color:var(--text-faint);border:2px dashed var(--surface-border-strong);justify-content:center;text-align:center;box-shadow:none}.phrase-voice-badge{font-size:.9em}.phrase-record{flex:0 0 auto;width:52px;min-height:64px;margin-left:6px;background:var(--teal-bg);color:var(--teal-text);border:1px solid var(--teal-border);border-radius:14px;font-size:1.3rem;cursor:pointer;box-shadow:var(--shadow-soft),var(--key-light);transition:transform .15s var(--spring)}.phrase-record:active{transform:scale(.93)}.phrase-record--live{background:linear-gradient(180deg,#d43a35,#a02420);color:#fff;border-color:#ff6f6a;animation:record-pulse 1s ease infinite}@keyframes record-pulse{0%,to{box-shadow:0 0 #ff5252b3}50%{box-shadow:0 0 0 8px #ff525200}}.phrase-remove{position:absolute;top:-8px;right:-8px;width:30px;height:30px;border-radius:50%;background:linear-gradient(180deg,#c62828,#941f1f);color:#fff;border:2px solid var(--surface);font-size:.9rem;font-weight:700;cursor:pointer;box-shadow:0 3px 10px #0000004d}.phrase-remove--voice{right:26px;width:44px;border-radius:15px;background:linear-gradient(180deg,#6d4c41,#4e342e);font-size:.75rem}.phrase-add-form{display:flex;gap:6px}.phrase-add-form input{flex:1;min-height:64px;padding:10px 14px;background:var(--input-bg);color:var(--text);border:1px solid var(--teal-border);border-radius:14px;font-family:inherit;font-size:1.05rem}.phrase-add-form button{width:56px;background:linear-gradient(180deg,#00a3b2,#007d8a);color:#fff;border:none;border-radius:14px;font-size:1.4rem;cursor:pointer;box-shadow:var(--shadow-soft),inset 0 1px #ffffff59}.message-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:32px;background:var(--overlay-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);cursor:pointer}.message-overlay__text{color:var(--overlay-text);font-size:clamp(2.5rem,9vw,6rem);font-weight:800;letter-spacing:-.02em;line-height:1.18;text-align:center}.message-overlay__close-hint{color:var(--text-faint);font-size:1rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:16px;background:var(--backdrop);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2)}.modal{width:min(440px,100%);max-height:85vh;overflow-y:auto;display:flex;flex-direction:column;gap:16px;padding:24px;background:var(--modal-bg);color:var(--text);border:1px solid var(--surface-border-strong);border-radius:24px;-webkit-backdrop-filter:blur(24px) saturate(1.3);backdrop-filter:blur(24px) saturate(1.3);box-shadow:var(--shadow-big),var(--key-light)}.modal__title{font-size:1.3rem;font-weight:800;letter-spacing:-.01em}.settings-row{display:flex;flex-direction:column;gap:8px;font-size:1.02rem;font-weight:600}.settings-row small{display:block;color:var(--text-dim);font-weight:400;line-height:1.4}.settings-row select,.settings-row input[type=text],.settings-row input[type=url]{min-height:44px;padding:8px 14px;background:var(--input-bg);color:var(--text);border:1px solid var(--surface-border-strong);border-radius:12px;font-family:inherit;font-size:1rem}.settings-row input[type=range]{width:100%;min-height:44px;accent-color:var(--accent-green)}.settings-row--toggle{flex-direction:row;align-items:center;justify-content:space-between;gap:14px}.settings-row--toggle input[type=checkbox]{width:28px;height:28px;flex:0 0 auto;accent-color:var(--accent-green)}.settings-row input[type=file]{color:var(--text-dim);font-size:.9rem}.settings-danger{min-height:44px;background:var(--red-bg);color:var(--red-text);border:1px solid var(--red-border);border-radius:12px;font-family:inherit;font-size:.95rem;font-weight:600;cursor:pointer;transition:filter .15s ease}.settings-danger:active{filter:brightness(.95)}.modal__close{min-height:52px;background:linear-gradient(180deg,#3cb877,#27935c);color:#fff;border:none;border-radius:14px;font-family:inherit;font-size:1.1rem;font-weight:800;letter-spacing:.02em;cursor:pointer;box-shadow:0 8px 24px #30a46c4d,inset 0 1px #ffffff59;transition:transform .15s var(--spring),filter .15s ease}.modal__close:active{transform:scale(.97)}.modal__close:disabled{opacity:.4;box-shadow:none}.settings-report{min-height:48px;background:var(--indigo-bg);color:var(--indigo-text);border:1px solid var(--indigo-border);border-radius:12px;font-family:inherit;font-size:1rem;font-weight:700;cursor:pointer;box-shadow:var(--key-light);transition:transform .15s var(--spring),filter .15s ease}.settings-report:active{transform:scale(.98);filter:brightness(.96)}.settings-report:disabled{opacity:.5}.voice-picker{display:flex;gap:8px}.voice-picker__option{flex:1;min-height:48px;background:var(--surface-grad);color:var(--text);border:1px solid var(--surface-border-strong);border-radius:12px;font-family:inherit;font-size:.95rem;font-weight:700;cursor:pointer;transition:transform .15s var(--spring),filter .15s ease,border-color .15s ease}.voice-picker__option:active{transform:scale(.97)}.voice-picker__option--picked{border-color:var(--accent-green);box-shadow:0 0 0 2px #30a46c40;color:var(--accent-green)}.settings-backup{display:flex;gap:10px}.settings-backup .settings-report{flex:1}.settings-report--label{display:flex;align-items:center;justify-content:center;cursor:pointer}.settings-credit{color:var(--text-faint);font-size:.78rem;text-align:center}.photo-preview{width:72px;height:72px;border-radius:14px;object-fit:cover;border:1px solid var(--surface-border-strong);box-shadow:var(--shadow-soft)}.ai-board-hint{color:var(--indigo-text);font-size:.95rem;line-height:1.55}.ai-board-error{color:var(--red-text);font-size:.95rem}.report-date{color:var(--text-dim);margin-top:-8px}.report-stats{display:flex;gap:10px}.report-stat{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:14px 6px;background:var(--surface-grad);border:1px solid var(--surface-border);border-radius:16px;text-align:center;box-shadow:var(--shadow-soft),var(--key-light)}.report-stat strong{font-size:1.65rem;font-weight:800;letter-spacing:-.02em;color:var(--accent-green)}.report-stat span{font-size:.78rem;color:var(--text-dim)}.report-heading{font-size:.95rem;color:var(--text-dim);letter-spacing:.05em;text-transform:uppercase;font-weight:700}.report-chart{display:flex;align-items:flex-end;gap:8px;min-height:130px}.report-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px}.report-bar{width:100%;background:linear-gradient(180deg,#4cc98a,#2c9a63);border-radius:6px 6px 2px 2px;box-shadow:0 4px 14px #30a46c40}.report-bar-count{font-size:.75rem;color:var(--text-dim)}.report-bar-day{font-size:.75rem;color:var(--text-faint)}.report-top-words{margin:0;padding-left:24px;display:flex;flex-direction:column;gap:6px}.report-top-words li{display:flex;justify-content:space-between;font-size:1rem}.report-top-words strong{color:var(--accent-green)}.report-empty{color:var(--text-dim)}.report-actions{display:flex;flex-direction:column;gap:10px}.dashboard{display:flex;flex-direction:column;height:100%}.dashboard__scroll{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:14px;padding-bottom:12px}.dash-delta{font-size:.75rem;color:var(--text-dim)}.dash-delta--up{color:#2e9e64}.dash-delta--down{color:#d13c34}.dash-new-words{display:flex;flex-wrap:wrap;gap:8px}.dash-new-word{padding:7px 16px;background:var(--green-bg);color:var(--green-text);border:1px solid var(--green-border);border-radius:20px;font-size:1rem;font-weight:700;box-shadow:var(--key-light)}.dash-tips{display:flex;flex-direction:column;gap:10px}.dash-tip{display:flex;gap:14px;padding:16px;background:var(--indigo-bg);border:1px solid var(--indigo-border);border-radius:18px;box-shadow:var(--shadow-soft),var(--key-light)}.dash-tip--ai{background:var(--teal-bg);border-color:var(--teal-border)}.dash-tip__icon{font-size:1.6rem}.dash-tip strong{display:block;margin-bottom:4px;letter-spacing:-.01em}.dash-tip p{color:var(--text-dim);font-size:.95rem;line-height:1.55}.board{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 10px}.symbol-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:7px;height:100%;min-height:480px}.symbol-placeholder{border-radius:14px;background:var(--placeholder-cell);border:1px solid var(--placeholder-border)}.symbol-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:44px;min-height:56px;padding:4px 2px;border:none;border-radius:14px;font-family:inherit;font-size:clamp(.65rem,1.6vw,1rem);font-weight:700;letter-spacing:-.01em;cursor:pointer;background:var(--btn-color);box-shadow:var(--btn-shadow),inset 0 1px #ffffff59,inset 0 -1px #0000001f;transition:transform .12s var(--spring),filter .12s ease}@supports (background: color-mix(in srgb,red,white)){.symbol-button{background:linear-gradient(180deg,color-mix(in srgb,var(--btn-color) 82%,#fff) 0%,var(--btn-color) 55%,color-mix(in srgb,var(--btn-color) 90%,#000) 100%)}}.symbol-button:active{transform:scale(.93);filter:brightness(1.08) saturate(1.08)}.symbol-button--category{box-shadow:0 0 0 2px #ffffff8c,var(--btn-shadow),inset 0 1px #ffffff59}.symbol-button__symbol{font-size:clamp(1.1rem,3vw,1.9rem);line-height:1.1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.12))}.symbol-button__img{width:clamp(22px,4.5vw,40px);height:clamp(22px,4.5vw,40px);object-fit:contain;background:#fff;border-radius:8px;padding:1px;pointer-events:none;box-shadow:0 1px 3px #0000002e}.symbol-button__label{line-height:1.1;text-align:center;word-break:break-word}.grammar-bar{flex:0 0 auto;display:flex;gap:8px;margin:0 10px 8px;overflow-x:auto}.grammar-key{flex:0 0 auto;display:inline-flex;flex-direction:column;align-items:center;gap:0;min-height:44px;padding:5px 16px;background:var(--teal-bg);color:var(--teal-text);border:1px solid var(--teal-border);border-radius:13px;font-family:inherit;cursor:pointer;box-shadow:var(--shadow-soft),var(--key-light);transition:transform .15s var(--spring),filter .15s ease}.grammar-key:active{transform:scale(.94);filter:brightness(.96)}.grammar-key__ending{font-size:1.05rem;font-weight:800}.grammar-key__preview{font-size:.75rem;opacity:.8}.keyboard{display:flex;flex-direction:column;gap:8px;height:100%;padding-bottom:8px}.keyboard__buffer{min-height:56px;display:flex;align-items:center;padding:8px 18px;background:var(--surface-grad);border:1px solid var(--surface-border);border-radius:16px;font-size:1.8rem;font-weight:700;letter-spacing:.04em;box-shadow:var(--shadow-soft),var(--key-light)}.keyboard__hint{color:var(--text-faint);font-size:1.1rem;font-weight:400}.keyboard__completions{display:flex;gap:8px;min-height:48px;overflow-x:auto}.keyboard__completion{flex:0 0 auto;min-height:44px;padding:6px 18px;background:var(--green-bg);color:var(--green-text);border:1px solid var(--green-border);border-radius:22px;font-family:inherit;font-size:1.1rem;font-weight:700;cursor:pointer;box-shadow:var(--key-light);transition:transform .15s var(--spring),filter .15s ease}.keyboard__completion:active{transform:scale(.94);filter:brightness(.96)}.keyboard__row{display:flex;gap:7px;flex:1;min-height:52px}.keyboard__key{flex:1;min-width:44px;min-height:44px;background:var(--key-bg);color:var(--key-text);border:1px solid var(--key-border);border-radius:12px;font-family:inherit;font-size:1.4rem;font-weight:700;cursor:pointer;text-transform:uppercase;box-shadow:0 2px #1018282e,0 4px 10px #1018281a,var(--key-light);transition:transform .1s var(--spring),filter .1s ease}.keyboard__key:active{transform:translateY(1px) scale(.97);filter:brightness(.96);box-shadow:0 0 #0003,var(--key-light)}.keyboard__key:disabled{opacity:.35}.keyboard__key--wide{flex:1.6;background:linear-gradient(180deg,#8d6e63,#6d4c41);color:#fff;border:none}.keyboard__key--add{background:linear-gradient(180deg,#3cb877,#27935c);color:#fff;border:none;font-size:1.15rem;letter-spacing:.03em;box-shadow:0 8px 24px #30a46c4d,inset 0 1px #ffffff59}.category-page{display:flex;flex-direction:column;height:100%}.category-page__header{display:flex;align-items:center;gap:16px;padding:8px 4px 10px}.category-page__title{font-size:1.35rem;font-weight:800;letter-spacing:.09em}.back-button{min-width:110px;min-height:60px;padding:12px 28px;background:var(--teal-bg);color:var(--teal-text);border:2px solid var(--teal-border, var(--surface-border-strong));border-radius:16px;font-family:inherit;font-size:1.25rem;font-weight:800;cursor:pointer;box-shadow:var(--shadow-soft),var(--key-light);transition:transform .15s var(--spring),filter .15s ease}.back-button:active{transform:scale(.95);filter:brightness(.96)}.category-grid{flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));grid-auto-rows:minmax(76px,auto);gap:10px;align-content:start;padding-bottom:8px}.category-grid .symbol-button{font-size:clamp(.8rem,2vw,1.1rem)}.category-grid .symbol-button__symbol{font-size:clamp(1.4rem,3.5vw,2.2rem)}.add-word-button{display:flex;align-items:center;justify-content:center;min-height:76px;background:none;color:var(--text-faint);border:2px dashed var(--surface-border-strong);border-radius:14px;font-family:inherit;font-size:.95rem;font-weight:700;cursor:pointer;transition:border-color .15s ease,color .15s ease}.add-word-button:active{border-color:var(--text-dim);color:var(--text)}.toolbar{flex:0 0 auto;display:flex;gap:10px;padding:10px}.toolbar--top{padding-top:0}.toolbar-button{flex:1;min-height:58px;border:none;border-radius:16px;font-family:inherit;font-size:1.12rem;font-weight:800;letter-spacing:.05em;color:#fff;cursor:pointer;transition:transform .15s var(--spring),filter .15s ease,box-shadow .2s ease}.toolbar-button:disabled{opacity:.35;cursor:default;box-shadow:none!important}.toolbar-button:not(:disabled):active{transform:scale(.97);filter:brightness(1.1)}.toolbar-button--speak{flex:2;background:linear-gradient(180deg,#3cb877,#23824f);box-shadow:0 10px 30px #30a46c59,inset 0 1px #ffffff59}.toolbar-button--stop{background:linear-gradient(180deg,#f57c00,#c95e00);box-shadow:0 10px 30px #f57c0059,inset 0 1px #ffffff59}.toolbar-button--delete{background:linear-gradient(180deg,#6b7280,#4b5563);box-shadow:var(--shadow-soft),inset 0 1px #ffffff4d}.toolbar-button--clear{background:linear-gradient(180deg,#d4423c,#a32420);box-shadow:0 10px 30px #d4423c47,inset 0 1px #ffffff4d}@media print{body *{visibility:hidden}.dashboard,.dashboard *{visibility:visible}.dashboard{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;color:#000}.dashboard .report-stat,.dashboard .dash-tip{background:#fff;border-color:#999;color:#000;box-shadow:none}.dashboard .dash-tip p{color:#333}.dashboard .report-stat strong,.dashboard .report-top-words strong{color:#2e7d32}.report-actions,.back-button,.dash-ai{display:none}}@media (max-width: 600px){.symbol-grid{gap:4px;min-height:560px}.symbol-button{min-height:52px;border-radius:10px;padding:3px 1px}.symbol-button__symbol{font-size:1.05rem}.symbol-button__label{font-size:.62rem}.message-bar{min-height:60px;margin:8px}.message-chip{font-size:1.1rem;padding:5px 10px}.expansion-bar{margin:0 8px 6px}.expansion-bar__button{font-size:1rem;padding:6px 12px}.toolbar-button{min-height:52px;font-size:1rem}}.gift-modal{max-width:420px;text-align:center}.gift-modal__emoji{font-size:3.5rem;line-height:1;margin-bottom:.5rem}.gift-modal p{margin:.75rem 0 1.25rem;color:var(--text-soft, #555);line-height:1.5}.settings-supporter{margin:0 0 .75rem;padding:.6rem .9rem;border-radius:12px;background:#34c7591f;color:#1f7a3d;font-weight:600;text-align:center}.theme-dark .settings-supporter{background:#34c7592e;color:#6fdc92}.gate-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(160deg,#f4faf6,#e7f4ec);overflow-y:auto}.theme-dark .gate-screen{background:linear-gradient(160deg,#0c1a12,#12261b)}.gate-card{background:var(--surface, #fff);border-radius:28px;box-shadow:0 20px 60px #0d1f1624;max-width:460px;width:100%;padding:36px 28px;text-align:center}.theme-dark .gate-card{background:#16161f}.gate-logo{font-size:3.4rem;line-height:1}.gate-title{font-size:2rem;letter-spacing:-.02em;margin:6px 0 2px}.gate-tagline{font-weight:600;color:#30a46c;margin:0 0 10px}.gate-pitch{color:var(--text-soft, #555);line-height:1.5;margin:0 0 22px}.gate-trial{width:100%;border:none;border-radius:16px;background:#30a46c;color:#fff;font-size:1.15rem;font-weight:700;padding:16px;cursor:pointer}.gate-trial:disabled{opacity:.6}.gate-trial-sub{font-size:.85rem;color:var(--text-soft, #777);margin:10px 0 0}.gate-divider{height:1px;background:#00000014;margin:22px 0}.theme-dark .gate-divider{background:#ffffff1a}.gate-gift-q{font-weight:600;margin:0 0 10px}.gate-gift-row{display:flex;gap:8px}.gate-gift-row input{flex:1;padding:13px;border:1.5px solid rgba(0,0,0,.15);border-radius:12px;font-size:1rem;text-transform:uppercase;min-width:0}.gate-gift-row button{border:none;border-radius:12px;background:#30a46c24;color:#1f7a3d;font-weight:700;padding:0 18px;cursor:pointer}.gate-gift-row button:disabled{opacity:.5}.gate-error{color:#d64545;font-size:.9rem;margin:10px 0 0}.gate-demo{display:inline-block;margin-top:20px;color:var(--text-soft, #777);font-size:.9rem}.demo-chip{position:fixed;top:10px;right:10px;z-index:260;background:#30a46c;color:#fff;font-weight:800;font-size:.9rem;border-radius:999px;padding:8px 14px;box-shadow:0 6px 18px #30a46c66;pointer-events:none}.convo{max-width:480px;text-align:center}.convo__listening{padding:18px 0 8px}.convo__pulse{font-size:3rem;line-height:1;display:inline-block;animation:convo-pulse 1.2s ease-in-out infinite}.convo__pulse--think{animation-duration:2s}@keyframes convo-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.18);opacity:.75}}.convo__heard{color:var(--text-soft, #555);margin:10px 0 4px;font-size:1.05rem}.convo__heard small{display:block;font-size:.8rem;opacity:.7}.convo__pick{font-weight:600;margin:6px 0 12px}.convo__replies{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.convo__reply{border:none;border-radius:16px;background:linear-gradient(180deg,#3cb877,#27935c);color:#fff;font-family:inherit;font-size:1.25rem;font-weight:700;padding:16px 18px;cursor:pointer;box-shadow:0 8px 20px #30a46c4d;transition:transform .15s var(--spring, ease)}.convo__reply:active{transform:scale(.96)}.convo__error{color:#d64545;margin:12px 0}.ai-board-or{text-align:center;color:var(--text-soft, #888);font-size:.85rem;margin:10px 0 6px}.ai-board-photo{width:100%}.ai-board-hint--small{font-size:.8rem;opacity:.8;margin-top:6px}.clone-modal{max-width:480px;text-align:center}.clone-intro{color:var(--text-soft, #555);margin:8px 0;line-height:1.5}.clone-script{background:#30a46c14;border-radius:14px;padding:12px 14px;font-style:italic;margin:10px 0 14px;line-height:1.55;text-align:left}.clone-timer{font-size:1.6rem;font-weight:800;color:#d64545;margin:10px 0}.clone-progress{height:12px;border-radius:99px;background:#00000014;overflow:hidden;margin:10px 0}.clone-progress div{height:100%;background:linear-gradient(90deg,#3cb877,#27935c);transition:width .3s ease}.color-edit{max-width:420px;text-align:center}.color-edit__preview{display:inline-flex;align-items:center;gap:8px;font-size:1.15rem;font-weight:700;border-radius:14px;padding:14px 26px;margin:6px 0 10px;box-shadow:0 4px 14px #10182826}.color-edit__hint{color:var(--text-soft, #666);font-size:.9rem;line-height:1.5;margin:0 0 14px}.color-edit__swatches{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;margin-bottom:14px}.color-edit__swatch{aspect-ratio:1;border-radius:10px;border:2px solid rgba(0,0,0,.12);cursor:pointer;transition:transform .12s ease}.color-edit__swatch:active{transform:scale(.9)}.color-edit__swatch--on{outline:3px solid var(--accent-green, #27935c);outline-offset:2px}.color-edit__actions{display:flex;gap:10px;margin-bottom:6px}.color-edit__actions .settings-report{flex:1}.color-edit__picked{outline:3px solid var(--accent-green, #27935c);outline-offset:1px}.convo__disclosure{font-size:.72rem;color:var(--text-dim);margin-top:6px}.sponsor-notice{border-radius:14px;padding:12px 14px;margin:8px 10px 0;font-size:.9rem;line-height:1.45}.sponsor-notice--ending{background:#fdf6e7;border:1.5px solid #ecd9a8;color:#6b5416}.sponsor-notice--lapsed{background:#eefaf3;border:1.5px solid #bfe5cf;color:#1c5c3d}.theme-dark .sponsor-notice--ending{background:#2e2610;border-color:#59491d;color:#eddba4}.theme-dark .sponsor-notice--lapsed{background:#14301f;border-color:#2c5a3e;color:#a9dfc2}.sponsor-notice__msg{margin:0 0 8px}.sponsor-notice__row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.sponsor-notice__keep{background:#2e9e66;color:#fff;border:none;border-radius:10px;padding:8px 14px;font-weight:700;font-size:.88rem;cursor:pointer}.sponsor-notice__annual,.sponsor-notice__later{background:transparent;border:none;color:inherit;text-decoration:underline;font-size:.82rem;cursor:pointer;padding:6px 4px}.sponsor-notice__sponsor{color:inherit;font-size:.82rem;padding:6px 4px}.gate-annual{background:transparent;border:none;color:var(--text-soft, #777);text-decoration:underline;font-size:.85rem;cursor:pointer;margin-top:6px;padding:4px}
