.screen-content{grid-template-rows:minmax(0,1fr) auto}.screen .notice{display:grid;grid-template-rows:auto repeat(3,minmax(0,1fr));gap:0;min-height:0}.screen .notice-entry{position:relative;min-height:0;overflow:hidden;padding:1vh 0;display:flex;flex-direction:column;justify-content:center;gap:.5vh}.screen .notice-entry>div{min-width:0}.screen .notice-entry strong{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;line-height:1.4}.screen .notice-entry small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.screen .notice-entry p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5;margin:0}.notice-image-preview{max-width:70px;max-height:40px;object-fit:contain;position:absolute;right:0;bottom:8px}.notice-entry:has(.notice-image-preview) p{padding-right:80px}.announcement-full{display:block;max-width:100%;height:auto;margin:15px auto}.announcement-thumb{width:100px;height:80px;object-fit:contain;margin:8px}.screen .quote>p{font-size:clamp(22px,2.8vw,90px);line-height:1.6}.screen .quote.short>p{font-size:clamp(30px,4.2vw,140px)}.row-actions{text-align:right;white-space:nowrap}.row-actions button{padding:6px 9px;margin:3px}.notice-list-title{background:transparent;border:0;color:#205d49;text-align:left;padding:0;max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.weekly-table input{min-width:90px;width:100%;padding:8px}.weekly-table th{white-space:nowrap}.duty-group-editor{background:#edf4ef;padding:12px;border-radius:8px}.duty-group-editor span{display:block;margin-bottom:8px}.workspace .screen-cards article{min-width:0;overflow-wrap:anywhere}.delivery-details p{font-size:12px}
@media(max-width:700px){.screen .notice{height:360px}.screen-content{grid-template-rows:auto}}

/* Keep the small status labels on the same centre line as the large numerals. */
.screen .current{line-height:1;align-items:center}
body.management:has(.unified-login){background:#f4f7f5}
body:has(.unified-login) .app-header{display:none}
body:has(.unified-login) #app{max-width:none;margin:0;padding:0;width:100%}
.unified-login{min-height:100dvh;display:grid;grid-template-columns:1.1fr 1fr;background:#f4f7f5;font-synthesis:none}
.unified-login .loginIntro{background:linear-gradient(145deg,#102a22,#1d5943);color:white;padding:100px 12%;display:flex;flex-direction:column;justify-content:center}
.unified-login .loginIntro h1{font-size:44px;line-height:1.45;margin:28px 0}
.unified-login .loginIntro p{color:#b9d0c3}
.unified-login .eyebrow{color:#dcc78c;letter-spacing:4px;font-size:14px}
.unified-login .loginFeatures{border-top:1px solid #ffffff30;margin-top:50px;padding-top:24px;color:#b9d0c3}
.unified-login .loginCard{align-self:center;margin:60px auto;width:min(440px,85%);padding:40px;background:white;border:1px solid #e0e7e3;border-radius:20px;box-shadow:0 16px 50px #102a220a}
.unified-login .loginCard h2{font-size:27px;margin-top:0;color:#172b23}
.unified-login .loginCard p,.unified-login .loginCard small{color:#78867e;line-height:1.6}
.unified-login .loginCard small{display:block;margin-top:26px}
.unified-login .loginCard form{margin-top:28px}
.unified-login label{display:flex;flex-direction:column;gap:9px;font-size:14px;color:#426050;margin:16px 0}
.unified-login input{width:100%;font:inherit;border:1px solid #ccd8d0;border-radius:9px;padding:12px;background:#fff;color:#172b23}
.unified-login input:focus{outline:2px solid #8ebca5;outline-offset:1px}
.unified-login button.primary{width:100%;text-align:center;margin-top:12px;background:#176b52;color:white;border:0;border-radius:9px;padding:12px;font:inherit}
.unified-login .login-tools{border-top:1px solid #e0e7e3;margin-top:24px;padding-top:20px;font-size:13px}
.unified-login .login-tools small{margin-top:12px}
@media(max-width:800px){.unified-login{grid-template-columns:1fr}.unified-login .loginIntro{padding:30px}.unified-login .loginIntro h1{font-size:26px}.unified-login .loginFeatures{display:none}.unified-login .loginCard{margin:28px auto;padding:30px}}
.settings-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.settings-tabs .selected{background:#dfeecd;color:#153b34}.message-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px}.message-row>p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:0}.message-row>small{white-space:nowrap}.message-row .delivery-details{display:none}.message-row .row-actions{display:flex}.message-row>button{display:none}
@media(max-width:700px){.message-row{grid-template-columns:minmax(0,1fr) auto}.message-row>small{grid-row:2;white-space:normal}.message-row .row-actions{grid-column:2;grid-row:1/3}}
.screen .current>span{display:inline-flex;align-items:center;gap:.35vw;font-size:inherit;line-height:1}
.screen .current strong,.screen .current b{line-height:1}
.screen .notice-entry>div,.screen .notice-entry p{flex-shrink:0}
@media(min-width:701px){
 .screen .notice-entry{padding:.4vh 0;gap:.3vh}
 .screen .notice-entry strong{font-size:clamp(12px,min(1.5vw,2.7vh),44px)}
 .screen .notice-entry small{font-size:clamp(9px,min(.9vw,1.7vh),28px);line-height:1.25}
 .screen .notice-entry p{font-size:clamp(11px,min(1.2vw,2.1vh),36px);line-height:1.35}
 .screen .quote>p{font-size:clamp(18px,min(2.8vw,5vh),90px);line-height:1.4}
 .screen .quote.short>p{font-size:clamp(24px,min(4.2vw,7vh),140px)}
}
@media(min-width:701px) and (max-height:720px){
 .screen .notice-entry p{-webkit-line-clamp:2}
 .screen .notice-image-preview{max-height:24px;bottom:3px}
}
.screen .notice-entry>div{display:flex;align-items:center;gap:.4em;white-space:nowrap;overflow:hidden}
.screen .notice-entry strong{display:block;min-width:0;max-width:15.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
.screen .notice-entry small{display:block;min-width:0;flex:0 1 auto;line-height:1.4}
.screen .notice-entry em{flex-shrink:0;margin:0}
.screen .notice-entry p{-webkit-line-clamp:2}
.message-overlay .message-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.message-overlay .message-actions button{margin:0;padding:8px 14px}
.message-overlay .message-actions small{display:inline;margin:0;color:#b9d0c3;font-size:12px}
.quote-font-sans>p{font-family:"Microsoft YaHei","PingFang SC",sans-serif}
.quote-editor-preview{border-top:1px solid #dce6df;padding-top:16px;margin-top:24px}
.quote-rotation-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.quote-rotation-row input:disabled{background:#edf1ee;color:#89958d}
.quote-preview-card{background:#153b34;color:#f1f6ec;border-left:3px solid #d8eba8;border-radius:12px;padding:20px;min-height:260px;display:flex;flex-direction:column}
.quote-preview-card small{color:inherit;opacity:.7}.quote-preview-card p{margin:24px 0;flex:1;text-align:center;align-content:center;white-space:pre-line;overflow-wrap:anywhere;line-height:1.4;font-size:30px}
.quote-preview-card.preview-blue{background:#1b304c;color:#eff5ff;border-color:#a6cfff}.quote-preview-card.preview-paper{background:#fffdf7;color:#243c35;border-color:#2b6652}
.quote-preview-card.preview-scale-80 p{font-size:24px}.quote-preview-card.preview-scale-120 p{font-size:36px}.quote-preview-card.preview-scale-140 p{font-size:42px}
.quote-font-song>p{font-family:SimSun,"Songti SC",serif}
.quote-font-kai>p{font-family:KaiTi,STKaiti,"Kaiti SC",serif}
.quote-font-hei>p{font-family:SimHei,"Microsoft YaHei",sans-serif}
.quote-scale-80{--quote-scale:.8}.quote-scale-100{--quote-scale:1}.quote-scale-120{--quote-scale:1.2}.quote-scale-140{--quote-scale:1.4}
.screen .quote[class*="quote-scale-"]>p{font-size:clamp(18px,min(calc(2.8vw * var(--quote-scale)),calc(5vh * var(--quote-scale))),126px)}
.screen .quote.short[class*="quote-scale-"]>p{font-size:clamp(24px,min(calc(4.2vw * var(--quote-scale)),calc(7vh * var(--quote-scale))),196px)}
.screen .quote.quote-custom-scale>p{font-size:clamp(18px,min(calc(2.8vw * var(--quote-scale)),calc(5vh * var(--quote-scale))),270px)}
.screen .quote.short.quote-custom-scale>p{font-size:clamp(24px,min(calc(4.2vw * var(--quote-scale)),calc(7vh * var(--quote-scale))),420px)}
#quote-scale-value{font-variant-numeric:tabular-nums;color:#205d49;font-size:16px}
#popup{padding:0;overflow:hidden}
#popup[open]{display:flex;flex-direction:column}
.popup-toolbar{display:flex;justify-content:flex-end;padding:12px 16px 8px;flex-shrink:0;background:#f7faf8;border-bottom:1px solid #d8e5df}
#popup-close{margin:0;padding:8px 14px}
#popup-body{padding:0 24px 24px;overflow:auto;min-height:0}
.record-pagination{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:18px;font-size:13px}.record-pagination select{width:auto;margin:0;padding:8px}.record-pagination button{padding:8px 12px}.message-row[hidden],#workspace tbody tr[hidden]{display:none!important}
body.management .app-header{display:none}
body.management:has(.management-layout) #app{max-width:none;margin:0;padding:0}
.management-layout{grid-template-columns:240px minmax(0,1fr);gap:0;min-height:100dvh;background:#f4f7f5}
.management-layout .sidebar{display:flex;flex-direction:column;min-height:100dvh;height:100dvh;overflow:auto;top:0;border-radius:0;padding:30px 20px;background:linear-gradient(160deg,#102a22,#174b39)}
.management-layout .sidebar-title{font-size:24px;margin-bottom:24px}
.management-layout .sidebar{scrollbar-width:none;-ms-overflow-style:none}
.management-layout .sidebar::-webkit-scrollbar{display:none;width:0;height:0}
.account-identities p{margin:8px 0;padding:10px 8px;border-bottom:1px solid #ffffff20;font-size:14px}.account-identities small{margin:4px 0 0!important;padding:0!important;font-size:12px}
.account-identities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.account-identities p{min-width:0;margin:0;padding:10px 4px;overflow-wrap:anywhere}
.class-target-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 20px;margin:8px 0 12px}
.class-target-grid .check{margin:0;min-width:0;overflow-wrap:anywhere;align-items:flex-start}
.class-target-grid .check input{flex-shrink:0;margin-top:3px}
.status-class{padding:16px 0;border-top:1px solid #dce8e0}.presence-online{color:#176b52;font-weight:600}.presence-offline{color:#a15a40}
.status-screen-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:16px}
.status-screen-card{background:#f1f7f3;border:1px solid #dce8e0;border-radius:12px;padding:20px;min-width:0;overflow-wrap:anywhere}.status-screen-card h3{margin:0 0 8px}.status-screen-card h4{font-weight:500;margin:20px 0 8px}.status-screen-card small{color:#52675e}
.screen .quote,.quote-preview-card{container-type:size}
.quote-preview-card{height:320px;min-height:0}
.screen .quote.quote-custom-scale>p,.quote-preview-card>p{font-size:min(calc(5cqw * var(--quote-scale,1)),calc(8cqh * var(--quote-scale,1)));line-height:1.4;min-height:0;overflow:hidden;flex:1 1 0;max-width:100%}
.screen .quote.short.quote-custom-scale>p,.quote-preview-card.short>p{font-size:min(calc(7.5cqw * var(--quote-scale,1)),calc(11cqh * var(--quote-scale,1)))}
.replaced-by-hd-preview{display:none!important}
.hd-preview-stage{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:12px;background:#edf2ef}
.hd-preview-frame{position:absolute;left:0;top:0;width:1920px;height:1080px;border:0;transform-origin:top left;max-width:none}
/* Reserve an independent footer row; enlarged text cannot paint across its border. */
.screen .quote{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:0}
.screen .quote>p{min-height:0;min-width:0;height:100%;max-height:100%;margin:0;padding:2vh 0;overflow:hidden;contain:paint;clip-path:inset(0);box-sizing:border-box}
.screen .quote>#recent{position:relative;z-index:2;min-height:36px;flex-shrink:0;background:transparent}
.client-minimize{position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:200;width:36px;padding:12px 8px;border:0;border-radius:12px 0 0 12px;background:#d8eba8;color:#153b34;box-shadow:0 3px 12px #0002;display:flex;flex-direction:column;align-items:center;gap:5px;font-size:14px;line-height:1.25;cursor:pointer}
.client-minimize>span:last-child{writing-mode:vertical-rl;letter-spacing:2px}.client-minimize>span:first-child{font-size:22px;line-height:1}.client-minimize:hover{background:#e5f4c3}.client-minimize:focus-visible{outline:2px solid #fff;outline-offset:-4px}
.client-settings{position:fixed;right:24px;bottom:20px;background:#153b34;color:#aac8bd;border:1px solid #aac8bd55;border-radius:10px;padding:10px 16px}
.unbound-screen{background:#0c2925}
.screen .notice-entry{cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease}
.screen .notice-entry:hover{background:color-mix(in srgb,var(--accent) 6%,transparent);border-radius:8px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--muted) 35%,transparent)}
.screen .notice-entry:focus-visible{outline:none;border-radius:8px;background:color-mix(in srgb,var(--accent) 6%,transparent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 65%,transparent)}
.screen .notice-entry{align-self:center;height:auto;max-height:100%;padding:.6vh .5vw;justify-content:flex-start;border-bottom:0}
.screen .notice[data-count="0"],.screen .notice[data-count="1"]{grid-template-rows:auto minmax(0,1fr)}
.screen .notice[data-count="2"]{grid-template-rows:auto repeat(2,minmax(0,1fr))}
.screen .notice[data-count="1"] .notice-entry,.screen .notice[data-count="2"] .notice-entry{align-self:start;margin-top:1vh;max-height:calc(100% - 1vh)}
.screen .notice[data-count="1"] .notice-entry{gap:1.2vh}
.screen .notice[data-count="1"] .notice-entry>div{display:flex;flex-wrap:wrap;white-space:normal;gap:.5em}
.screen .notice[data-count="1"] .notice-entry strong{font-size:clamp(18px,min(1.8vw,3.2vh),48px);max-width:100%;flex:1 1 0}
.screen .notice[data-count="1"] .notice-entry small{flex:1 0 100%;font-size:clamp(11px,min(1vw,1.8vh),28px)}
.screen .notice[data-count="1"] .notice-entry p{font-size:clamp(16px,min(1.6vw,2.8vh),42px);line-height:1.6;white-space:pre-line;-webkit-line-clamp:8;flex-shrink:1;min-height:0}
.screen .notice[data-count="2"] .notice-entry p{-webkit-line-clamp:4;white-space:pre-line;flex-shrink:1;min-height:0}
.screen .notice[data-count="3"] .notice-entry p{-webkit-line-clamp:2}
.binding-code-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}.binding-code-copy input{grid-column:1}.binding-code-copy button{grid-column:2;grid-row:2;white-space:nowrap}
[data-device-class][hidden]{display:none!important}
.screen .quote::after{content:"";position:absolute;width:20vw;height:20vw;right:-7vw;bottom:-7vw;border:1px solid color-mix(in srgb,var(--accent) 12%,transparent);border-radius:50%;box-shadow:0 0 0 3vw color-mix(in srgb,var(--accent) 3%,transparent),0 0 0 6vw color-mix(in srgb,var(--accent) 2%,transparent);pointer-events:none;z-index:0}
.screen .quote>.section-title{position:relative;z-index:1}
.quote-preview-card{position:relative;overflow:hidden;--preview-accent:#d8eba8}
.quote-preview-card.preview-blue{--preview-accent:#a6cfff}.quote-preview-card.preview-paper{--preview-accent:#2b6652}
.quote-preview-card::after{content:"";position:absolute;width:200px;height:200px;right:-70px;bottom:-70px;border:1px solid color-mix(in srgb,var(--preview-accent) 12%,transparent);border-radius:50%;box-shadow:0 0 0 30px color-mix(in srgb,var(--preview-accent) 3%,transparent),0 0 0 60px color-mix(in srgb,var(--preview-accent) 2%,transparent);pointer-events:none;z-index:0}
.quote-preview-card>p,.quote-preview-card>small{position:relative;z-index:1}
.management-layout .sidebar>small{margin-top:auto;padding-top:28px}
.management-layout .sidebar #logout{display:block;width:100%;margin:18px 0 0;background:transparent;color:#d3e6dd;text-align:left;border:1px solid #ffffff35}
.management-layout .workspace{margin:28px;min-height:calc(100dvh - 56px);border:1px solid #e0e7e3;border-radius:16px}
@media(max-width:900px){.management-layout{grid-template-columns:180px minmax(0,1fr)}.management-layout .workspace{margin:16px}.management-layout .sidebar{padding:24px 14px}}
@media(max-width:600px){.management-layout{grid-template-columns:110px minmax(0,1fr)}.management-layout .sidebar{padding:18px 8px}.management-layout .sidebar-title{font-size:16px}.management-layout .workspace{margin:8px;min-height:calc(100dvh - 16px)}.management-layout .sidebar #logout{padding:10px 5px;font-size:12px}}
.message-overlay.fullscreen{background:#0c2925}
.client-controls{position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;max-height:95vh;overflow-y:auto;scrollbar-width:none}
.client-controls .client-minimize{position:static;transform:none;flex-shrink:0}
.client-controls .client-pause{font-size:12px;padding:10px 8px}
.client-test-badge{position:fixed;bottom:4px;right:8px;z-index:201;background:#70420b;color:#fff3d9;border-radius:6px;padding:4px 10px;font-size:12px;pointer-events:none}
#client-downloads { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
#client-downloads > a { display: block; }
.screen .quote>p{display:block;text-align:left;align-content:center;text-indent:0}
.client-settings-menu{display:grid;gap:12px;margin:16px 0}.client-settings-menu button{width:100%;text-align:left;padding:14px 18px}.client-controls .client-settings-toggle{font-size:14px}
.live-viewer{width:min(1000px,94vw);max-height:94vh;overflow:auto;padding:20px}.live-viewer video{display:block;width:100%;max-height:65vh;background:#0c2925;border-radius:10px}.live-toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.live-toolbar h2{margin:0}.live-settings-button{position:fixed;right:14px;bottom:14px;z-index:210;padding:6px 10px;font-size:12px}.live-capture-badge{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:300;background:#953b23;color:white;border-radius:8px;padding:10px 16px}.live-settings-dialog{width:min(520px,90vw);padding:24px}.live-capture-badge[hidden],.live-settings-button[hidden]{display:none}
