:root{--bg:#f7f7f9;--ink:#1b2142;--soft:#6b7088;--hair:#e4e5ec;--ind:#2c3c91;--tint:#2c3c9114;--bad:#b42a4a;--title-gradient:linear-gradient(180deg, #2c3a83, #364ca2 55%, #5c84b7);--btn-gradient:linear-gradient(180deg, #34479f, #24327c);--stage-ink:#eef0ff;--stage-soft:#a5acd4;--stage-edge:#ffffff1f;--stage-glass:#ffffff0f;--stage-iri:linear-gradient(90deg, #70c4e8, #8f9df2 50%, #ca73a0);--stage-accent:#8fd3f0;--stage-bad:#ffb3c9;--stage-dialog:#161e52;--stage-bg:radial-gradient(55% 45% at 0% 100%, #ca73a052, transparent 70%), radial-gradient(45% 40% at 100% 0%, #70c4e838, transparent 70%), radial-gradient(120% 90% at 50% 40%, #1c2765, #0b1030 75%);--sans:"Noto Sans TC", -apple-system, "PingFang TC", sans-serif;--serif:"Noto Serif TC", "Songti TC", "PingFang TC", serif}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);line-break:strict;overflow-wrap:anywhere;font-size:16px}button{font:inherit;cursor:pointer;touch-action:manipulation}.grad{font-family:var(--serif);background:var(--title-gradient);color:#0000;-webkit-background-clip:text;background-clip:text;font-weight:900}.eyebrow{letter-spacing:.28em;color:var(--ind);font-size:12px;font-weight:700}.muted{color:var(--soft);font-size:13px}.grow{flex:1}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.btn{letter-spacing:.08em;color:#fff;background:var(--btn-gradient);white-space:nowrap;border:0;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:0 24px;font-size:16px;font-weight:700;display:inline-flex;box-shadow:0 10px 22px -12px #24327ccc}.btn.ghost{color:var(--ind);background:#fff;box-shadow:inset 0 0 0 1.5px #2c3c9166}.btn.text{color:var(--soft);box-shadow:none;background:0 0;padding:0 12px}.btn.sm{min-height:44px;padding:0 16px;font-size:14px}.btn.wide{width:100%}.btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.btn.waiting:disabled{opacity:1;background:var(--tint);color:var(--ind)}button:focus-visible,a:focus-visible{outline-offset:2px;outline:3px solid #2c3c9173}.linkbtn{vertical-align:middle;min-width:44px;min-height:44px;color:var(--ind);text-underline-offset:3px;font-size:inherit;background:0 0;border:0;align-items:center;margin:-12px 0;padding:0 2px;font-weight:700;text-decoration:underline;display:inline-flex}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>.lbl{color:var(--soft);letter-spacing:.08em;flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.field input,.field textarea{font:inherit;border:1px solid var(--hair);width:100%;min-height:50px;color:var(--ink);background:#fff;border-radius:12px;padding:12px 16px;font-size:16px}.field textarea{resize:vertical;min-height:84px;line-height:1.6}.field input::placeholder,.field textarea::placeholder{color:#6b7088}.field input:focus,.field textarea:focus{border-color:var(--ind);outline:none;box-shadow:0 0 0 4px #2c3c911f}.field.bad input,.field.bad textarea{border-color:var(--bad)}.field .hint{color:var(--soft);font-size:12px;line-height:1.6}.err{color:var(--bad);font-size:13px}.chip{font-family:var(--sans);letter-spacing:.1em;background:var(--tint);color:var(--ind);white-space:nowrap;border-radius:999px;align-items:center;padding:2px 9px;font-size:11px;font-weight:700;display:inline-flex}.note{border:1px solid var(--hair);background:#fff;border-radius:12px;align-items:center;gap:10px;padding:12px 14px;font-size:14px;line-height:1.6;display:flex}.note.info{background:#f4f6fc;border-color:#2c3c9140}.toast{color:#fff;z-index:6;text-align:center;background:#1b2142;border-radius:999px;width:max-content;max-width:calc(100% - 32px);padding:10px 20px;font-size:14px;line-height:1.5;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px -10px #00000080}.toast.bad{background:var(--bad)}dialog.dialog{color:var(--ink);background:#fff;border:0;border-radius:20px;width:min(460px,90%);padding:28px;box-shadow:0 30px 60px -20px #14183080}dialog.dialog[open]{flex-direction:column;gap:14px;display:flex}dialog.dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1418306b}dialog.dialog h3{font-family:var(--serif);letter-spacing:.04em;margin:0;font-size:24px;font-weight:900}dialog.dialog p{margin:0;line-height:1.7}dialog.dialog .acts{justify-content:flex-end;gap:10px;margin-top:6px;display:flex}.page-state{min-height:240px;color:var(--soft);text-align:center;flex:1;justify-content:center;align-items:center;padding:24px;font-size:16px;display:flex}.page-state.full{min-height:100vh}
