:root{--sky-50:#eef7fd;--sky-100:#dbeefa;--sky-200:#b9def5;--sky-300:#8ccbee;--sky-500:#2b9fe0;--sky-600:#1d86c4;--sky-700:#176d9f;--ink-900:#0f2744;--ink-700:#2b4a6b;--ink-500:#5b7490;--ink-300:#9fb1c3;--bg:#f4f8fb;--surface:#fff;--line:#dbe6ef;--line-soft:#e9f0f6;--ok:#15803d;--ok-bg:#e8f7ee;--warn:#9a5b00;--warn-bg:#fff6e5;--danger:#c62828;--danger-bg:#fdeeee;--radius:12px;--radius-sm:8px;--radius-lg:16px;--shadow-sm:0 1px 2px #0f27440f;--shadow:0 8px 24px -12px #0f274438;--focus:0 0 0 3px #2b9fe047;--control-h:40px;color:var(--ink-700);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:Pretendard Variable,Pretendard,Apple SD Gothic Neo,Malgun Gothic,system-ui,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(1100px 420px at 50% -160px, var(--sky-100), transparent 70%), var(--bg);min-height:100vh;margin:0;font-size:15px;line-height:1.55}h1,h2,h3{color:var(--ink-900);letter-spacing:-.01em;line-height:1.3}a{color:var(--sky-600);text-decoration:none}a:hover{text-decoration:underline}strong{color:var(--ink-900);font-weight:600}:focus-visible{box-shadow:var(--focus);outline:none}input,select,textarea,button{font:inherit;color:inherit}.auth-form input,.auth-form select,.auth-form textarea,.inline-form input,.inline-form select,.filters input,.filters select,.list-dock input,.row-input,.topbar-right select{background:var(--surface);border:1px solid var(--line);min-height:var(--control-h);color:var(--ink-900);border-radius:10px;padding:9px 12px;transition:border-color .15s,box-shadow .15s}.auth-form input:focus,.auth-form select:focus,.auth-form textarea:focus,.inline-form input:focus,.inline-form select:focus,.filters input:focus,.filters select:focus,.list-dock input:focus,.row-input:focus,.topbar-right select:focus{border-color:var(--sky-500);box-shadow:var(--focus);outline:none}input::placeholder,textarea::placeholder{color:var(--ink-300)}input:disabled,select:disabled,textarea:disabled{background:var(--bg);color:var(--ink-500)}input[type=checkbox],input[type=radio]{accent-color:var(--sky-500)}a.button,button.button,.auth-form button,.inline-form button,.page-head .button{min-height:var(--control-h);border:1px solid var(--sky-500);background:var(--sky-500);color:#fff;white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-sm);border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,transform 50ms;display:inline-flex}a.button:hover,button.button:hover,.auth-form button:hover,.inline-form button:hover{background:var(--sky-600);border-color:var(--sky-600);text-decoration:none}a.button:active,button.button:active,.auth-form button:active,.inline-form button:active{transform:translateY(1px)}.auth-form button:disabled,.inline-form button:disabled,button.button:disabled{opacity:.55;cursor:not-allowed;transform:none}.auth-form button.secondary,.inline-form button.secondary,button.button.secondary,a.button.secondary{background:var(--sky-50);border-color:var(--sky-200);color:var(--sky-700);box-shadow:none}.auth-form button.secondary:hover,.inline-form button.secondary:hover,button.button.secondary:hover{background:var(--sky-100);border-color:var(--sky-300)}.auth-form button.danger,button.button.danger{background:var(--danger);border-color:var(--danger)}.auth-form button.danger:hover{background:#a51f1f;border-color:#a51f1f}.button.inline{margin-left:12px}.link-button,.auth-form button.link-button,.inline-form button.link-button{font:inherit;color:var(--sky-600);cursor:pointer;min-height:0;box-shadow:none;background:0 0;border:none;border-radius:6px;margin:0;padding:4px 6px;font-weight:500;transition:background .15s;display:inline-block}.link-button:hover,.auth-form button.link-button:hover,.inline-form button.link-button:hover{background:var(--sky-50);text-decoration:none}.link-button:disabled{color:var(--ink-300);cursor:not-allowed;background:0 0}a.link-button{text-decoration:none}.link-button.muted{color:var(--ink-500)}.auth-links,.auth-note,.muted{color:var(--ink-500);font-size:.9rem}.small{font-size:.8rem}.form-error{color:var(--danger);margin:0;font-size:.9rem}p.form-error[role=alert]{background:var(--danger-bg);border-radius:var(--radius-sm);border:1px solid #f5c6c6;padding:8px 12px}.form-ok{color:var(--ok);font-size:.9rem}.warn{color:var(--warn);font-size:.9rem}.danger-text{margin-top:8px;color:var(--danger)!important}.pre{white-space:pre-wrap}.block{display:block}.narrow{max-width:420px}pre.small{background:var(--sky-50);border:1px solid var(--sky-100);color:var(--ink-900);border-radius:var(--radius-sm);max-width:100%;padding:10px 12px;font-size:.8rem;overflow-x:auto}.auth{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);max-width:420px;box-shadow:var(--shadow);margin:9vh auto 0;padding:32px 28px 28px}.auth:empty{box-shadow:none;background:0 0;border:none}.auth h1{align-items:center;gap:10px;min-height:2rem;margin:0 0 20px;font-size:1.45rem;font-weight:700;display:flex}.auth h2{color:var(--ink-700);margin:-8px 0 18px;font-size:1.05rem;font-weight:600}.auth-links{margin:18px 0 0}.auth-form{flex-direction:column;gap:14px;display:flex}.auth-form label{color:var(--ink-700);flex-direction:column;gap:6px;font-size:.88rem;font-weight:500;display:flex}.auth-form input,.auth-form select,.auth-form textarea{min-width:0;font-weight:400}.auth-form button{margin-top:4px}.auth-form.wide{max-width:720px}.auth-form fieldset{border:none;flex-direction:column;gap:14px;min-width:0;margin:0;padding:0;display:flex}.auth-form label.checks{flex-direction:row;align-items:center;gap:8px}.auth-form label.checks input{flex:none;width:20px;height:20px;min-height:0}.button-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}@media (width<=480px){.auth{margin-top:4vh;padding:24px 18px 22px}}.brand-mark{background:linear-gradient(135deg, var(--sky-300), var(--sky-600));color:#fff;letter-spacing:0;border-radius:9px;flex:none;place-items:center;width:30px;height:30px;font-size:.95rem;font-weight:800;display:inline-grid;box-shadow:inset 0 -2px #0f27441f}.auth>.brand-mark{border-radius:12px;width:42px;height:42px;margin-bottom:14px;font-size:1.25rem;display:grid}.academy-list{flex-direction:column;gap:8px;margin:0 0 8px;padding:0;list-style:none;display:flex}.academy-list a{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);color:inherit;justify-content:space-between;align-items:center;gap:8px;padding:14px 16px;text-decoration:none;transition:border-color .15s,background .15s;display:flex}.academy-list a:hover{border-color:var(--sky-300);background:var(--sky-50)}.academy-list a:after{content:"›";color:var(--ink-300);margin-left:4px;font-size:1.2rem;line-height:1}.academy-list-name{color:var(--ink-900);overflow-wrap:anywhere;flex:auto;min-width:0;font-weight:600}.shell{min-height:100vh}.topbar{z-index:20;-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--line);background:#ffffffeb;justify-content:space-between;align-items:center;gap:12px;padding:10px 20px;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:10px;min-width:0;display:flex}.brand{color:var(--ink-900);letter-spacing:-.01em;white-space:nowrap;font-weight:700}.topbar-right{align-items:center;gap:6px;min-width:0;display:flex}.topbar-right select{background:var(--sky-50);border-color:var(--sky-100);max-width:38vw;min-height:34px;color:var(--ink-900);border-radius:999px;padding:4px 10px;font-size:.9rem;font-weight:500}.topbar-right .link-button{white-space:nowrap;color:var(--ink-700);font-size:.92rem}.topbar-right .link-button:hover{color:var(--sky-700)}.menu-toggle{border:1px solid var(--line);background:var(--surface);min-height:34px;color:var(--ink-700);cursor:pointer;border-radius:999px;padding:4px 12px;font-weight:500;display:none}.menu{background:var(--surface);border-bottom:1px solid var(--line);scrollbar-width:none;gap:2px;padding:6px 16px;display:flex;overflow-x:auto}.menu::-webkit-scrollbar{display:none}.menu a{color:var(--ink-500);white-space:nowrap;border-radius:999px;padding:7px 12px;font-weight:500;text-decoration:none;transition:background .15s,color .15s}.menu a:hover{color:var(--ink-900);background:var(--bg);text-decoration:none}.menu a.active{color:var(--sky-700);background:var(--sky-100);font-weight:600}.banner{background:var(--warn-bg);color:var(--warn);border-bottom:1px solid #f3dfb8;align-items:center;gap:10px;margin:0;padding:10px 20px;font-size:.9rem;display:flex}.banner.trial{background:var(--sky-50);color:var(--sky-700);border-bottom-color:var(--sky-100)}.mobile-only{display:none}@media (width<=480px){.topbar{gap:8px;padding:8px 12px}.topbar-right{gap:4px;font-size:.85rem}}.page{max-width:1040px;margin:0 auto;padding:28px 20px 48px}.page h1{margin:0 0 4px;font-size:1.5rem;font-weight:700}.page h2{margin:32px 0 10px;font-size:1.05rem;font-weight:700}.page>p.muted:first-of-type{margin-top:0}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.page-head .button{font:inherit;border:1px solid var(--sky-500);cursor:pointer;font-weight:600}.page-footer{border-top:1px solid var(--line-soft);margin-top:40px;padding-top:16px}.tabs{background:var(--sky-50);border:1px solid var(--sky-100);scrollbar-width:none;border-radius:12px;gap:2px;max-width:100%;margin:14px 0;padding:4px;display:inline-flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tabs button{font:inherit;cursor:pointer;color:var(--ink-500);white-space:nowrap;background:0 0;border:none;border-radius:9px;padding:7px 14px;font-weight:500;transition:background .15s,color .15s,box-shadow .15s}.tabs button:hover{color:var(--ink-900)}.tabs button[aria-selected=true]{background:var(--surface);color:var(--ink-900);box-shadow:var(--shadow-sm);font-weight:600}.filters{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.filters input,.filters select{flex:140px;min-width:0;min-height:36px;padding:6px 10px;font-size:.92rem}.page-head .filters{margin-bottom:0}.page-head .filters input,.page-head .filters select{flex:0 auto}.inline-form{flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0;display:flex}.inline-form input{flex:200px;min-width:0}.inline-form select{min-width:0}.inline-form button{padding:0 14px}.rows{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin:0 0 24px;padding:0;list-style:none;overflow:hidden}.rows li{border-top:1px solid var(--line-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:13px 16px;transition:background .12s;display:flex}.rows li:first-child{border-top:none}.rows li:hover{background:#fafcfe}.rows li.muted{color:var(--ink-500);justify-content:center;padding:24px 16px}.rows li.row-error{background:var(--danger-bg)}.row-main{overflow-wrap:anywhere;min-width:0;line-height:1.5}.row-main a,.row-main>a strong,.row-main>.link-button strong{color:var(--ink-900)}.row-main .link-button{padding-left:0;padding-right:0}.row-main .link-button:hover{background:0 0;text-decoration:underline}.row-side{color:var(--ink-700);flex-wrap:wrap;align-items:center;gap:8px;font-size:.9rem;display:flex}.row-input{flex:160px;min-width:0;min-height:36px;padding:6px 10px}textarea.row-input.block{width:100%;min-height:120px;line-height:1.5}.editor{flex-basis:100%;margin-top:8px}.editor.card{background:var(--sky-50);border-color:var(--sky-100);box-shadow:none}.tag{background:var(--sky-50);border:1px solid var(--sky-100);color:var(--sky-700);vertical-align:middle;white-space:nowrap;border-radius:999px;align-items:center;padding:1px 8px;font-size:.74rem;font-weight:600;line-height:1.5;display:inline-flex}.tag.danger-text{background:var(--danger-bg);border-color:#f5c6c6;margin-top:0}.switch{white-space:nowrap;color:var(--ink-700);cursor:pointer;align-items:center;gap:8px;font-size:.9rem;display:inline-flex}.switch input{appearance:none;background:var(--ink-300);cursor:pointer;border-radius:999px;flex:none;width:38px;height:22px;margin:0;transition:background .2s;position:relative}.switch input:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0f274440}.switch input:checked{background:var(--sky-500)}.switch input:checked:before{transform:translate(16px)}.switch input:disabled{opacity:.5;cursor:not-allowed}.switch input:focus-visible{box-shadow:var(--focus)}.checks{flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:.92rem;display:flex}.checks label{align-items:center;gap:6px;flex-direction:row!important}.checks input[type=checkbox],.checks input[type=radio]{width:17px;height:17px;margin:0}fieldset.checks{border:none;margin:14px 0;padding:0}fieldset.checks legend{color:var(--ink-900);margin-bottom:6px;padding:0;font-weight:600}.grid2,.grid3{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;gap:10px;padding:16px;display:flex}.card .rows{box-shadow:none;margin-bottom:0}.steps li{margin-bottom:12px}.kpis{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin:16px 0;display:grid}.kpi{border:1px solid var(--line);box-shadow:var(--shadow-sm);color:inherit;background:linear-gradient(#fff 0%,#f8fbfe 100%);border-radius:14px;flex-direction:column;gap:2px;min-width:0;padding:16px 18px 14px;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex;position:relative;overflow:hidden}.kpi:before{content:"";background:linear-gradient(180deg, var(--sky-300), var(--sky-500));width:4px;position:absolute;inset:0 auto 0 0}.kpi:hover{box-shadow:var(--shadow);border-color:var(--sky-200);text-decoration:none;transform:translateY(-2px)}.kpi>.muted:first-child{color:var(--ink-500);font-size:.82rem;font-weight:600}.kpi strong{color:var(--sky-700);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.65rem;font-weight:700;line-height:1.2}.kpi .small{overflow-wrap:anywhere;font-size:.8rem}@media (width<=480px){.kpis{grid-template-columns:1fr 1fr;gap:8px}.kpi{padding:12px 14px}.kpi strong{font-size:1.35rem}}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);max-width:100%;box-shadow:var(--shadow-sm);margin-bottom:16px;overflow-x:auto}.stats-table{border-collapse:collapse;background:var(--surface);font-variant-numeric:tabular-nums;width:100%;font-size:.9rem}.stats-table th,.stats-table td{border-bottom:1px solid var(--line-soft);text-align:right;white-space:nowrap;padding:10px 14px}.stats-table th{background:var(--sky-50);color:var(--ink-500);font-size:.8rem;font-weight:600}.stats-table tbody tr:last-child td{border-bottom:none}.stats-table tbody tr:hover td{background:#fafcfe}.stats-table th:first-child,.stats-table td:first-child{text-align:left;color:var(--ink-900)}.stats-table.text-table th,.stats-table.text-table td{text-align:left;white-space:normal;min-width:7em}.receipt-table{border-collapse:collapse;width:100%;max-width:480px;margin:8px 0}.receipt-table td,.receipt-table th{border-bottom:1px solid var(--line);text-align:left;padding:8px 4px}.receipt-table td+td,.receipt-table th+th{text-align:right;font-variant-numeric:tabular-nums}.list-dock{gap:8px;margin-bottom:8px;display:flex}.list-dock input{flex:200px;min-width:0;min-height:36px;padding:6px 12px}@media (width<=767px){.menu-toggle{display:inline-block}.desktop-only{display:none!important}.menu{box-shadow:var(--shadow);flex-direction:column;gap:2px;padding:8px;display:none;overflow:visible}.menu.open{display:flex}.menu a,.menu .mobile-only{text-align:left;font:inherit;color:var(--ink-700);border-radius:10px;padding:11px 14px;font-weight:500;display:block}.menu a.active{color:var(--sky-700);background:var(--sky-100);font-weight:600}.menu .link-button.mobile-only{width:100%}.dock{z-index:10;padding:10px 16px calc(10px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line);background:#fffffff0;gap:8px;margin:0;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 24px -16px #0f274440}.dock>*{flex:auto;min-width:0}.dock .mobile-only{flex:none;display:flex}.dock .button{align-items:center;display:flex}.dock input{min-height:var(--control-h)}.page{padding:20px 16px 104px}.page h1{font-size:1.3rem}}.kiosk{touch-action:manipulation;-webkit-user-select:none;user-select:none;background:var(--surface);flex-direction:column;align-items:center;gap:2vh;height:100dvh;padding:2vh 16px;display:flex;overflow:hidden}.kiosk-head{width:100%;color:var(--ink-500);justify-content:space-between;font-size:1.1rem;display:flex}.kiosk-display{letter-spacing:.4em;min-height:1.4em;color:var(--ink-900);font-variant-numeric:tabular-nums;font-size:clamp(1.6rem,5vh,3rem)}.keypad{grid-template-columns:repeat(3,1fr);gap:1.5vh;width:min(90vw,62vh);display:grid}.keypad button,.kiosk-actions button{min-width:64px;height:min(13vh,22vw);min-height:64px;color:var(--ink-900);border:1px solid var(--line);background:var(--bg);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:16px;font-size:clamp(1.5rem,5vh,2.6rem);font-weight:600}.keypad button:active,.kiosk-actions button:active{background:var(--sky-100)}.keypad button.primary,.kiosk-actions button.primary{background:var(--sky-500);color:#fff;border-color:var(--sky-500)}.keypad button:disabled{opacity:.4}.kiosk-confirm{text-align:center;font-size:clamp(1.2rem,3.5vh,2rem)}.kiosk-name{color:var(--ink-900);margin:2vh 0;font-size:clamp(2.4rem,9vh,5rem);font-weight:700}.kiosk-actions{justify-content:center;gap:3vw;display:flex}.kiosk-actions button{min-width:30vw}.kiosk-done{text-align:center;color:var(--sky-700);margin-top:20vh;font-size:clamp(1.6rem,6vh,3rem)}.pair-code{letter-spacing:.15em;font-variant-numeric:tabular-nums;color:var(--ink-900);font-size:2rem;font-weight:700}.kiosk-install{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;width:100%;font-size:.95rem;display:flex}.kiosk-install button{border:1px solid var(--line);background:var(--bg);cursor:pointer;border-radius:12px;min-height:44px;padding:0 18px;font-size:1rem}.kiosk-install button.primary{background:var(--sky-500);border-color:var(--sky-500);color:#fff}.kiosk-clock{color:var(--ink-900);font-variant-numeric:tabular-nums;font-size:clamp(1.2rem,3.5vh,1.8rem);font-weight:700}.kiosk-help{text-align:center;color:var(--ink-700,var(--ink-900));font-size:1.1rem}.kiosk-pair{-webkit-user-select:text;user-select:text;flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.kiosk-pair input{letter-spacing:.15em;text-transform:uppercase;text-align:center;border:1px solid var(--line);border-radius:14px;width:min(80vw,12ch);min-height:64px;font-size:clamp(1.6rem,5vh,2.4rem)}.kiosk-pair button{border:1px solid var(--sky-500);background:var(--sky-500);color:#fff;cursor:pointer;border-radius:14px;min-width:120px;min-height:64px;font-size:1.4rem;font-weight:600}.kiosk-pair button:disabled{opacity:.4}.roll li{flex-wrap:nowrap}.roll-name{overflow-wrap:anywhere;flex:auto;min-width:0}.roll-buttons{flex:none;align-items:center;gap:4px;display:flex}.roll-buttons button:not(.link-button){font:inherit;border:1px solid var(--line);background:var(--surface);min-width:40px;min-height:40px;color:var(--ink-700);cursor:pointer;border-radius:10px;padding:0 8px;font-size:.85rem;font-weight:500;transition:background .12s,color .12s}.roll-buttons button.on{background:var(--sky-500);color:#fff;border-color:var(--sky-500)}.roll-buttons button.on.prefill{background:var(--sky-100);color:var(--sky-700);border-color:var(--sky-200)}@media print{.topbar,.menu,.banner,.ptop,.ptabs,.no-print{display:none!important}body{background:#fff}.rows,.card,.table-wrap{box-shadow:none}}.pshell{flex-direction:column;min-height:100vh;display:flex}.ptop{z-index:20;-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--line);background:#ffffffeb;align-items:center;gap:10px;padding:12px 18px;display:flex;position:sticky;top:0}.ppage{width:100%;max-width:640px;padding:20px 16px calc(88px + env(safe-area-inset-bottom));flex:auto;margin:0 auto}.ppage h1{margin:0 0 4px;font-size:1.3rem;font-weight:700}.ppage h2{margin:24px 0 8px;font-size:1rem;font-weight:700}.ptabs{z-index:10;padding:6px 8px calc(6px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line);background:#fffffff0;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.ptabs a{text-align:center;color:var(--ink-500);border-radius:10px;padding:10px 4px;font-size:.85rem;font-weight:600;text-decoration:none;display:block}.ptabs a.active{color:var(--sky-700);background:var(--sky-100)}.pinstall{background:var(--sky-50);border-color:var(--sky-100);box-shadow:none;margin:12px 0 4px}.pinstall .button{align-self:flex-start}.pinstall .link-button{align-self:flex-end;padding:0}.steps{margin:4px 0 0;padding-left:20px}.tag.tag-ok{background:var(--ok-bg);color:var(--ok);border-color:#bfe6cc}.qr-card{text-align:center;flex-basis:100%;align-items:center}.qr-card img{border-radius:8px}.msg-tabs a{text-decoration:none}.msg-tabs a span{color:var(--ink-500);white-space:nowrap;border-radius:9px;padding:7px 14px;font-weight:500;display:inline-block}.msg-tabs a span[aria-selected=true]{background:var(--surface);color:var(--ink-900);box-shadow:var(--shadow-sm);font-weight:600}.journal-rows li{display:block}.journal-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.journal-fields{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.journal-fields input{min-width:0}@media (width<=720px){.journal-fields{grid-template-columns:1fr 1fr}}.chat-page{max-width:1100px}.chat{grid-template-columns:320px minmax(0,1fr);align-items:start;gap:16px;display:grid}.chat-list input[type=search]{width:100%;font:inherit;border:1px solid var(--line);background:var(--surface);border-radius:10px;min-height:38px;margin-bottom:8px;padding:8px 12px}.chat-list input[type=search]:focus{border-color:var(--sky-500);box-shadow:var(--focus);outline:none}.chat-list .rows{max-height:calc(100vh - 300px);margin-bottom:0;overflow-y:auto}.chat-list .rows li{padding:0}.chat-list .rows li.selected{background:var(--sky-50)}.thread-link{width:100%;color:inherit;justify-content:space-between;gap:8px;padding:12px 14px;text-decoration:none;display:flex}.thread-link:hover{text-decoration:none}.thread-link .row-main{flex:auto}.thread-preview{text-overflow:ellipsis;white-space:nowrap;max-width:230px;display:block;overflow:hidden}.badge{background:var(--sky-500);color:#fff;text-align:center;vertical-align:middle;border-radius:999px;min-width:18px;margin-left:6px;padding:0 6px;font-size:.72rem;font-weight:700;line-height:18px;display:inline-block}.chat-main{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-width:0;box-shadow:var(--shadow-sm);flex-direction:column;min-height:480px;display:flex}.chat-blank{justify-content:center;align-items:center}.chat-head{border-bottom:1px solid var(--line-soft);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px;display:flex}.chat-filters{gap:6px 10px;margin:0 0 8px}.chat-filters select{flex:110px;min-height:32px;padding:4px 8px;font-size:.85rem}.chat-filters .checks{white-space:nowrap;gap:4px;font-size:.82rem}.chat-filters input[type=checkbox]{flex:none;width:16px;height:16px;min-height:0}.star{color:#e0a100;margin-right:4px}.star-btn{font:inherit;cursor:pointer;color:var(--ink-300);background:0 0;border:none;padding:0 2px;font-size:1.2rem;line-height:1}.star-btn.on{color:#e0a100}.chat-head-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.chat-head-actions select{font:inherit;border:1px solid var(--line);background:var(--surface);border-radius:8px;min-height:32px;padding:4px 8px;font-size:.85rem}.chat-pane{flex-direction:column;flex:auto;min-height:0;display:flex}.chat-tabs{margin:10px 12px 0}.chat-msgs{background:var(--bg);flex:auto;min-height:240px;max-height:calc(100vh - 360px);padding:12px 16px;overflow-y:auto}.chat-main .chat-msgs{border-radius:0}.chat-empty{text-align:center;margin:40px 0}.chat-day{text-align:center;color:var(--ink-500);margin:12px 0 8px;font-size:.75rem}.bubble-row{align-items:flex-end;gap:6px;margin:4px 0;display:flex}.bubble-row.mine{flex-direction:row-reverse}.bubble{background:var(--surface);border:1px solid var(--line);max-width:min(78%,520px);color:var(--ink-900);overflow-wrap:anywhere;border-radius:14px 14px 14px 4px;flex-direction:column;gap:2px;padding:8px 12px;line-height:1.5;display:flex}.bubble.mine{background:var(--sky-500);border-color:var(--sky-500);color:#fff;border-radius:14px 14px 4px}.bubble.system{background:var(--sky-50);border-color:var(--sky-100);color:var(--ink-700);border-radius:10px;align-self:center;max-width:100%}.bubble-sender{color:var(--ink-500);font-size:.75rem;font-weight:600}.bubble-tag{align-self:flex-start}.bubble.mine .bubble-tag{color:#fff;background:#fff3;border-color:#0000}.bubble-meta{color:var(--ink-300);white-space:nowrap;flex-direction:column;align-items:flex-start;font-size:.7rem;display:flex}.bubble-row.mine .bubble-meta{align-items:flex-end}.bubble-meta .read{color:var(--sky-600);font-weight:600}.bubble-meta .unread{color:var(--ink-300)}.chat-compose{padding:10px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line-soft);background:var(--surface);grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.chat-compose select{font:inherit;border:1px solid var(--line);background:var(--surface);border-radius:10px;grid-column:1/-1;justify-self:start;padding:6px 10px}.chat-compose textarea{font:inherit;border:1px solid var(--line);resize:none;border-radius:10px;min-height:44px;padding:9px 12px;line-height:1.5}.compose-row{align-items:flex-end;gap:6px;min-width:0;display:flex}.compose-row textarea{flex:auto;min-width:0}.icon-btn{font:inherit;border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink-700);cursor:pointer;white-space:nowrap;border-radius:10px;padding:0 10px;font-size:.85rem;font-weight:600}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.compose-previews{flex-wrap:wrap;grid-column:1/-1;gap:8px;display:flex}.compose-preview{width:64px;height:64px;position:relative}.compose-preview img{object-fit:cover;border:1px solid var(--line);border-radius:8px;width:100%;height:100%}.compose-preview button{background:var(--ink-700);color:#fff;cursor:pointer;border:none;border-radius:50%;width:20px;height:20px;font-size:.8rem;line-height:20px;position:absolute;top:-6px;right:-6px}.photos{gap:4px;margin-top:4px;display:grid}.photos.many{grid-template-columns:1fr 1fr}.photo img{object-fit:cover;background:var(--bg);border-radius:10px;width:100%;max-width:260px;max-height:260px;display:block}.photos.many .photo img{max-width:130px;height:130px}.chat-compose textarea:focus{border-color:var(--sky-500);box-shadow:var(--focus);outline:none}.chat-compose .button{font:inherit;border:none;align-self:end;font-weight:600}.chat-compose .form-error{grid-column:1/-1}.chat-tools{border-top:1px solid var(--line-soft);background:var(--surface);padding:8px 12px 0}.chat-tools .button.secondary.on{background:var(--sky-100);border-color:var(--sky-300)}.chat-tools .card{margin-top:8px}.report-form label{color:var(--ink-700);flex-direction:column;gap:4px;font-size:.85rem;font-weight:500;display:flex}.report-form input{font:inherit;border:1px solid var(--line);border-radius:8px;min-height:36px;padding:8px 10px}.quick-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.quick-row>.link-button:first-child{text-align:left;color:var(--ink-900);white-space:normal;flex:auto;padding:4px 6px}.quick-replies .inline-form{margin:4px 0 0}.report-tag{background:var(--ok-bg);color:var(--ok);border-color:#bfe6cc}.bubble.mine .report-tag{color:#fff;background:#fff3;border-color:#0000}.kind-tag{background:var(--sky-50);border-color:var(--sky-200);color:var(--sky-700)}.report-body{font-variant-numeric:tabular-nums}.ppage .chat-pane{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.ppage .chat-msgs{max-height:55vh}@media (width<=767px){.chat{grid-template-columns:1fr}.chat.has-pane .chat-list{display:none}.chat-list .rows{max-height:none}.chat-main{min-height:0}.chat-msgs{max-height:calc(100vh - 330px)}.thread-preview{max-width:60vw}}.bubble-meta .batch-link{color:var(--sky-600);text-decoration:none}.bubble-meta .batch-link:hover{text-decoration:underline}.tag.tag-warn{color:#8a5a00;background:#fff4e0;border-color:#f3d9a4}.dialog-backdrop{z-index:50;background:#0f274459;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);border-radius:var(--radius-lg);width:min(560px,100%);max-height:calc(100vh - 32px);padding:20px;overflow-y:auto;box-shadow:0 12px 40px #0f274440}.chat-more{text-align:center;margin:0 0 8px}.child-tabs{z-index:9;background:var(--bg,#f4f8fb);border-bottom:1px solid var(--line);gap:6px;padding:8px 16px;display:flex;position:sticky;top:0;overflow-x:auto}.child-tabs button{border:1px solid var(--line);color:var(--ink-500);background:#fff;border-radius:999px;flex:none;padding:6px 14px;font-size:.9rem;font-weight:600}.child-tabs button[aria-selected=true]{background:var(--sky-500);border-color:var(--sky-500);color:#fff}.child-tabs .badge{margin-left:6px}.onboard-step{gap:10px;margin-bottom:12px}.onboard-step .button{align-self:flex-start}.qr-card .invite-url{width:100%;color:var(--ink-500);background:var(--sky-50);border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:.8rem}.rows li.class-item{display:block}.class-line{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.class-line .row-main{flex:auto}.fold{border:1px solid var(--line);background:var(--bg);width:32px;height:32px;color:var(--ink-700);cursor:pointer;border-radius:8px;flex:none}.class-item.open .fold{background:var(--sky-100)}.class-roster{border-left:3px solid var(--sky-100);margin:10px 0 2px 44px;padding:0;list-style:none}.class-roster li{border-top:1px solid var(--line-soft);grid-template-columns:minmax(6rem,1fr) minmax(6rem,1fr) 1.2fr 1.6fr 1.6fr auto;align-items:center;gap:4px 12px;padding:7px 12px;font-size:.92rem;display:grid}.class-roster li:first-child{border-top:none}.roster-name{align-items:center;gap:6px;display:flex}.roster-fee{text-align:right;font-variant-numeric:tabular-nums}@media (width<=860px){.class-roster{margin-left:8px}.class-roster li{grid-template-columns:1fr auto}.class-roster li>.muted{grid-column:1/-1}.roster-fee{grid-area:1/2}}.tt-scroll{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin:8px 0;overflow-x:auto}.tt{min-width:640px;display:grid}.tt-corner,.tt-day{text-align:center;background:var(--bg);border-bottom:1px solid var(--line);padding:8px 4px;font-weight:600;position:sticky;top:0}.tt-hours,.tt-col{margin:10px 0;position:relative}.tt-col{border-left:1px solid var(--line-soft)}.tt-hours span{color:var(--ink-500);font-variant-numeric:tabular-nums;font-size:.75rem;position:absolute;right:6px;transform:translateY(-50%)}.tt-line{border-top:1px dashed var(--line-soft);position:absolute;left:0;right:0}.tt-block{color:var(--ink-900);border:1px solid;border-left-width:4px;border-radius:8px;flex-direction:column;gap:1px;padding:4px 6px;font-size:.78rem;line-height:1.25;text-decoration:none;display:flex;position:absolute;overflow:hidden}.tt-block:hover{filter:brightness(.97);z-index:1}.tt-block strong{font-size:.85rem}.tt-legend{color:var(--ink-700);flex-wrap:wrap;gap:6px 14px;font-size:.85rem;display:flex}.tt-legend i{vertical-align:-1px;border:1px solid;border-radius:3px;width:12px;height:12px;margin-right:5px;display:inline-block}.tt-input{flex-wrap:wrap}.tt-input input{width:min(22rem,70vw)}.tt-block>*{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bank-pick{flex-wrap:wrap}.bank-pick select{max-width:min(26rem,90vw)}
