@import url("https://fonts.googleapis.com/css2?family=M+PLUS+Rounded+1c:wght@400;500;700;800&display=swap");:root{--bg:#eaf6ff;--paper:#fff;--ink:#3a3a3a;--ink-soft:#7c8a93;--blue:#3fa9e0;--blue-dark:#2b8cc4;--blue-soft:#dff1fc;--yellow:#ffc93c;--yellow-dark:#c98f00;--green:#6fcf97;--green-dark:#396;--green-soft:#e5f8ee;--line:#d7ecfb}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:M PLUS Rounded\ 1c,sans-serif;color:var(--ink);min-height:100vh;display:flex;justify-content:center;padding:40px 18px}.app{width:100%;max-width:620px}.header-row{display:flex;align-items:center;gap:14px;margin-bottom:6px}.mascot{flex-shrink:0}.eyebrow{font-size:14px;font-weight:700;color:var(--blue-dark);margin:0 0 4px}h1.title{font-size:32px;font-weight:800;margin:0;color:var(--ink)}.lead{font-size:15px;color:var(--ink-soft);margin:14px 0 26px;line-height:1.9;font-weight:500}.card{background:var(--paper);border-radius:26px;padding:26px;box-shadow:0 6px 0 var(--blue-soft),0 10px 24px rgba(63,169,224,.14)}.image-row{display:flex;align-items:center;gap:12px;margin-bottom:20px;padding-bottom:20px;border-bottom:3px dashed var(--line)}.upload-btn{display:inline-flex;align-items:center;gap:8px;background:var(--green);border:none;color:#fff;font-size:15px;font-weight:700;font-family:inherit;padding:12px 18px;border-radius:999px;cursor:pointer;white-space:nowrap;box-shadow:0 3px 0 var(--green-dark)}.upload-btn:hover{filter:brightness(1.05)}.upload-btn.loading{opacity:.6;pointer-events:none}.filename{font-size:13px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.options{display:flex;gap:10px;margin-bottom:18px;font-size:14px}.options label{display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;padding:12px 14px;border-radius:16px;background:#f3f8fb;color:var(--ink-soft);font-weight:700;border:2.5px solid transparent;transition:all .15s ease;flex:1 1;text-align:center}.options input{display:none}.options label.active{background:var(--blue-soft);color:var(--blue-dark);border-color:var(--blue)}textarea{width:100%;min-height:170px;resize:vertical;padding:18px;font-family:inherit;font-size:16px;line-height:1.9;color:var(--ink);border:3px solid var(--line);border-radius:18px;background:#fbfdff;outline:none}textarea:focus{border-color:var(--blue)}textarea::placeholder{color:#b7c7d1}.hint{font-size:12.5px;color:#a9b6bf;margin:10px 4px 22px;font-weight:500}button.run-btn{display:flex;width:100%;align-items:center;justify-content:center;gap:9px;background:var(--blue);color:#fff;border:none;padding:16px 26px;font-size:17px;font-family:inherit;font-weight:800;border-radius:18px;cursor:pointer;box-shadow:0 4px 0 var(--blue-dark);transition:transform .08s ease}button.run-btn:hover:not(:disabled){filter:brightness(1.03)}button.run-btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--blue-dark)}button.run-btn:disabled{opacity:.55;cursor:default;box-shadow:none}.output-wrap{margin-top:26px;position:relative;border-radius:20px;padding:26px 22px 22px;background:var(--green-soft);border:3px solid #cdeedc}.seal{position:absolute;top:-16px;right:16px;background:var(--yellow);color:#6b4f00;font-size:13px;font-weight:800;padding:7px 16px;border-radius:999px;box-shadow:0 3px 0 var(--yellow-dark)}.output{font-size:17px;line-height:2.7;white-space:pre-wrap;word-break:break-word}ruby{ruby-align:center}rt{font-size:11px;color:var(--blue-dark);letter-spacing:0;font-weight:700}.output-actions{margin-top:20px;display:flex;gap:10px;flex-wrap:wrap}.output-actions button{background:#fff;border:2px solid #cdeedc;color:var(--green-dark);font-size:13px;font-weight:700;padding:9px 16px;border-radius:999px;cursor:pointer;font-family:inherit}.output-actions button:hover{border-color:var(--green);background:var(--green-soft)}.error{margin-top:16px;color:#c0532e;background:#fff0e8;border:2px solid #ffd3ba;padding:12px 16px;border-radius:14px}.error,.toast{font-size:14px;font-weight:600}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(10px);background:var(--ink);color:#fff;padding:10px 22px;border-radius:999px;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}