:root{--green:#174c3c;--green2:#2f7967;--cream:#f4eee3;--paper:#fffdf8;--ink:#24322d;--muted:#6e7973;--gold:#c79c50;--orange:#db7340;--red:#a84238;--line:#ddd2c1;--shadow:0 20px 55px rgba(42,51,46,.14)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#eae4da;color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",sans-serif}button,input,select,textarea{font:inherit}.appbar{position:sticky;top:0;z-index:20;height:76px;padding:0 28px;display:flex;align-items:center;justify-content:space-between;background:rgba(255,253,248,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:12px}.logo{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:var(--green);color:#fff;font:900 19px "Songti SC",serif}.logo.large{width:72px;height:72px;margin:auto;font-size:32px}.brand b,.brand small,.mobile-header b,.mobile-header small{display:block}.brand b{font-size:14px;letter-spacing:.08em}.brand small,.mobile-header small{margin-top:3px;color:var(--gold);font:700 8px Georgia,serif;letter-spacing:.15em}.brand.inverse b{color:#fff}.appbar-actions{display:flex;align-items:center;gap:14px}.status-dot{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:10px}.status-dot:before{content:"";width:7px;height:7px;border-radius:50%;background:#dba340;box-shadow:0 0 0 4px rgba(219,163,64,.12)}.status-dot.online:before{background:#3fa071;box-shadow:0 0 0 4px rgba(63,160,113,.12)}.link-button,.text-button{border:0;background:none;color:var(--green);cursor:pointer;font-weight:800}.teacher-shell{width:min(1380px,calc(100% - 32px));margin:22px auto 70px}.auth-card{width:min(520px,100%);margin:9vh auto;padding:42px;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.eyebrow{margin:0;color:var(--gold);font:800 10px Georgia,serif;letter-spacing:.18em}.auth-card h1{margin:15px 0 8px;font:900 34px "Songti SC",serif}.auth-card>p:not(.eyebrow){color:var(--muted);font-size:12px;line-height:1.75}.auth-card form{margin-top:28px}.auth-card>small,.mobile-card>small{display:block;margin-top:14px;color:#929894;font-size:9px}.room-hero{padding:34px 40px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#173f35,#28614f);color:#fff;border-radius:16px;box-shadow:var(--shadow)}.room-hero h1{margin:12px 0 8px;font:900 34px "Songti SC",serif}.room-code{font-size:11px;color:#c8d8d1}.room-code strong{margin-left:8px;color:#f0c672;font:700 26px Georgia,serif;letter-spacing:.16em}.room-links{display:flex;gap:10px}.teacher-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.panel{padding:26px;background:var(--paper);border:1px solid var(--line);border-radius:13px;box-shadow:0 8px 25px rgba(50,55,52,.06)}.panel.span-2{grid-column:1/-1}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.panel-head small{color:var(--gold);font:800 8px Georgia,serif;letter-spacing:.15em}.panel-head h2{margin:4px 0 0;font:900 23px "Songti SC",serif}.panel-head>div:last-child{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}label{display:block;margin:14px 0;color:#49564f;font-size:11px;font-weight:800}input,select,textarea{width:100%;margin-top:7px;padding:12px 13px;border:1px solid #cfc3b1;border-radius:7px;background:#fff;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 4px rgba(23,76,60,.08)}textarea{resize:vertical;line-height:1.6}.check-line{display:flex;align-items:center;gap:8px}.check-line input{width:auto;margin:0}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 20px;border:0;border-radius:7px;text-decoration:none;cursor:pointer;font-weight:900;font-size:11px;letter-spacing:.03em;transition:.18s}.button:hover{transform:translateY(-1px)}.button:disabled{opacity:.42;cursor:not-allowed;transform:none}.button.primary{width:100%;margin-top:14px;background:var(--green);color:#fff}.button.accent{width:100%;margin-top:12px;background:var(--orange);color:#fff}.button.light{background:#fff;color:var(--green)}.button.outline,.button.ghost{border:1px solid var(--green);background:transparent;color:var(--green)}.room-hero .button.outline{border-color:rgba(255,255,255,.55);color:#fff}.button.small{min-height:34px;padding:0 13px;font-size:9px;background:var(--green);color:#fff}.button.small.outline{background:transparent;color:var(--green);border:1px solid var(--green)}.button.danger{background:var(--red)}.attendance-summary{display:flex;align-items:baseline;gap:8px;padding:16px;background:#edf4f0;border-radius:9px}.attendance-summary strong{color:var(--green);font:700 36px Georgia,serif}.attendance-summary span{font-size:11px;font-weight:800}.attendance-summary b{margin-left:auto;color:var(--orange);font-size:10px}.participant-list{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:15px;max-height:285px;overflow:auto}.participant-card{padding:11px 12px;border:1px solid var(--line);border-radius:7px;background:#fff}.participant-card b{display:block;font-size:11px}.participant-card span{display:block;margin-top:4px;color:var(--muted);font-size:8px}.participant-card.late{border-left:3px solid var(--orange)}.empty{color:#929994;font-size:11px;line-height:1.7}.call-result{min-height:120px;margin-top:15px;display:grid;place-content:center;text-align:center;border:1px dashed #c7baa6;border-radius:10px;background:#faf6ee;color:var(--muted)}.call-result strong{display:block;color:var(--green);font:900 30px "Songti SC",serif}.call-result span{display:block;margin-top:7px;font-size:10px}.current-activity{padding:20px;border-radius:10px;background:#f6f0e6}.current-activity h3{margin:0 0 10px;font:900 21px "Songti SC",serif}.activity-stats{display:flex;gap:20px}.activity-stats div{padding-right:20px;border-right:1px solid var(--line)}.activity-stats strong{display:block;color:var(--orange);font:700 27px Georgia,serif}.activity-stats span{font-size:9px;color:var(--muted)}.analysis-preview{margin-top:16px}.analysis-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.analysis-card{padding:17px;border:1px solid var(--line);border-radius:8px;background:#fff}.analysis-card h4{margin:0 0 10px;font-size:12px}.bar-row{display:grid;grid-template-columns:85px 1fr 42px;align-items:center;gap:8px;margin:8px 0;font-size:9px}.bar{height:8px;border-radius:99px;background:#eee6d9;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--green2),var(--gold));border-radius:99px}.keyword-list{display:flex;flex-wrap:wrap;gap:8px}.keyword-list span{padding:6px 9px;border-radius:99px;background:#edf4f0;color:var(--green);font-size:9px}.landing{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 10%,#fff8e8,transparent 40%),#e7e1d6}.landing-card{width:min(460px,calc(100% - 32px));padding:48px;text-align:center;background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.landing-card h1{margin:15px 0 8px;font:900 44px "Songti SC",serif}.landing-card p:not(.eyebrow){color:var(--muted);font-size:13px}.landing-card .button{width:100%;margin-top:12px}.mobile-header{height:68px;padding:0 16px;display:flex;align-items:center;gap:10px;background:var(--paper);border-bottom:1px solid var(--line)}.mobile-header .logo{width:38px;height:38px}.mobile-header .status-dot{margin-left:auto}.mobile-shell{width:min(560px,100%);margin:0 auto;padding:24px 14px 60px}.mobile-card{padding:28px 22px;background:var(--paper);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 36px rgba(50,55,52,.09)}.mobile-card h1{margin:15px 0 10px;font:900 29px/1.4 "Songti SC",serif}.mobile-card>p:not(.eyebrow){color:var(--muted);font-size:12px;line-height:1.75}.mobile-card.centered{text-align:center}.success-mark{width:72px;height:72px;margin:5px auto 20px;display:grid;place-items:center;border-radius:50%;background:#e6f3ec;color:var(--green);font-size:34px}.pulse-dots{display:flex;justify-content:center;gap:7px;margin-top:28px}.pulse-dots i{width:8px;height:8px;border-radius:50%;background:var(--green);animation:pulse 1.2s infinite}.pulse-dots i:nth-child(2){animation-delay:.2s}.pulse-dots i:nth-child(3){animation-delay:.4s}@keyframes pulse{0%,100%{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.question-meta{display:flex;justify-content:space-between;color:var(--gold);font-size:9px;font-weight:900}.answer-options{display:grid;gap:9px;margin:22px 0}.answer-option{position:relative}.answer-option input{position:absolute;opacity:0;width:1px;height:1px}.answer-option label{margin:0;padding:15px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer}.answer-option input:checked+label{border-color:var(--green);background:#eaf3ee;color:var(--green)}.scale-buttons{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:22px 0}.scale-buttons input{position:absolute;opacity:0}.scale-buttons label{margin:0;min-height:58px;display:grid;place-content:center;text-align:center;border:1px solid var(--line);border-radius:8px;font:700 20px Georgia,serif}.scale-buttons input:checked+label{background:var(--green);color:#fff}.toast{position:fixed;left:50%;bottom:25px;z-index:100;transform:translate(-50%,20px);padding:11px 18px;border-radius:99px;background:#20332a;color:#fff;font-size:10px;opacity:0;pointer-events:none;transition:.22s}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:var(--red)}
.screen-page{min-height:100vh;background:#102f27;overflow:hidden}.screen-stage{width:100vw;min-height:100vh;aspect-ratio:16 / 9;position:relative;background:radial-gradient(circle at 70% 20%,rgba(237,191,104,.12),transparent 30%),linear-gradient(145deg,#11382e,#1d5142);color:#fff}.screen-header{position:absolute;z-index:10;left:0;right:0;top:0;height:88px;padding:0 44px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.12)}.screen-code{display:flex;align-items:center;gap:12px;color:#c4d4cc;font-size:12px}.screen-code strong{color:#f1c874;font:700 28px Georgia,serif;letter-spacing:.13em}.screen-header .status-dot{color:#c4d4cc;margin-left:18px}.stage{position:absolute;inset:88px 0 0;display:none;padding:5vh 6vw}.stage.active{display:flex}.sign-copy{flex:1;display:flex;flex-direction:column;justify-content:center}.sign-copy h1{margin:24px 0;font:900 clamp(48px,5.5vw,82px)/1.18 "Songti SC",serif}.sign-copy h1 em{font-style:normal;color:#efc56f}.big-count{display:flex;align-items:baseline;gap:13px}.big-count strong{color:#efc56f;font:700 84px Georgia,serif}.big-count span{color:#c9d8d1;font-size:15px}.qr-card{align-self:center;width:min(31vw,430px);padding:25px;text-align:center;background:#fff;color:var(--ink);border-radius:18px;box-shadow:0 26px 60px rgba(0,0,0,.25)}.qr-card img{display:block;width:100%;aspect-ratio:1;object-fit:contain}.qr-card p{margin:12px 0 6px;font-size:13px}.qr-card b{color:var(--green);font:700 27px Georgia,serif;letter-spacing:.14em}.participant-dots{display:flex;flex-wrap:wrap;gap:8px;max-width:650px;margin-top:20px}.participant-dots i{width:15px;height:15px;border-radius:50%;background:#57a988;box-shadow:0 0 12px rgba(87,169,136,.5);animation:arrive .4s both}@keyframes arrive{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}#rollCallStage{align-items:center;justify-content:center;flex-direction:column;text-align:center}.called-name{margin:35px 0 18px;padding:25px 75px;border:1px solid rgba(255,255,255,.2);border-radius:18px;background:rgba(255,255,255,.08);color:#efc56f;font:900 clamp(60px,8vw,120px) "Songti SC",serif;box-shadow:0 25px 60px rgba(0,0,0,.18)}#calledGroup{color:#c8d8d1;font-size:18px}.question-column{width:62%;display:flex;flex-direction:column;justify-content:center}.question-column h1{margin:24px 0;font:900 clamp(38px,4.2vw,67px)/1.45 "Songti SC",serif}.screen-options{display:flex;flex-wrap:wrap;gap:10px}.screen-options span{padding:11px 16px;border:1px solid rgba(255,255,255,.22);border-radius:8px;color:#d6e2dc;font-size:12px}.answer-live{width:38%;display:flex;flex-direction:column;justify-content:center;align-items:center}.progress-ring{width:min(23vw,310px);height:min(23vw,310px);display:grid;place-content:center;text-align:center;border:2px solid rgba(255,255,255,.18);border-radius:50%;box-shadow:inset 0 0 0 18px rgba(255,255,255,.035),0 0 0 1px rgba(239,197,111,.25)}.progress-ring strong{color:#efc56f;font:700 clamp(62px,7vw,100px) Georgia,serif}.progress-ring span{font-size:13px;color:#c6d7cf}.answer-live>p{color:#c6d7cf}.answer-live>p b{color:#fff}.answer-particles{width:100%;height:90px;position:relative}.answer-particles i{position:absolute;width:11px;height:11px;border-radius:50%;background:#efc56f;animation:float 3s ease-in-out infinite}@keyframes float{0%,100%{transform:translateY(10px);opacity:.35}50%{transform:translateY(-18px);opacity:1}}#analysisStage{display:none;flex-direction:column}#analysisStage.active{display:flex}.analysis-heading h1{margin:12px 0 5px;font:900 44px "Songti SC",serif}.analysis-heading>p:last-child{color:#c9d7d1;font-size:15px}.screen-analysis{flex:1;display:grid;grid-template-columns:1.1fr .9fr;gap:22px;margin-top:24px;min-height:0}.screen-analysis>article{padding:24px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:14px;overflow:auto}.screen-analysis h2{margin:0 0 18px;font:900 24px "Songti SC",serif}.screen-analysis .bar-row{grid-template-columns:130px 1fr 55px;font-size:12px}.screen-analysis .bar{background:rgba(255,255,255,.12)}.screen-analysis .keyword-list span{background:rgba(255,255,255,.1);color:#fff;font-size:12px}.quote-card{margin:10px 0;padding:13px 15px;border-left:3px solid #efc56f;background:rgba(255,255,255,.06);font-size:12px;line-height:1.6}.cluster-card{margin:9px 0;padding:12px;border:1px solid rgba(255,255,255,.13);border-radius:8px}.cluster-card b{color:#efc56f}.analysis-heading+footer,#analysisStage footer{margin-top:12px;color:#b8c9c1;font-size:10px;text-align:center}#waitingStage{align-items:center;justify-content:center;flex-direction:column;text-align:center}#waitingStage h1{margin:18px 0 8px;font:900 54px "Songti SC",serif}#waitingStage>p:last-child{color:#c6d7cf}.waiting-orbit{width:120px;height:120px;margin-bottom:25px;border:1px solid rgba(255,255,255,.15);border-radius:50%;box-shadow:0 0 0 22px rgba(255,255,255,.035),0 0 0 44px rgba(255,255,255,.02);animation:spin 6s linear infinite}.waiting-orbit:after{content:"";display:block;width:15px;height:15px;border-radius:50%;background:#efc56f;transform:translate(92px,8px)}@keyframes spin{to{transform:rotate(360deg)}}
@media (max-width: 1000px){.participant-list{grid-template-columns:repeat(3,1fr)}.room-hero{align-items:flex-start}.room-links{flex-direction:column}.screen-header{height:72px;padding:0 22px}.stage{inset:72px 0 0}.screen-header .brand small{display:none}}
@media (max-width: 760px){.appbar{height:66px;padding:0 15px}.teacher-shell{width:calc(100% - 20px);margin-top:12px}.auth-card{margin:4vh auto;padding:28px 20px}.room-hero{padding:28px 20px;display:block}.room-hero h1{font-size:27px}.room-links{margin-top:20px}.teacher-grid{display:block}.panel{margin-top:12px;padding:20px 15px}.panel.span-2{grid-column:auto}.panel-head{align-items:flex-start}.participant-list{grid-template-columns:1fr 1fr}.form-row,.analysis-grid{grid-template-columns:1fr}.mobile-shell{padding-top:15px}.mobile-card{padding:24px 18px}.screen-stage{aspect-ratio:auto}.screen-header{height:64px}.screen-code{font-size:9px}.screen-code strong{font-size:18px}.stage{inset:64px 0 0;padding:5vh 5vw}.qr-card{width:36vw}.sign-copy h1{font-size:44px}.big-count strong{font-size:60px}.question-column{width:60%}.answer-live{width:40%}}
.screen-stage { aspect-ratio: 16 / 9; }
