@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--bg-color:#0f1115;--panel-bg:#191c2399;--panel-border:#ffffff14;--text-primary:#e2e8f0;--text-secondary:#94a3b8;--accent:#3b82f6;--accent-hover:#2563eb;--error:#ef4444;--kb-bg:#1e2128;--key-normal:#2d3340;--key-function:#222630;--key-action:#3b82f6;--key-text:#f8fafc;--key-border:#ffffff0d;--key-radius:6px;--key-shadow:0 1px 2px #00000080;--font-main:"Inter", system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-main);background-color:var(--bg-color);color:var(--text-primary);background-image:radial-gradient(at 0 0,#3b82f626 0,#0000 50%),radial-gradient(at 100% 100%,#8b5cf626 0,#0000 50%);min-height:100vh;overflow:hidden}.glass-panel{background:var(--panel-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--panel-border);box-shadow:0 8px 32px #0000004d}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#fff3;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#ffffff4d}:root{--app-bg:#1e2023;--header-bg:#121418eb;--editor-bg:#1e1e1e;--preview-bg:#26282c;--kb-bg:#fff;--key-normal-bg:#f2f1f7;--key-normal-bg-press:#e5e4ea;--key-fn-bg:#e2eff1;--key-fn-bg-press:#d0dee0;--key-text:#637a82;--accent:#637a82;--kb-radius-normal:10px;--kb-radius-pill:100px;--kb-gap:4px;--popup-bg:#fefefe;--popup-key-bg:#ebebf0;--popup-key-main-bg:#d8d8dd}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{background:var(--app-bg);color:#e8eaed;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif}.app-container{flex-direction:column;height:100dvh;display:flex}.app-header{background:var(--header-bg);-webkit-backdrop-filter:blur(14px);z-index:100;border-bottom:1px solid #ffffff14;flex-shrink:0;justify-content:space-between;align-items:center;height:56px;padding:0 20px;display:flex}.header-brand{align-items:center;gap:12px;display:flex}.header-logo{border-radius:8px;width:36px;height:36px}.header-title{width:auto;height:26px}.header-meta{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.header-credit{color:#fff6;text-align:right;font-size:10px;line-height:1.5}.header-credit a{color:#ffffffa6;text-decoration:none}.header-credit a:hover{color:#fff}.locale-toggle{cursor:pointer;opacity:.55;background:0 0;border:none;align-items:center;gap:3px;margin-top:2px;padding:0;transition:opacity .15s;display:flex}.locale-toggle:hover{opacity:1}.locale-flag{border-radius:3px;width:18px;height:auto;display:block}.locale-pizza{width:18px;height:18px;display:block}.app-main{flex:1;display:flex;overflow:hidden}.editor-pane{background:var(--editor-bg);border-right:1px solid #ffffff0f;flex-direction:column;flex-shrink:0;width:50%;display:flex;overflow:hidden}.preview-pane{background:var(--preview-bg);flex-direction:column;flex:1;display:flex;overflow:hidden}.preview-inner{flex-direction:column;flex:1;align-items:stretch;gap:12px;padding:12px 0;display:flex;overflow-y:auto}.keyboard-wrapper{width:100%;padding:6px 0}.keyboard-area{background:var(--kb-bg);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:20px;flex-direction:column;row-gap:16px;padding:10px 0;display:flex;box-shadow:0 8px 32px #00000059}.kb-row{gap:var(--kb-gap);justify-content:center;align-items:center;display:flex}.fn-row{margin-top:4px}.kb-key{color:var(--key-text);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;cursor:pointer;border-radius:var(--kb-radius-normal);flex-shrink:0;justify-content:center;align-items:center;min-width:24px;font-weight:300;transition:transform 80ms,opacity 80ms;display:flex;position:relative}.keyboard-area.show-borders .kb-key:not(.type-placeholder):not(.type-spacer):not(.type-unspecified){box-shadow:0 1px #0000001a}.kb-key.pressed{opacity:.85;transform:scale(.93)}.kb-key.type-normal{box-shadow:none;background:0 0}.keyboard-area.show-borders .kb-key.type-normal{background:var(--key-normal-bg);box-shadow:0 1px #0000001a}.keyboard-area.show-borders .kb-key.type-normal.pressed{background:var(--key-normal-bg-press)}.kb-key.type-function{background:var(--key-fn-bg);border-radius:var(--kb-radius-pill)}.kb-key.type-function.pressed{background:var(--key-fn-bg-press)}.kb-key.type-action{background:var(--key-normal-bg);border-radius:var(--kb-radius-pill)}.kb-key.type-action.pressed{background:var(--key-normal-bg-press)}.kb-key.type-space{background:var(--key-fn-bg);border-radius:var(--kb-radius-pill)}.kb-key.type-space.pressed{background:var(--key-fn-bg-press)}.kb-key.type-space.space-dragging{background:var(--key-fn-bg-press);transition:none}.space-drag-hint{letter-spacing:6px;color:var(--key-text);opacity:.75;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:15px}.kb-key.delete-dragging{background:var(--key-fn-bg-press);transition:none}.delete-drag-hint{letter-spacing:4px;color:var(--key-text);opacity:.75;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:15px}.kb-key.type-numeric{background:var(--key-normal-bg)}.kb-key.type-unspecified{box-shadow:none;background:0 0}.kb-key.type-placeholder,.kb-key.type-spacer{box-shadow:none;pointer-events:none;background:0 0}.key-icon{color:var(--key-text);justify-content:center;align-items:center;display:flex}.popup-hint{color:#637a8273;pointer-events:none;font-size:.42em;font-weight:400;position:absolute;top:2px;right:4px}.popup-overlay{z-index:1000;position:fixed;inset:0}.popup-panel{background:var(--popup-bg);border:1px solid #0000000f;border-radius:20px;flex-direction:column;gap:4px;padding:5px;display:flex;position:fixed;box-shadow:0 8px 28px #00000024,0 2px 6px #00000012}.popup-row{gap:4px;display:flex}.popup-key{background:var(--popup-key-bg);color:#1c1c1e;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:46px;height:46px;font-size:17px;font-weight:400;transition:background .1s;display:flex;overflow:hidden}.popup-key:hover{background:#d0d0d5}.popup-key.popup-key-main{background:var(--popup-key-main-bg)}.popup-key.popup-key-active{background:#b8b8be;transform:scale(1.12)}.popup-key.popup-key-emoji,.popup-has-emoji .popup-key{width:52px;height:52px}.test-area{-webkit-user-select:none;user-select:none;background:#ffffff0a;border:1px solid #ffffff17;border-radius:16px;flex-direction:column;gap:10px;width:100%;padding:12px 14px;display:flex}.test-controls-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.test-controls-spacer{flex:1}.test-area-body{align-items:stretch;gap:10px;display:flex}.test-action-col{flex-direction:column;flex-shrink:0;gap:8px;width:74px;display:flex}.test-info-btn,.test-toggle-btn{cursor:pointer;text-align:center;border-radius:10px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:8px 4px;font-size:10.5px;font-weight:500;line-height:1.4;transition:background .15s;display:flex}.test-info-btn{color:#fff9;background:#ffffff0f;border:1px solid #ffffff1a;flex:1}.test-info-btn:hover{background:#ffffff21}.test-toggle-btn{color:#fff;background:#637b82;border:none;flex:1.6}.test-toggle-btn:hover{background:#527069}.test-toggle-btn span{display:block}.test-clear-btn{color:#ffffffbf;cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:4px 8px;transition:background .15s;display:flex}.test-clear-btn:hover{background:#ffffff26}.shift-state-btn{color:#fff6;cursor:pointer;background:0 0;border:none;align-items:center;gap:3px;padding:0 4px;font-size:11px;transition:color .15s;display:flex}.shift-state-btn svg{width:14px;height:14px}.shift-state-btn:hover{color:#ffffffbf}.popup-toggle{color:#ffffff80;cursor:pointer;align-items:center;gap:5px;font-size:11px;display:flex}.popup-toggle input[type=checkbox]{accent-color:var(--accent)}.test-input-field{resize:none;color:#ffffffe0;white-space:pre-wrap;background:#ffffff0d;border:1px solid #ffffff17;border-radius:10px;outline:none;flex:1;min-width:0;height:120px;padding:10px 12px;font-family:JetBrains Mono,monospace;font-size:15px;line-height:1.5;overflow-y:auto}.attribution-row{align-items:center;gap:10px;width:100%;max-width:480px;display:flex}.attribution-text{color:#fff3;flex:1;align-items:center;gap:5px;font-size:11px;display:flex}.attribution-icon{opacity:.35;width:14px;height:14px}.info-pill-btn{color:#ffffff59;cursor:pointer;white-space:nowrap;background:#ffffff0d;border:1px solid #ffffff17;border-radius:100px;padding:4px 14px;font-size:11px;transition:background .15s,color .15s}.info-pill-btn:hover{color:#ffffffb3;background:#ffffff1f}.info-modal-overlay{-webkit-backdrop-filter:blur(10px);z-index:500;background:#0000008c;justify-content:center;align-items:center;padding:20px;animation:.18s modalFadeIn;display:flex;position:fixed;inset:0}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.info-modal-card{background:#2a2d31;border:1px solid #ffffff1a;border-radius:20px;width:100%;max-width:400px;padding:28px 24px 24px;animation:.2s modalSlideIn;position:relative;box-shadow:0 24px 64px #0000008c}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.info-modal-close{color:#ffffff8c;cursor:pointer;background:#ffffff14;border:none;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:18px;line-height:1;transition:background .15s;display:flex;position:absolute;top:14px;right:14px}.info-modal-close:hover{background:#ffffff29}.info-modal-header{align-items:center;gap:14px;margin-bottom:20px;display:flex}.info-modal-logo{border-radius:12px;flex-shrink:0;width:48px;height:48px}.info-modal-title-block{flex-direction:column;gap:3px;display:flex}.info-modal-title{color:#ffffffeb;font-size:18px;font-weight:700;line-height:1.2}.info-modal-subtitle{color:#ffffff6b;font-size:12px}.info-modal-body{color:#fff9;margin-bottom:24px;font-size:13px;line-height:1.65}.info-modal-body p{margin:0}.info-modal-body a{color:#9bb8c2;text-decoration:none}.info-modal-body a:hover{text-decoration:underline}.modal-pill-btn{color:#fff;vertical-align:baseline;background:#637b82;border-radius:100px;padding:1px 8px;font-size:.88em;font-weight:500;display:inline-block}.modal-pill-key{color:#fff9;vertical-align:baseline;background:#0000008c;border-radius:100px;padding:1px 8px;font-size:.88em;font-weight:500;display:inline-block}.info-modal-footer{border-top:1px solid #ffffff12;justify-content:flex-end;padding-top:16px;display:flex}.info-modal-personal-logo{opacity:.4;width:30px;height:30px}.editor-tabs{background:#252526;border-bottom:1px solid #333;flex-shrink:0;align-items:center;padding:0 8px;display:flex;overflow-x:auto}.tab-btn{color:#bbb;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;flex-shrink:0;padding:8px 12px;font-size:12px;transition:color .15s}.tab-btn:hover{color:#ddd}.tab-btn.active{color:#fff;border-bottom-color:var(--accent)}.tab-actions{flex-shrink:0;align-items:center;gap:2px;margin-left:auto;padding-left:8px;display:flex}.icon-btn{color:#bbb;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:5px 7px;font-size:16px;line-height:1;transition:background .15s,color .15s;display:flex}.icon-btn:hover{color:#fff;background:#3a3a3a}.tab-close-btn{color:#f87171;font-size:20px}.editor-container{flex:1;overflow:hidden}.editor-drawer{background:var(--editor-bg);z-index:300;flex-direction:column;animation:.18s drawerIn;display:flex;position:fixed;inset:0}@keyframes drawerIn{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}.mobile-tabs{background:#252526;border-bottom:1px solid #333;flex-shrink:0;align-items:center;gap:8px;padding:8px 12px;display:flex}.mobile-tabs select{color:#fff;cursor:pointer;background:#3c4043;border:none;border-radius:6px;flex:1;padding:6px 10px;font-size:13px}.fab-pill{background:var(--accent);color:#fff;letter-spacing:.02em;white-space:nowrap;z-index:150;cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:100px;padding:11px 28px;font-size:14px;font-weight:500;transition:transform .15s,box-shadow .15s,background .15s;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #00000073}.fab-pill:active{transform:translate(-50%)scale(.94);box-shadow:0 2px 10px #0006}.fab-pill.active{background:#637a8299}.screen-selector{-webkit-user-select:none;user-select:none;background:#ffffff0d;border:1px solid #ffffff12;border-radius:10px;gap:2px;padding:3px;display:flex}.screen-selector-btn{color:#ffffff59;letter-spacing:.03em;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:7px;flex:1;padding:5px 8px;font-size:11px;font-weight:500;transition:background .15s,color .15s}.screen-selector-btn:hover{color:#ffffffa6}.screen-selector-btn.active{color:#ffffffeb;background:#ffffff1c}.version-pill{color:#1e2023;letter-spacing:.02em;background:#ffffffeb;border-radius:10px;padding:2px 10px;font-size:11px;font-weight:700;display:inline-block}.keyboard-empty-placeholder{background:var(--kb-bg);border-radius:20px;flex-direction:column;align-items:center;padding:32px 24px;display:flex;box-shadow:0 8px 32px #00000059}.keyboard-empty-msg{color:#637a82b3;text-align:center;font-size:13px}@media (width>=768px){.preview-inner{align-items:center;padding:16px 24px}.keyboard-wrapper,.test-area,.screen-selector{width:100%;max-width:480px}.header-credit{font-size:11px}}@media (width<=767px){.header-credit{font-size:8.5px}.version-pill{padding:1px 7px;font-size:9.5px}.app-main{flex-direction:column;overflow:hidden}.preview-inner{flex:1;align-items:stretch;gap:8px;padding:8px 0 0;overflow:hidden}.test-area{flex-shrink:0;width:auto;margin:0 12px}.screen-selector{flex-shrink:0;margin:0 12px}.keyboard-wrapper{flex-shrink:0;max-width:100%;margin-top:auto;padding:0}.keyboard-area{border-radius:0;padding-left:12px;padding-right:12px}.kb-key.type-placeholder,.kb-key.type-spacer{display:none!important}.kb-key{min-width:22px;font-size:16px}}
