:root{--bg: #f7f4ee;--surface: #ffffff;--ink: #14213d;--muted: #5c6378;--primary: #14213d;--on-primary: #ffffff;--accent: #f2a541;--warn: #a4161a;--border: #c9c3b6;--yes: #1b7f3b;--no: #b3261e;--typing: #e8ad1c;--show-bg: #ffffff;--show-ink: #000000;--radius: 18px;--gap: 12px;--text: 24px;--button-height: 84px;font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Hiragino Kaku Gothic ProN,Segoe UI,Yu Gothic UI,Noto Sans JP,system-ui,sans-serif;color:var(--ink);background:var(--bg)}@media(prefers-color-scheme:dark){:root{--bg: #0d1321;--surface: #1a2236;--ink: #f7f4ee;--muted: #a9b0c2;--primary: #f2a541;--on-primary: #14213d;--warn: #ff8a80;--border: #3a4258;--yes: #1f8a43;--no: #c62f26;--typing: #f0bf3a;--show-bg: #000000;--show-ink: #ffffff}}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}.speak{display:flex;flex-direction:column;gap:var(--gap);padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));max-width:720px;margin:0 auto}.message{width:100%;font:inherit;font-size:calc(var(--text) * 1.25);line-height:1.3;padding:16px;border:3px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--ink);resize:none;-webkit-user-select:text;user-select:text}.message:focus{outline:none;border-color:var(--accent)}.actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--gap)}.big{min-height:var(--button-height);font:inherit;font-size:var(--text);font-weight:600;padding:12px 16px;border:3px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--ink)}.big.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.tap{position:relative;overflow:hidden;touch-action:none}.tap.pressing{transform:scale(.98);border-color:var(--accent)}.tap.holding:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--accent);opacity:.35;transform-origin:left;animation:hold-fill var(--hold-ms) linear forwards;pointer-events:none}@keyframes hold-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.big:disabled{opacity:.4}.actions.four{grid-template-columns:1fr 1fr}.quick{display:flex;flex-direction:column;gap:var(--gap);margin-top:8px}.lang-toggle{display:grid;grid-template-columns:1fr 1fr;border:3px solid var(--border);border-radius:var(--radius);overflow:hidden}.lang-toggle button{min-height:56px;font:inherit;font-size:20px;font-weight:600;border:0;background:var(--surface);color:var(--muted)}.lang-toggle button.on{background:var(--primary);color:var(--on-primary)}.phrases{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}.quick .phrases{grid-template-columns:repeat(3,1fr)}.quick .phrase{padding-left:6px;padding-right:6px}.phrase.yes,.phrase.no,.phrase.typing{min-height:calc(var(--button-height) * 1.3);font-size:calc(var(--text) * 1.25)}.phrase.typing{background:var(--typing);border-color:var(--typing);color:#14213d;font-size:min(var(--text),24px);line-height:1.15}.phrase.yes{background:var(--yes);border-color:var(--yes);color:#fff}.phrase.no{background:var(--no);border-color:var(--no);color:#fff}.show{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;gap:var(--gap);padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:var(--show-bg);color:var(--show-ink)}.show-text{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.show-text.flipped{transform:rotate(180deg)}.show-text p{margin:0;max-width:100%;font-weight:700;line-height:1.15;text-align:center;overflow-wrap:normal;word-break:normal;line-break:strict}.show-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}.footer{display:flex;flex-direction:column;gap:var(--gap);margin-top:16px;padding-top:12px;border-top:2px dashed var(--border)}.settings-button{min-height:56px;font:inherit;font-size:16px;font-weight:600;border:2px dashed var(--border);border-radius:var(--radius);background:transparent;color:var(--muted)}.settings{display:flex;flex-direction:column;gap:20px;padding:max(16px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom));max-width:720px;margin:0 auto;-webkit-user-select:none}.settings header{display:flex;align-items:center;justify-content:space-between;gap:var(--gap)}.settings h1{margin:0;font-size:26px}.settings h2{margin:0 0 4px;font-size:22px}.setting{margin:0;padding:0;border:0}.setting legend{padding:0;font-size:19px;font-weight:600}.help{margin:4px 0 10px;color:var(--muted);font-size:16px;line-height:1.4}.choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}.choices button,.plain{min-height:52px;padding:8px 14px;font:inherit;font-size:17px;font-weight:600;border:2px solid var(--border);border-radius:12px;background:var(--surface);color:var(--ink)}.choices button.on{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.setting input[type=range]{width:100%;height:44px;accent-color:var(--primary)}.tap-test{display:flex;flex-direction:column;gap:var(--gap);padding-top:16px;border-top:2px dashed var(--border)}.tap-test .big{color:transparent}.tap-test .big.target{background:var(--accent);border-color:var(--accent);color:#14213d}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px;margin:0}.stats div{padding:8px 10px;border-radius:12px;background:var(--surface)}.stats dt{font-size:14px;color:var(--muted)}.stats dd{margin:2px 0 0;font-size:24px;font-weight:700}.message-button{display:flex;align-items:flex-start;justify-content:flex-start;min-height:calc(var(--text) * 1.25 * 1.3 * 3 + 38px);text-align:left;white-space:pre-wrap;overflow-wrap:anywhere}.message-text{display:block;min-width:0;max-width:100%}.message-button .placeholder{color:var(--muted)}.typing .message-button{--message-font: min(calc(var(--text) * 1.25), 30px);border-color:var(--accent);font-size:var(--message-font);min-height:calc(var(--message-font) * 1.3 * 2 + 38px);max-height:calc(var(--message-font) * 1.3 * 2 + 38px);overflow:hidden}.typing .actions .big{min-height:min(var(--button-height),56px);padding:4px 6px;font-size:min(var(--text),26px)}.typing .lang-toggle button{min-height:44px}.typing .quick{margin-top:0}.typing .phrase.yes,.typing .phrase.no,.typing .phrase.typing{min-height:64px;padding-top:4px;padding-bottom:4px}.typing .phrase.yes,.typing .phrase.no{font-size:min(calc(var(--text) * 1.25),28px)}.caret{display:inline-block;width:3px;height:1.1em;margin-left:2px;vertical-align:text-bottom;background:var(--ink);animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.phrases-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;gap:var(--gap);padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom));background:var(--bg);height:100dvh}.phrases-header{flex:none;display:flex;align-items:center;gap:8px}.phrases-header h1{flex:1;min-width:0;margin:0;font-size:22px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phrases-header .big{min-height:60px;padding:6px 12px;font-size:18px;white-space:nowrap}.paged-area{flex:1;min-height:0;overflow:hidden}.paged-grid{display:grid}.paged-grid .big{min-height:0}.paged-empty{padding:24px 8px;color:var(--muted);font-size:20px;line-height:1.4;text-align:center}.phrase-item{line-height:1.2;overflow:hidden}.big.category{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:calc(var(--text) * .95);line-height:1.15}.paged-footer{flex:none;display:grid;grid-template-columns:1fr auto 1fr 1.3fr;align-items:center;gap:8px}.paged-footer .big{min-height:64px;font-size:22px}.page-count{min-width:52px;text-align:center;font-size:18px;font-weight:600;color:var(--muted)}.edit-category{border:2px solid var(--border);border-radius:14px;background:var(--surface)}.edit-category summary{padding:14px;font-size:18px;font-weight:600}.edit-category .count{color:var(--muted);font-weight:400}.edit-category-body{display:flex;flex-direction:column;gap:10px;padding:0 12px 14px}.edit-names{display:grid;grid-template-columns:56px 1fr 1fr;gap:6px}.edit-category input[type=text]{width:100%;min-height:44px;padding:8px 10px;font:inherit;font-size:16px;border:2px solid var(--border);border-radius:10px;background:var(--bg);color:var(--ink);-webkit-user-select:text;user-select:text}.icon-input{text-align:center}.edit-phrases{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}.edit-phrase{display:flex;flex-direction:column;gap:6px;padding-bottom:10px;border-bottom:1px solid var(--border)}.edit-buttons{display:flex;flex-wrap:wrap;gap:6px}.edit-buttons button{min-width:44px;min-height:44px;padding:6px 12px;font:inherit;font-size:16px;border:2px solid var(--border);border-radius:10px;background:var(--bg);color:var(--ink)}.edit-buttons button.on{background:var(--accent);border-color:var(--accent);color:#14213d}.edit-subs{display:flex;flex-direction:column;gap:10px;padding-left:10px;border-left:3px solid var(--border)}.settings-links{display:grid;grid-template-columns:1fr 1fr;gap:8px}.settings .settings-section{margin:12px 0 -4px;padding-top:16px;border-top:2px solid var(--border);font-size:22px}.voice-row{display:flex;gap:8px}.voice-row select{flex:1;min-width:0;min-height:52px;padding:8px 10px;font:inherit;font-size:17px;border:2px solid var(--border);border-radius:12px;background:var(--surface);color:var(--ink)}.help.warn,.phone-status .warn{color:var(--warn);font-weight:600}.phone-status{display:flex;flex-direction:column;gap:8px;margin:0}.phone-status div{padding:10px 12px;border-radius:12px;background:var(--surface)}.phone-status dt{font-size:14px;color:var(--muted)}.phone-status dd{margin:2px 0 0;font-size:18px}.guide section{font-size:17px;line-height:1.5;-webkit-user-select:text;user-select:text}.guide h2{margin:8px 0 4px;font-size:21px}.guide ol,.guide ul{margin:6px 0;padding-left:1.4em}.guide li{margin:4px 0}.guide .note{margin:8px 0 0;padding:10px 12px;border-radius:12px;background:var(--surface);color:var(--muted)}:root{--kb-bg: rgba(206, 210, 217, .3);--kb-key: #ffffff;--kb-fn: #acb2bd;--kb-key-ink: #000000;--kb-shadow: rgba(0, 0, 0, .32);--kb-bar: rgba(255, 255, 255, .6);--kb-phrase: rgba(255, 255, 255, .92)}@media(prefers-color-scheme:dark){:root{--kb-bg: rgba(30, 30, 32, .35);--kb-key: #6b6b6e;--kb-fn: #464649;--kb-key-ink: #ffffff;--kb-shadow: rgba(0, 0, 0, .6);--kb-bar: rgba(255, 255, 255, .14);--kb-phrase: rgba(70, 70, 74, .94)}}.keyboard{--kb-gap: 6px;position:fixed;left:0;right:0;bottom:0;z-index:10;padding:8px 3px max(6px,env(safe-area-inset-bottom));background:var(--kb-bg);-webkit-backdrop-filter:blur(5px) saturate(140%);backdrop-filter:blur(5px) saturate(140%);transform:translateY(calc(100% + 70px));transition:transform .32s cubic-bezier(.2,.9,.25,1)}.keyboard.open{transform:translateY(0)}.kb-float{position:absolute;left:8px;right:8px;bottom:calc(100% + 8px);display:flex;flex-direction:column;align-items:flex-start;gap:8px;pointer-events:none}.kb-phrase{pointer-events:auto;max-width:100%;min-height:44px;padding:0 16px;border:0;border-radius:22px;background:var(--kb-phrase);box-shadow:0 2px 10px #0003;color:var(--kb-key-ink);font:inherit;font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kb-phrase.sentence{padding:9px 16px;line-height:1.3;text-align:left;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.kb-bar-row{display:flex;gap:8px;margin:0 5px 10px}.kb-bar,.kb-hide{border:0;background:var(--kb-bar);color:var(--kb-key-ink);font:inherit}.kb-bar{flex:1;display:flex;min-width:0;height:48px;border-radius:24px;overflow:hidden}.kb-suggestion{flex:1;min-width:0;padding:0 6px;border:0;background:transparent;color:var(--kb-key-ink);font:inherit;font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kb-suggestion+.kb-suggestion{border-left:1px solid rgba(128,128,128,.35)}.kb-suggestion.pressing{background:#80808040}.kb-hide{flex:none;width:48px;height:48px;border-radius:24px;font-size:24px;line-height:1}.kb-keys{display:flex;flex-direction:column;gap:11px}.kb-row{display:flex;justify-content:center;gap:var(--kb-gap)}.kb-row>.kb-key,.kb-row-middle>.kb-key{width:calc((100% - 9 * var(--kb-gap)) / 10)}.kb-row.inset{padding:0 calc((100% - 9 * var(--kb-gap)) / 20)}.kb-row.inset>.kb-key{width:calc((100% - 8 * var(--kb-gap)) / 9)}.kb-row-middle{flex:1;display:flex;justify-content:center;gap:var(--kb-gap)}.kb-row-middle>.kb-key{width:auto;flex:1;max-width:14%}.kb-row-middle.symbols>.kb-key{max-width:none}.kb-key{height:var(--key-height);min-width:0;padding:0;border:0;border-radius:6px;background:var(--kb-key);box-shadow:0 1px 0 var(--kb-shadow);color:var(--kb-key-ink);font:inherit;font-size:24px;font-weight:400;overflow:visible}.kb-key.fn{background:var(--kb-fn);font-size:18px}.kb-row>.kb-key.wide,.kb-spacer.wide{flex:none;width:calc((100% - 9 * var(--kb-gap)) / 10 * 1.35)}.kb-key.fn[aria-pressed=true]{background:var(--kb-key)}.kb-row.bottom>.kb-key{flex:none;width:calc((100% - 9 * var(--kb-gap)) / 10 * 1.35);font-size:17px}.kb-row.bottom>.kb-key.space{flex:1;width:auto;background:var(--kb-key)}.kb-key:disabled{opacity:.45}.kb-key.tap.pressing{transform:none;background:var(--kb-fn)}.kb-key.fn.tap.pressing{background:var(--kb-key)}.kb-key[data-preview].pressing:before{content:attr(data-preview);position:absolute;left:50%;bottom:calc(100% + 4px);transform:translate(-50%);min-width:150%;padding:6px 4px;border-radius:10px;background:var(--kb-key);box-shadow:0 2px 8px #0000004d;color:var(--kb-key-ink);font-size:34px;line-height:1.2;text-align:center;pointer-events:none;z-index:1}.kb-key.holding:after{border-radius:inherit}@media(prefers-reduced-motion:reduce){.keyboard{transition:none}}.family{display:flex;flex-direction:column;gap:10px;font-size:17px;line-height:1.4}.family p{margin:0}.pair-row{display:flex;gap:8px}.pair-row input{flex:1;min-width:0;min-height:52px;padding:8px 12px;font:inherit;font-size:22px;letter-spacing:.15em;text-transform:uppercase;border:2px solid var(--border);border-radius:12px;background:var(--surface);color:var(--ink);-webkit-user-select:text;user-select:text}
