:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#28232f;background:#f7f5f9;--purple:#50317b;--muted:#8a8293;--line:#ece7f0;font-synthesis:none;color-scheme:light}*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(ellipse at 10% 0%,#ece5f5 0%,transparent 48%),#f7f5f9}button,textarea,select{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:default;opacity:.42}button:focus-visible,textarea:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #b19bd2;outline-offset:4px}button[hidden],[hidden]{display:none!important}.app{max-width:1000px;margin:0 auto;padding:52px 32px 28px}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:40px}.brand{display:flex;gap:12px;align-items:center}.brand img{width:57px;height:57px}h1{font-size:30px;letter-spacing:-1.2px;font-weight:650;margin:0}h1 span{font-size:10px;letter-spacing:2px;color:var(--muted);display:block;margin-top:6px;font-weight:600}.icon-button{border:1px solid #e4ddea;border-radius:15px;background:#fff9;color:var(--purple);width:44px;height:44px;display:grid;place-items:center}.icon-button svg{width:24px;height:24px}.workspace{display:grid;grid-template-columns:1fr 1fr;border-radius:26px;background:#fff;box-shadow:0 12px 50px #34234608;overflow:hidden;border:1px solid #eee8f1}.input-panel,.output-panel{padding:28px;min-width:0}.input-panel{border-right:1px solid var(--line)}.output-panel{display:flex;flex-direction:column;background:#fefcff;min-height:380px}.label-row{display:flex;align-items:center;justify-content:space-between;height:24px;gap:8px;font-size:10px;font-weight:650;letter-spacing:1.4px;color:var(--muted)}.text-button{border:0;background:none;color:var(--purple);padding:6px 0;font-size:12px;letter-spacing:0;font-weight:550}.input-panel textarea{resize:vertical;border:0;width:100%;min-height:178px;max-height:48vh;background:transparent;padding:21px 0 12px;font-size:22px;line-height:1.45;color:#2d2338;border-radius:5px}.input-panel textarea::placeholder{color:#b4abbf}.input-panel textarea:focus{outline:none}.input-panel:focus-within{box-shadow:inset 0 0 0 2px #ded2ee}.suggestions{display:flex;flex-wrap:wrap;gap:7px;align-items:center;min-height:65px;padding-bottom:14px}.suggestions>span{font-size:11px;color:var(--muted);width:100%}.suggestions button{border:1px solid #eee8f3;background:#faf8fc;padding:7px 10px;border-radius:9px;color:#736184;font-size:11px}.input-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:17px 0 20px}.explain{display:flex;gap:8px;align-items:center;font-size:12px;color:#766b80;cursor:pointer}.explain input{width:16px;height:16px;margin:0;accent-color:var(--purple)}.key-hint{font-size:11px;color:#a89caf}.translate{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;width:100%;border:0;border-radius:13px;background:var(--purple);color:white;font-size:14px;font-weight:550;box-shadow:0 5px 14px #50317b15}.translate:enabled:hover{background:#61408f}.translate:enabled:active{transform:translateY(1px)}.translate>span+span{font-size:20px;line-height:15px}.stop{display:block;margin:12px auto 0;border:0;background:none;color:var(--purple);font-size:12px}.empty{margin:auto;text-align:center;padding:45px 0}.empty-glyph{display:flex;justify-content:center;align-items:center;gap:17px;color:#b5a2cc;font-size:29px;font-weight:500;letter-spacing:-2px}.empty-glyph span{font-size:18px;letter-spacing:0;color:#d7cae6}.empty p{color:#7b6c89;font-size:16px;margin:24px 0 9px}.empty>span{font-size:12px;color:#b0a6b9}.output{white-space:pre-wrap;overflow-wrap:anywhere;font-size:19px;line-height:1.6;padding:20px 0;flex:1}.result-meta{min-height:21px;display:flex;gap:14px;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:auto}#progress.busy:before{content:"";display:inline-block;width:6px;height:6px;background:#9671c1;border-radius:50%;margin-right:6px;animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.25}}.error{background:#fff1f1;border:1px solid #efcccc;color:#963b48;border-radius:12px;padding:14px 17px;font-size:13px;line-height:1.5}footer{display:flex;justify-content:space-between;font-size:10px;color:#a198aa;margin:23px 3px 0}#connection i{display:inline-block;width:5px;height:5px;border-radius:50%;background:#b4a8bf;margin-right:5px}#connection.ready i{background:#88a485}.test-note{text-align:center;color:#b0a5b9;font-size:10px;margin-top:31px}dialog{width:min(450px,calc(100vw - 32px));border:1px solid #e7deef;border-radius:23px;padding:25px;color:#302639;box-shadow:0 25px 100px #25133525}dialog::backdrop{background:#24173350;backdrop-filter:blur(4px)}.dialog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}h2{font-size:21px;margin:0}.field{display:flex;flex-direction:column;gap:10px;font-size:13px;font-weight:550;margin:20px 0}.field select,.field textarea{border:1px solid #e5ddea;border-radius:10px;padding:12px;background:#fcfafd;color:#50317b;font-size:16px;width:100%}.field textarea{resize:vertical;line-height:1.4;color:#45394f}dialog p{font-size:12px;color:#978b9f;line-height:1.6}.connection-info{border-radius:12px;padding:15px;background:#f7f3fa;font-size:13px}.connection-info p{margin-bottom:0}.install-note{margin-bottom:0}@media(max-width:680px){.app{padding:calc(23px + env(safe-area-inset-top)) 18px calc(20px + env(safe-area-inset-bottom))}header{margin-bottom:25px}h1{font-size:27px}.brand img{width:51px;height:51px}.workspace{grid-template-columns:1fr;border-radius:22px}.input-panel,.output-panel{padding:22px}.input-panel{border-right:0;border-bottom:1px solid var(--line)}.input-panel textarea{min-height:135px;font-size:21px}.output-panel{min-height:255px}.output{font-size:18px}.empty{padding:33px 0}.suggestions{min-height:55px}.key-hint{display:none}.test-note{margin-top:22px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
/* Safe areas apply in portrait AND landscape, independent of breakpoints. */
html{min-height:100%;background:#f7f5f9;-webkit-text-size-adjust:100%;scroll-padding-top:calc(env(safe-area-inset-top,0px) + 16px);scroll-padding-bottom:calc(env(safe-area-inset-bottom,0px) + 20px)}
body{min-height:100svh;min-height:100dvh;margin:0;overflow-wrap:break-word}
.app{padding-top:calc(24px + env(safe-area-inset-top,0px));padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));padding-left:max(18px,env(safe-area-inset-left,0px));padding-right:max(18px,env(safe-area-inset-right,0px))}
.app-header{margin-bottom:24px}.brand h1{font-size:28px}.brand h1 span{font-size:12px}.brand img{width:52px;height:52px}
button,a,input,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}.icon-button,.text-button,.suggestions button,.stop{min-height:44px}.text-button{padding:8px 4px}.icon-button{min-width:44px}.copy-button{display:flex;align-items:center;gap:6px}.label-row{min-height:44px;height:auto;font-size:12px;letter-spacing:1px}
.input-panel,.output-panel{padding:20px}.input-panel textarea{font-size:20px;min-height:136px;max-height:40svh;scroll-margin:24px;line-height:1.45}.explain{min-height:44px;font-size:14px}.explain [data-slot=checkbox]{width:20px;height:20px}.input-bottom{margin:8px 0 14px}.translate{min-height:50px;justify-content:center;font-size:16px}.suggestions{min-height:0;padding-bottom:4px;gap:5px}.suggestions>span{width:100%;font-size:12px}.suggestions button{padding:8px 10px;font-size:13px}.output-panel{min-height:260px}.output{font-size:19px}.empty p{font-size:16px}.empty>span{font-size:14px}.result-meta{flex-wrap:wrap;font-size:12px;gap:4px}.key-hint{font-size:12px}footer{font-size:12px;color:#766880}
.setup-note{border:1px solid #e3d6ee;background:#f4edf9;padding:14px 16px;border-radius:16px;margin-bottom:18px;font-size:14px;line-height:1.5;color:#634a7b}.setup-note p{margin:5px 0 0}.setup-note a{display:inline-flex;align-items:center;text-decoration:underline;color:#50317b}.error{font-size:14px}
.wort-dialog{top:calc(var(--visible-top,0px) + var(--visible-height,100dvh)/2);max-height:calc(var(--visible-height,100dvh) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 32px);overflow-y:auto;overscroll-behavior:contain;border-radius:22px;background:white;padding:22px;gap:16px;width:min(460px,calc(100% - max(16px,env(safe-area-inset-left,0px)) - max(16px,env(safe-area-inset-right,0px))))}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.wort-dialog [data-slot=dialog-title]{font-size:22px}.wort-dialog p{font-size:14px;line-height:1.5;color:#796b86}.wort-dialog .field{margin:0;font-size:14px}.wort-dialog textarea{font-size:16px;min-height:100px;scroll-margin:16px}.connection-info{font-size:14px}.connection-info p{margin-top:8px}.install-note{font-size:14px}.translation-wait{flex:1;min-height:110px}
@media(min-width:681px){.app{padding-top:calc(40px + env(safe-area-inset-top,0px));padding-left:max(32px,env(safe-area-inset-left,0px));padding-right:max(32px,env(safe-area-inset-right,0px))}.input-panel,.output-panel{padding:26px}}
@media(orientation:landscape) and (max-height:550px){.app{padding-top:max(12px,env(safe-area-inset-top,0px))}.app-header{margin-bottom:12px}.workspace{grid-template-columns:1fr 1fr}.input-panel{border-right:1px solid var(--line);border-bottom:0}.input-panel textarea{min-height:90px}.output-panel{min-height:200px}}

dialog{max-height:calc(var(--visible-height,100dvh) - 32px);overflow:auto}input{font:inherit;font-size:16px;max-width:100%;padding:12px;border:1px solid #e5ddea;border-radius:10px}#login{margin-bottom:20px}a{color:var(--purple)}

/* Compact phone layout; safe areas and normal scrolling remain available. */
@media(max-width:680px){
 .app{padding-top:calc(12px + env(safe-area-inset-top,0px));padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));padding-left:max(14px,env(safe-area-inset-left,0px));padding-right:max(14px,env(safe-area-inset-right,0px))}
 header{margin-bottom:12px}.brand{gap:10px}.brand img{width:44px;height:44px}.brand h1{font-size:25px}.brand h1 span{font-size:10px;margin-top:3px}
 .workspace{border-radius:20px}.input-panel,.output-panel{padding:12px 16px}
 .input-panel textarea{display:block;min-height:88px;height:clamp(88px,13svh,116px);padding:8px 0;font-size:19px;line-height:1.4}
 .suggestions{gap:5px;padding:0}.suggestions>span{display:none}.suggestions button{font-size:12px;padding:7px 9px}
 .input-bottom{margin:2px 0 6px}.translate{min-height:46px;padding:11px 16px}
 .output-panel{min-height:176px}.empty{padding:10px 0}.empty-glyph{font-size:25px}.empty p{font-size:15px;margin:10px 0 4px}.empty>span{font-size:13px}
 .output{font-size:18px;line-height:1.5;padding:8px 0}.result-meta:has(#progress:empty):has(#timing:empty){display:none}
 footer{margin:12px 2px 0;font-size:11px;gap:10px}.error{margin:10px 0;padding:10px 12px}
}
