:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#0b192b;background:#fcfafc;font-size:16px;--blue:#00a5f5;--ink:#00517e;--line:#7f8b9d}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,.button{cursor:pointer;border:0;border-radius:12px;background:#e2e5ea;color:#0b192b;padding:12px 20px;text-decoration:none;display:inline-flex;justify-content:center;align-items:center;min-height:46px}button:hover,.button:hover{filter:brightness(.96)}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #00517e;outline-offset:3px}input,select,textarea{border:1px solid #a4adba;border-radius:9px;padding:12px;background:white;max-width:100%;color:#0b192b}textarea{width:100%;min-height:170px;resize:vertical;line-height:1.6}h1{font-size:1.5rem;margin:0}h2{font-size:1.2rem}p{line-height:1.65}.primary{background:var(--blue);color:#071522}.muted{color:#606d7e;font-size:.9rem}.danger{color:#9c2535;background:#ffedf0}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:24px 0}.toolbar h1{flex:1;text-align:center}.page{max-width:960px;padding:0 22px 40px;margin:auto}.home{min-height:100dvh;max-width:800px;position:relative;margin:auto}.home-top{display:flex;justify-content:flex-end;gap:10px;padding:30px 24px}.home-top button{font-size:1.35rem}.home-menu{display:flex;align-items:center;flex-direction:column;gap:clamp(50px,10vh,100px);padding:60px 0}.home-menu button{font-size:clamp(3rem,9vw,4.6rem);background:var(--blue);color:black;border-radius:23px;min-width:220px;padding:13px 32px;box-shadow:0 2px 6px #0005;font-weight:400}.login{min-height:100dvh;display:grid;place-items:center;padding:24px}.login form{width:100%;max-width:380px;background:white;border:1px solid #e2e5ea;border-radius:20px;padding:32px;box-shadow:0 12px 50px #23354f09}.login h1{font-size:1.8rem;margin-bottom:28px}.field{display:grid;gap:8px;margin:18px 0}.login button{width:100%;margin-top:12px}.error{color:#a21d32;min-height:24px}.card{background:white;border:1px solid #d8dde5;border-radius:14px;padding:20px;margin:18px 0}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.file-label input{display:block;margin:12px 0;width:100%}.sentences{display:grid;gap:12px;margin:20px 0}.sentence{background:white;border:1px solid #bbc6d2;text-align:left;justify-content:flex-start;padding:20px;line-height:1.6}.sentence.selected{background:#e1f4ff;border:2px solid #008bcf}.searchbar{display:flex;gap:10px;align-items:center;margin:15px 0}.searchbar select{flex:1;min-width:0;font-size:1.3rem;font-weight:600}.searchbox input{width:100%;margin:5px 0 14px}.alphabet{display:grid;grid-template-columns:repeat(9,1fr);gap:6px;margin-bottom:15px}.alphabet button{padding:8px 0;min-height:40px;border-radius:6px}.alphabet button.active{background:var(--blue)}.grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-left:1px solid var(--line);border-top:1px solid var(--line)}.student{border-radius:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:white;display:flex;flex-direction:column;gap:12px;padding:20px 2px;min-height:120px;position:relative}.student:nth-child(10n+1),.student:nth-child(10n+2),.student:nth-child(10n+3),.student:nth-child(10n+4),.student:nth-child(10n+5){background:#edeef1}.student strong{font-family:Georgia,serif;font-size:2.2rem;line-height:1}.student span{font-weight:600;font-size:1.05rem;overflow-wrap:anywhere}.student.selected{background:#cbeaff!important;box-shadow:inset 0 0 0 2px #009fe9}.student.selected:after{content:'✓';position:absolute;right:5px;top:4px;color:#00517e;font-weight:800}.publishbar{position:sticky;bottom:0;display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fcfafcf5;padding:16px 0 calc(16px + env(safe-area-inset-bottom));border-top:1px solid #d8dde5;margin-top:20px}.selected-summary{line-height:1.6;margin:15px 0;overflow-wrap:anywhere}.scroll-list{max-height:330px;overflow:auto}.listrow{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid #eee}.listrow span{overflow-wrap:anywhere}.listrow button{font-size:.875rem;flex-shrink:0}.time-inputs{display:flex;gap:12px}.time-inputs .field{flex:1;min-width:0}.time-inputs input{width:100%}.tabs{display:flex;gap:10px;margin-top:25px}.tabs button.active{background:var(--blue)}.display{background:white;color:black;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:80px 4vw;text-align:center}.display .names{font-size:clamp(2rem,5vw,6.5rem);color:var(--ink);line-height:1.45;margin:0 0 10vh;overflow-wrap:anywhere;max-width:100%}.display .message{font-size:clamp(2.5rem,6vw,8rem);line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%;margin:0}.display .clock{font-size:clamp(3.5rem,15vw,20rem);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:500}.display .count-label{font-size:1.3rem;color:#5f6c79;margin-bottom:30px}.display-controls{position:fixed;z-index:2;right:12px;top:12px;display:flex;gap:8px;align-items:center}.display-controls button{font-size:.875rem;background:#f0f3f6b8;padding:8px 12px;min-height:38px}.display-controls .status{font-size:.8rem;color:#607084}.audio-gate{position:fixed;z-index:5;inset:0;background:#ffffffed;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:25px;text-align:center}.audio-gate button{font-size:1.6rem;padding:22px 40px;background:var(--blue)}.audio-gate p{color:#5a687a}.empty{text-align:center;color:#677484;padding:60px 15px;line-height:1.8}#toast{position:fixed;z-index:20;left:50%;bottom:30px;transform:translateX(-50%);padding:14px 22px;background:#14273b;color:white;border-radius:12px;max-width:90vw;width:max-content;box-shadow:0 3px 20px #0002;display:none}#toast.show{display:block}[hidden]{display:none!important}@media(max-width:520px){.page{padding:0 12px 24px}.toolbar{padding:18px 0}.toolbar button{padding:9px 13px}.toolbar h1{font-size:1.2rem}.home-top{padding:24px 18px}.home-top button{font-size:1.1rem}.home-menu{padding-top:48px;gap:75px}.home-menu button{min-width:190px;font-size:3.5rem}.student{min-height:92px;padding:16px 2px;gap:9px}.student strong{font-size:1.9rem}.student span{font-size:.85rem}.searchbar select{font-size:1rem;padding:12px 6px}.searchbar button{padding:12px 16px}.card{padding:16px}.display .names{margin-bottom:9vh}.display{padding:75px 5vw}.display-controls{gap:4px}.display-controls .status{max-width:70px}.time-inputs{gap:7px}.alphabet{gap:5px}}
