:root{--paper: #faf9f7;--card: #ffffff;--ink: #16181d;--ink-soft: #6e7480;--ink-faint: #a9aeb8;--hairline: rgba(22, 24, 29, .09);--staff: #1060f8;--staff-deep: #0b4fd0;--patient: #0e8a6d;--patient-deep: #0b7159;--mark-bg: #fff3c4;--mark-line: #e0a800;--ok: #1f9d5f;--warn: #9a6700;--err: #d64545;--sans: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Hiragino Sans", "Noto Sans KR", "Malgun Gothic", "Segoe UI", sans-serif;--serif-ja: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", "Noto Serif KR", serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}#app{display:flex;flex-direction:column;height:100dvh;max-width:900px;margin:0 auto;position:relative}#pane-patient,#pane-staff{min-height:0;display:flex;flex-direction:column}#pane-patient{flex:1.12;background:#0e8a6d07}#pane-staff{flex:1}.pane-head{padding:14px 24px 2px}.zone-tag{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;letter-spacing:.06em;color:var(--ink-soft)}.zone-dot{width:7px;height:7px;border-radius:50%;display:inline-block}#pane-patient .zone-dot{background:var(--patient)}#pane-staff .zone-dot{background:var(--staff)}#spine{display:flex;align-items:center;gap:12px;padding:9px 24px;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);background:#faf9f7db;backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3)}.dot{width:9px;height:9px;border-radius:50%;background:var(--ink-faint);flex:none}.dot.ready{background:var(--ok)}.dot.connecting,.dot.reconnecting{background:var(--mark-line)}.dot.error,.dot.closed{background:var(--err)}.spine-status{flex:1;font-size:13.5px;font-weight:500;color:var(--ink-soft);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spine-sep{margin:0 7px;color:var(--ink-faint)}#quote-btn{background:var(--ink);color:var(--paper);border:none;border-radius:999px;padding:9px 18px;font-size:14px;font-weight:600;font-family:inherit;letter-spacing:.01em}#quote-btn:active{background:#2c2f36}#signout-btn{background:transparent;border:none;color:var(--ink-faint);padding:7px;display:flex;align-items:center;border-radius:10px;flex:none}#signout-btn:active{background:#16181d0f;color:var(--ink-soft)}#auth-gate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--paper);display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto}.auth-card{width:100%;max-width:380px;background:var(--card);border:1px solid var(--hairline);border-radius:24px;padding:34px 30px 30px;box-shadow:0 2px 8px #16181d0a,0 16px 44px #16181d14}.auth-brand{display:flex;flex-direction:column;gap:3px;margin-bottom:24px}.auth-mark{font-family:var(--serif-ja);font-size:27px;font-weight:600;letter-spacing:.02em;color:var(--ink)}.auth-sub{font-size:13px;font-weight:500;color:var(--ink-soft);letter-spacing:.04em}.auth-tabs{display:flex;gap:4px;background:#16181d0d;border-radius:12px;padding:4px;margin-bottom:22px}.auth-tab{flex:1;border:none;background:transparent;border-radius:9px;padding:9px;font-size:14px;font-weight:600;font-family:inherit;color:var(--ink-soft)}.auth-tab.is-on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px #16181d1a}.auth-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.auth-field>span{font-size:12.5px;font-weight:600;color:var(--ink-soft)}.auth-field input{background:var(--card);border:1px solid var(--hairline);border-radius:12px;color:var(--ink);font-size:16px;font-family:inherit;padding:12px 14px;width:100%;outline:none}.auth-field input:focus{border-color:var(--staff);box-shadow:0 0 0 3px #1060f829}.auth-email{display:flex;align-items:stretch;border:1px solid var(--hairline);border-radius:12px;overflow:hidden}.auth-email:focus-within{border-color:var(--staff);box-shadow:0 0 0 3px #1060f829}.auth-email input{flex:1;min-width:0;border:none;border-radius:0;box-shadow:none}.auth-email input:focus{box-shadow:none}.auth-email em{display:flex;align-items:center;padding:0 14px;font-style:normal;font-size:15px;font-weight:600;color:var(--ink-soft);background:#16181d0a;border-left:1px solid var(--hairline);white-space:nowrap}.auth-remember{display:flex;align-items:center;gap:8px;margin:4px 0 18px;font-size:14px;color:var(--ink-soft);cursor:pointer}.auth-remember input{width:18px;height:18px;accent-color:var(--staff)}.auth-msg{font-size:13px;margin:0 0 14px;min-height:18px;line-height:1.5}.auth-msg.is-error{color:var(--err)}.auth-msg.is-ok{color:var(--ok)}.auth-submit{width:100%;border:none;border-radius:14px;background:var(--staff);color:#fff;font-size:17px;font-weight:700;font-family:inherit;padding:14px;letter-spacing:-.01em}.auth-submit:active{background:var(--staff-deep)}.auth-submit:disabled{background:#b8c8ef}.auth-field input:focus-visible,.auth-submit:focus-visible,.auth-tab:focus-visible{outline:3px solid rgba(16,96,248,.4);outline-offset:2px}.auth-pending{text-align:center}.pending-icon{width:60px;height:60px;margin:6px auto 16px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#1060f81a;color:var(--staff)}.pending-icon.is-rejected{background:#d645451a;color:var(--err)}.pending-title{font-size:19px;font-weight:700;margin:0 0 8px;letter-spacing:-.01em}.pending-desc{font-size:14px;color:var(--ink-soft);line-height:1.6;margin:0 0 16px}.pending-email{font-size:14px;font-weight:600;color:var(--ink);background:#16181d0a;border-radius:10px;padding:10px;margin:0 0 20px}.auth-ghost{background:#1060f81a;color:var(--staff)}.auth-ghost:active{background:#1060f82e}.auth-textbtn{display:block;width:100%;margin-top:12px;background:none;border:none;color:var(--ink-soft);font-size:13.5px;font-family:inherit;padding:6px}#admin-btn{position:relative;background:#1060f81a;color:var(--staff);border:none;border-radius:999px;padding:9px 16px;font-size:14px;font-weight:600;font-family:inherit;flex:none}#admin-btn:active{background:#1060f82e}.admin-badge:not(:empty){display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;margin-left:6px;padding:0 5px;border-radius:999px;background:var(--err);color:#fff;font-size:11px;font-weight:700;vertical-align:1px}#admin-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:60;background:#faf9f7f2;backdrop-filter:blur(24px) saturate(1.3);-webkit-backdrop-filter:blur(24px) saturate(1.3);display:flex;flex-direction:column}#admin-overlay[hidden]{display:none}.admin-head{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--hairline);font-size:17px;font-weight:700;letter-spacing:-.01em}.admin-head-btns{display:flex;gap:8px}.admin-head-btns button{background:transparent;border:1px solid var(--hairline);border-radius:999px;padding:8px 15px;font-size:13px;font-weight:600;font-family:inherit;color:var(--ink)}#admin-close{background:var(--ink);color:var(--paper);border-color:var(--ink)}#admin-list{flex:1;overflow-y:auto;padding:12px 22px 24px}.admin-empty{color:var(--ink-faint);text-align:center;margin-top:40px}.admin-section-title{font-size:12.5px;font-weight:700;letter-spacing:.03em;color:var(--ink-soft);margin:18px 0 8px;text-transform:uppercase}.admin-section-title:first-child{margin-top:4px}.admin-row{display:flex;align-items:center;gap:12px;padding:13px 16px;background:var(--card);border:1px solid var(--hairline);border-radius:14px;margin-bottom:8px}.admin-row[data-status=pending]{border-color:#1060f84d;box-shadow:0 0 0 1px #1060f81f}.admin-who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.admin-name{font-size:15px;font-weight:600;letter-spacing:-.01em;display:flex;align-items:center;gap:6px}.admin-role{font-size:10.5px;font-weight:700;color:var(--staff);background:#1060f81f;padding:1px 6px;border-radius:6px}.admin-self{font-size:13px;color:var(--ink-faint);padding-right:4px}.admin-email{font-size:12.5px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-status{font-size:11.5px;font-weight:600;padding:4px 9px;border-radius:999px;flex:none}.s-pending{color:var(--staff);background:#1060f81a}.s-approved{color:var(--ok);background:#1f9d5f1f}.s-rejected{color:var(--err);background:#d645451a}.admin-actions{display:flex;gap:6px;flex:none}.admin-btn{border:1px solid var(--hairline);background:var(--card);border-radius:10px;padding:8px 13px;font-size:13px;font-weight:600;font-family:inherit;color:var(--ink)}.admin-btn.is-approve{background:var(--staff);color:#fff;border-color:var(--staff)}.admin-btn.is-reject{color:var(--err);border-color:#d645454d}.admin-btn:disabled{opacity:.5}.captions{flex:1;min-height:0;overflow-y:auto;padding:14px 24px;display:flex;flex-direction:column;gap:12px}.captions:empty:before{content:attr(data-empty);margin:auto;max-width:30ch;font-size:14px;line-height:1.7;color:var(--ink-faint);text-align:center}.bubble{background:var(--card);border-radius:20px;padding:16px 20px;border:1px solid var(--hairline);box-shadow:0 1px 2px #16181d08,0 4px 14px #16181d0a}.bubble.live{border-color:transparent}.bubble.live[data-dir=ko2ja]{box-shadow:0 0 0 2px #1060f866,0 4px 16px #1060f81a}.bubble.live[data-dir=ja2ko]{box-shadow:0 0 0 2px #0e8a6d66,0 4px 16px #0e8a6d1a}.bubble .lang{display:block;font-size:11px;font-weight:600;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:5px}.bubble .primary{font-size:26px;line-height:1.42;font-weight:600;letter-spacing:-.012em;font-variant-numeric:tabular-nums}#pane-patient .bubble .primary{font-size:33px;font-family:var(--serif-ja);font-weight:600;line-height:1.5;letter-spacing:.01em}.bubble .secondary{font-size:15px;color:var(--ink-soft);margin-top:9px;line-height:1.5;letter-spacing:-.008em}.bubble.live .primary:after{content:"";display:inline-block;width:2px;height:.95em;margin-left:4px;vertical-align:-.12em;background:currentColor;animation:caret 1.1s steps(1) infinite}mark.hl{background:var(--mark-bg);color:var(--ink);padding:0 5px;border-radius:4px;box-shadow:inset 0 -2px 0 var(--mark-line);font-weight:700;font-variant-numeric:tabular-nums}.ptt-row{padding:10px 24px calc(12px + env(safe-area-inset-bottom)*0);border-top:1px solid var(--hairline);display:flex;flex-direction:column;align-items:center;gap:6px}#pane-staff .ptt-row{padding-bottom:calc(12px + env(safe-area-inset-bottom))}.ptt{display:flex;align-items:center;gap:16px;background:transparent;border:none;padding:6px 18px 6px 6px;border-radius:999px;font-family:inherit;touch-action:none;-webkit-tap-highlight-color:transparent}.ptt-core{position:relative;width:68px;height:68px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;flex:none;transition:transform .08s ease;box-shadow:0 6px 16px #16181d29}.ptt-staff .ptt-core{background:var(--staff)}.ptt-patient .ptt-core{background:var(--patient)}.ptt.active .ptt-core{transform:scale(.93)}.ptt.active.ptt-staff .ptt-core{background:var(--staff-deep)}.ptt.active.ptt-patient .ptt-core{background:var(--patient-deep)}.ptt-core:after{content:"";position:absolute;top:-9px;right:-9px;bottom:-9px;left:-9px;border-radius:50%;border:3px solid transparent}.ptt.active.ptt-staff .ptt-core:after{border-color:#1060f873;animation:pulse 1.4s ease-out infinite}.ptt.active.ptt-patient .ptt-core:after{border-color:#0e8a6d73;animation:pulse 1.4s ease-out infinite}.mic{width:28px;height:28px}.ptt-label{display:flex;flex-direction:column;align-items:flex-start;gap:3px;font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--ink);text-align:left}.ptt-label small{font-size:12px;font-weight:500;color:var(--ink-soft);letter-spacing:0}#pane-patient .ptt-label{font-family:var(--serif-ja);font-weight:600}#pane-patient .ptt-label small{font-family:var(--sans)}.ptt:disabled .ptt-core{background:#e5e4e1;color:var(--ink-faint);box-shadow:none}.ptt:disabled .ptt-label{color:var(--ink-faint)}.ptt:focus-visible{outline:3px solid rgba(16,96,248,.4);outline-offset:2px}#disclaimer{font-size:11.5px;color:var(--warn);margin:2px 0 0}#quote-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:50;background:#faf9f7e6;backdrop-filter:blur(26px) saturate(1.3);-webkit-backdrop-filter:blur(26px) saturate(1.3);display:flex;flex-direction:column;padding:20px 24px calc(20px + env(safe-area-inset-bottom));gap:16px}#quote-overlay[hidden]{display:none}.q-head{display:flex;justify-content:space-between;align-items:center;font-size:18px;font-weight:700;letter-spacing:-.01em}#quote-close{background:transparent;color:var(--ink);border:1px solid var(--hairline);border-radius:999px;padding:9px 18px;font-size:14px;font-weight:600;font-family:inherit}#quote-close:active{background:#16181d0f}.q-display{flex:1;display:flex;flex-direction:column;justify-content:center;gap:20px;background:var(--card);border-radius:22px;padding:30px 32px;border:1px solid var(--hairline);box-shadow:0 2px 8px #16181d0a,0 12px 34px #16181d12}.q-row{display:flex;align-items:baseline}.q-label{font-size:14px;font-weight:500;color:var(--ink-soft);letter-spacing:.01em;flex:none}.q-leader{flex:1;border-bottom:2px dotted rgba(22,24,29,.16);margin:0 12px;transform:translateY(-5px)}.q-row strong{font-size:30px;font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums;flex:none}.q-row.q-total{border-top:3px double rgba(22,24,29,.4);padding-top:20px}.q-row.q-total strong{font-size:52px;font-weight:600;font-family:var(--serif-ja);letter-spacing:0}.q-row.q-ref span:last-child{font-size:20px;color:var(--ink-soft);font-variant-numeric:tabular-nums;flex:none}.q-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}.q-form label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:500;color:var(--ink-soft)}.q-form input{background:var(--card);border:1px solid var(--hairline);border-radius:12px;color:var(--ink);font-size:21px;font-weight:500;font-family:inherit;font-variant-numeric:tabular-nums;padding:11px 12px;width:100%;outline:none}.q-form input:focus{border-color:var(--staff);box-shadow:0 0 0 3px #1060f82e}#q-currency{background:var(--ink);color:var(--paper);border:none;border-radius:12px;font-size:17px;font-weight:700;font-family:inherit;min-height:48px;align-self:end}#q-currency:active{background:#2c2f36}.q-note{font-size:11px;color:var(--ink-soft);margin:0;text-align:center}@keyframes pulse{0%{transform:scale(1);opacity:1}70%{transform:scale(1.22);opacity:0}to{transform:scale(1.22);opacity:0}}@keyframes caret{0%,49%{opacity:1}50%,to{opacity:0}}@media (prefers-reduced-motion: reduce){.ptt.active .ptt-core:after{animation:none;opacity:1}.bubble.live .primary:after{animation:none}.ptt-core{transition:none}}
