@keyframes kbd-spring-pop{0%{transform:scale(.93)translateY(-2px)}50%{transform:scale(1.06)translateY(-1px)}75%{transform:scale(.98)translateY(0)}to{transform:scale(1)translateY(0)}}@keyframes kbd-popup-in{0%{opacity:0;transform:translateY(6px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes kbd-fade-in{0%{opacity:0}to{opacity:1}}:root,[data-geez-keyboard]{--geez-bg:#0e1525f2;--geez-key-bg:#ffffff12;--geez-key-border:#ffffff12;--geez-special-key-bg:#ffffff0a;--geez-special-key-border:#ffffff0d;--geez-accent:#4f8ef7;--geez-accent-dim:#4f8ef71a;--geez-accent-border:#4f8ef733;--geez-text:#f0f2f5;--geez-text-muted:#f0f2f58c;--geez-text-secondary:#f0f2f5bf;--geez-border:#ffffff14;--geez-radius:20px;--geez-transition:.12s ease;--geez-font-ethiopic:"Noto Sans Ethiopic", "Nyala", "Kefa", system-ui, sans-serif;--geez-font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}.kbd-panel{background:var(--geez-bg);border:1px solid var(--geez-border);border-radius:var(--geez-radius);-webkit-backdrop-filter:blur(16px);opacity:0;pointer-events:none;width:100%;max-height:0;margin-top:12px;transition:max-height .35s cubic-bezier(.22,1,.36,1),opacity .25s,transform .3s cubic-bezier(.22,1,.36,1);overflow:hidden;transform:translateY(12px);box-shadow:0 -4px 40px #00000080,0 0 0 1px #4f8ef714}.kbd-panel--open{opacity:1;pointer-events:auto;max-height:420px;transform:translateY(0)}.kbd-panel-header{border-bottom:1px solid var(--geez-border);background:#ffffff06;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.kbd-panel-title{letter-spacing:.06em;text-transform:uppercase;color:var(--geez-text-muted);font-size:12px;font-weight:700;font-family:var(--geez-font-sans)}.kbd-panel-close{border:1px solid var(--geez-border);width:28px;height:28px;color:var(--geez-text-muted);cursor:pointer;transition:background var(--geez-transition), color var(--geez-transition);background:#ffffff0d;border-radius:50%;justify-content:center;align-items:center;display:flex}.kbd-panel-close:hover{color:var(--geez-text);background:#ffffff1f}.kbd-body{flex-direction:column;gap:4px;padding:8px 10px 10px;display:flex}.kbd-row{gap:4px;display:flex}.kbd-toolbar-row{margin-top:2px}.kbd-key{border:1px solid var(--geez-key-border);min-width:0;height:46px;font-family:var(--geez-font-ethiopic);color:var(--geez-text);background:var(--geez-key-bg);cursor:pointer;transition:background var(--geez-transition), border-color var(--geez-transition), transform 80ms ease, box-shadow var(--geez-transition);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border-radius:9px;flex:1;justify-content:center;align-items:center;font-size:20px;font-weight:400;display:flex}.kbd-key:hover{color:#7bb3ff;background:#4f8ef726;border-color:#4f8ef74d}.kbd-key:active{background:#4f8ef740;transform:scale(.92);box-shadow:0 0 0 3px #4f8ef733}.kbd-key--pop{animation:.22s cubic-bezier(.34,1.56,.64,1) forwards kbd-spring-pop}.kbd-flick-key--pressing{transition:transform 60ms;transform:scale(.93)translateY(-2px)}.kbd-symbol-key{font-size:18px}.kbd-special-key{font-family:var(--geez-font-sans);letter-spacing:.02em;background:var(--geez-special-key-bg);border-color:var(--geez-special-key-border);color:var(--geez-text-secondary);font-size:13px;font-weight:600}.kbd-spacebar{letter-spacing:.08em;text-transform:uppercase;flex:3;font-size:12px}.kbd-backspace{font-size:18px}.kbd-enter{color:#7bb3ff;background:#4f8ef71a;border-color:#4f8ef733;font-size:17px}.kbd-enter:hover{background:#4f8ef738}.kbd-page-toggle{font-family:var(--geez-font-ethiopic);background:#ffffff0a;font-size:14px}.kbd-variant-backdrop{z-index:998;background:0 0;position:fixed;inset:0}.kbd-variant-popup{z-index:9999;background:#141c32f7;border:1px solid #4f8ef759;border-radius:12px;flex-direction:row;gap:3px;padding:6px;animation:.18s cubic-bezier(.22,1,.36,1) kbd-popup-in;display:flex;position:fixed;box-shadow:0 8px 32px #0009,0 0 0 1px #4f8ef71a}.kbd-variant-key{width:44px;height:44px;font-family:var(--geez-font-ethiopic);color:var(--geez-text);cursor:pointer;transition:background var(--geez-transition), color var(--geez-transition);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#ffffff12;border:1px solid #ffffff14;border-radius:8px;justify-content:center;align-items:center;font-size:20px;display:flex}.kbd-variant-key:hover{color:#7bb3ff;background:#4f8ef740;border-color:#4f8ef766}.kbd-variant-key:active{transform:scale(.9)}.kbd-flick-key{touch-action:none;position:relative;overflow:visible}.kbd-flick-key--gesturing{z-index:10;background:#4f8ef72e;border-color:#4f8ef766;box-shadow:0 6px 20px #00000059,0 0 0 1px #4f8ef726,0 0 16px #4f8ef71f}.kbd-flick-label{font-family:var(--geez-font-ethiopic);color:var(--geez-text);z-index:1;font-size:20px;line-height:1;position:relative}.kbd-shadow-stroke{pointer-events:none;z-index:3;opacity:0;justify-content:center;align-items:center;transition:opacity .1s;display:flex;position:absolute;inset:0}.kbd-shadow-stroke[data-visible=true]{opacity:1}.kbd-shadow-stroke-svg{opacity:.4;width:100%;height:100%;overflow:visible}.kbd-magnify-bubble{z-index:100;pointer-events:none;-webkit-backdrop-filter:blur(14px);opacity:0;background:#0e1525eb;border:1px solid #4f8ef773;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:56px;height:64px;transition:opacity .12s,transform .18s cubic-bezier(.34,1.56,.64,1);display:flex;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%)scale(.5);box-shadow:0 8px 28px #0000008c,0 0 0 1px #4f8ef71f,inset 0 1px #ffffff0f}.kbd-magnify-bubble[data-visible=true]{opacity:1;transform:translate(-50%)scale(1)}.kbd-magnify-bubble:after{content:"";background:#0e1525eb;border-bottom:1px solid #4f8ef773;border-right:1px solid #4f8ef773;width:10px;height:10px;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)rotate(45deg)}.kbd-magnify-char{font-family:var(--geez-font-ethiopic);color:var(--geez-text);text-shadow:0 0 12px #4f8ef759;font-size:32px;line-height:1}.kbd-magnify-vowel{font-family:var(--geez-font-sans);letter-spacing:.05em;color:#4f8ef7d9;font-size:9px;font-weight:600}.kbd-flick-hints{pointer-events:none;z-index:2;opacity:0;transition:opacity 80ms;position:absolute;inset:0}.kbd-flick-hints[data-visible=true]{opacity:1}.kbd-flick-hint{font-family:var(--geez-font-sans);letter-spacing:.03em;color:#ffffff73;white-space:nowrap;font-size:8px;font-weight:500;line-height:1;transition:color 60ms,font-weight 60ms;position:absolute}.kbd-flick-hint--active{color:#4f8ef7f2;font-weight:700}.kbd-flick-hint--up{top:2px;left:50%;transform:translate(-50%)}.kbd-flick-hint--up-left{top:3px;left:3px}.kbd-flick-hint--up-right{top:3px;right:3px}.kbd-flick-hint--right{top:50%;right:2px;transform:translateY(-50%)}.kbd-flick-hint--down-right{bottom:3px;right:3px}.kbd-flick-hint--down{bottom:2px;left:50%;transform:translate(-50%)}.kbd-flick-hint--down-left{bottom:3px;left:3px}.kbd-flick-hint--left{top:50%;left:2px;transform:translateY(-50%)}.kbd-ghost-bar{background:#ffffff05;border-bottom:1px solid #ffffff0f;border-radius:6px 6px 0 0;align-items:center;gap:0;min-height:36px;margin-bottom:4px;padding:0 4px;display:flex}.kbd-ghost-bar--empty{min-height:36px}.kbd-ghost-chip{height:28px;font-family:var(--geez-font-ethiopic);color:#ffffffa6;cursor:pointer;transition:background var(--geez-transition), color var(--geez-transition);white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:6px;flex:1;padding:0 10px;font-size:15px;overflow:hidden}.kbd-ghost-chip:hover{color:#7bb3ff;background:#4f8ef71f}.kbd-ghost-divider{background:#ffffff1a;flex-shrink:0;width:1px;height:18px}.kbd-flick-numeral-divider{background:#ffffff1a;flex-shrink:0;align-self:stretch;width:1px;margin:4px 2px}.kbd-flick-emoji,.kbd-flick-audio{opacity:.7;transition:opacity var(--geez-transition), background var(--geez-transition);font-family:initial;font-size:18px}.kbd-flick-emoji:hover,.kbd-flick-audio:hover{opacity:1;background:#ffffff14}.kbd-flick-fidelat{opacity:.75;transition:opacity var(--geez-transition), background var(--geez-transition);font-weight:500;font-family:var(--geez-font-ethiopic)!important;font-size:15px!important}.kbd-flick-fidelat:hover{opacity:1;background:#4f8ef71a}@media (max-width:640px){.kbd-key{border-radius:7px;height:40px;font-size:18px}.kbd-body{gap:3px;padding:6px 6px 8px}.kbd-row{gap:3px}.kbd-variant-key{width:38px;height:38px;font-size:18px}.kbd-panel--open{max-height:360px}}
