
:root{--espresso:#162135;--cocoa:#21324e;--caramel:#755f2e;--toffee:#907740;--oat:#e0dacf;--cream:#f9f8f6;--panel:#efece5;--ink:#232e40;--ink2:#324d7b;--dim:#897343;--gold:#b89b5c;--goldL:#e0dacf;--goldD:#897240;--wax:#9e2b1c;--waxL:#c74a38;--teal:#3d5c6b;--line:#cfc4af;--navy:#1b2941;--navy2:#0f1b30;--slate:#405270;--slateL:#5a6f92;}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:"Noto Serif TC",serif;color:var(--ink);min-height:100vh;-webkit-font-smoothing:antialiased;background:radial-gradient(1100px 720px at 82% -12%,rgba(43,62,96,.14) 0%,transparent 56%),radial-gradient(900px 640px at -12% 112%,rgba(184,155,92,.14) 0%,transparent 54%),linear-gradient(#f9f8f5,#eeebe6)}
#bg{position:fixed;inset:0;z-index:0;pointer-events:none;background-repeat:no-repeat;background-position:center 46%;background-size:min(64vw,560px);opacity:.06;transition:opacity .8s}
.hidden{display:none!important}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}a{color:var(--goldD)}
svg.ic{width:1em;height:1em;vertical-align:-.14em;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
svg.ic.big{width:1.35em;height:1.35em}
.btn{position:relative;border-radius:11px;font-size:14px;padding:9px 15px;border:1.5px solid var(--gold);color:var(--cocoa);background:linear-gradient(#fefdfc,#e8e1d4);box-shadow:0 2px 6px rgba(27,41,65,.12),inset 0 1px 0 #fdfbf9;transition:transform .12s,box-shadow .2s,filter .2s;display:inline-flex;align-items:center;gap:7px}
.btn{overflow:hidden;isolation:isolate}
.btn::before{content:"";position:absolute;left:0;right:0;top:0;height:48%;background:linear-gradient(rgba(255,255,255,.5),rgba(255,255,255,0));pointer-events:none;z-index:-1}
.btn:hover{transform:translateY(-1px);filter:brightness(1.03);box-shadow:0 5px 12px rgba(37,57,92,.22)}
.btn:active{transform:translateY(1px)}
.btn.gold{color:#141e31}
.btn.primary::before{background:linear-gradient(rgba(255,255,255,.28),rgba(255,255,255,0))}
.btn.gold::before{background:linear-gradient(rgba(244,239,229,.75),rgba(244,239,229,0))}
.btn.primary{background:linear-gradient(#283a5a,#1b2941 60%,#121e33);border:1.5px solid var(--gold);color:#ebe3d5;box-shadow:0 5px 16px rgba(12,22,40,.4),inset 0 1px 0 rgba(224,218,207,.35),inset 0 -2px 0 #0c1626;text-shadow:0 1px 2px rgba(0,0,0,.4)}
.btn.primary:hover{transform:translateY(-2px);box-shadow:0 9px 22px rgba(12,22,40,.5),inset 0 1px 0 rgba(224,218,207,.4);filter:brightness(1.08)}
.btn.gold{box-shadow:0 4px 12px rgba(50,77,123,.28),inset 0 1px 0 #f2ece0,inset 0 -2px 0 #907439}
.btn.gold:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(50,77,123,.34)}
.btn.teal{box-shadow:0 3px 9px rgba(30,57,70,.28),inset 0 1px 0 #cde3ee,inset 0 -2px 0 #2c4450}
.btn.danger{box-shadow:0 3px 9px rgba(120,30,20,.28),inset 0 1px 0 #ffd9cf,inset 0 -2px 0 #7e2015}
.btn.ghost{background:linear-gradient(#fefdfc,#eae6de);border-color:#ccc1ad;color:var(--ink2);box-shadow:0 1px 3px rgba(37,57,92,.12)}.btn[disabled]{opacity:.5;cursor:not-allowed;filter:grayscale(.3)}
.btn.sm{padding:6px 11px;font-size:13px;border-radius:9px}.btn.block{width:100%;justify-content:center}
.btn.primary{background:linear-gradient(#283a5a,#1b2941 60%,#121e33);color:#ebe3d5;border:1.5px solid var(--gold);font-weight:700;box-shadow:0 5px 16px rgba(12,22,40,.4),inset 0 1px 0 rgba(224,218,207,.35),inset 0 -2px 0 #0c1626;text-shadow:0 1px 2px rgba(0,0,0,.4)}
.btn.gold{background:linear-gradient(#dbcaac,#bd9744);color:#1c2a44;border-color:#cebd9f;font-weight:700}
.btn.ext{background:linear-gradient(#20304d,#162135);color:var(--goldL);border-color:var(--goldD);box-shadow:0 3px 8px rgba(0,0,0,.28)}
.btn.ext:hover{filter:brightness(1.12)}
.btn.ghost{background:transparent;border:1.5px solid var(--gold);color:var(--goldD);box-shadow:none}
.btn.teal{background:linear-gradient(#5a7f91,#3d5c6b);color:#f2fbff;border-color:#5a7f91;font-weight:600}
.btn.danger{background:linear-gradient(#c74a38,#9e2b1c);color:#fff0ec;border-color:#c74a38;font-weight:600}
#intro{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(820px 620px at 50% 42%,#20314f,#0c1524 72%,#070c16);transition:opacity 1s ease;overflow:hidden}
#glow{position:absolute;width:560px;height:560px;border-radius:50%;top:42%;left:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(208,191,159,.42),rgba(184,155,92,.12) 42%,transparent 66%);opacity:0;transition:opacity 1.4s}
.orbit{position:absolute;top:42%;left:50%;border-radius:50%;pointer-events:none;transform:translate(-50%,-50%)}
.orbit.o1{width:340px;height:340px;border:1px solid rgba(184,155,92,.30);animation:orbspin 22s linear infinite}
.orbit.o2{width:470px;height:470px;border:1px dashed rgba(184,155,92,.18);animation:orbspin 38s linear infinite reverse}
.orbit::after{content:"";position:absolute;top:-3px;left:50%;margin-left:-3px;width:6px;height:6px;border-radius:50%;background:#ebe3d5;box-shadow:0 0 10px 3px rgba(224,218,207,.9)}
@keyframes orbspin{to{transform:translate(-50%,-50%) rotate(360deg)}}
.spark{position:absolute;border-radius:50%;background:#ffffff;box-shadow:0 0 6px 2px rgba(224,218,207,.85);animation:tw 2.6s ease-in-out infinite;z-index:2}
@keyframes tw{0%,100%{opacity:.15;transform:scale(.5)}50%{opacity:1;transform:scale(1.15)}}
.chest{width:250px;height:210px;position:relative;cursor:pointer;filter:drop-shadow(0 22px 30px rgba(0,0,0,.55));z-index:2}
.chest svg{width:100%;height:100%;overflow:visible}
.lid{transform-origin:50% 80%;transition:transform 1.6s cubic-bezier(.22,.61,.28,1)}.chest .lid{transform-origin:120px 100px;transition:transform 1.2s cubic-bezier(.5,-0.2,.3,1.3)}
.chest.open .lid{transform:rotateX(112deg)}
.chest .lock{transform-origin:120px 150px;animation:lockpulse 2.6s ease-in-out infinite}
@keyframes lockpulse{0%,100%{filter:drop-shadow(0 0 2px rgba(208,191,159,.5))}50%{filter:drop-shadow(0 0 8px rgba(236,222,195,.95))}}
.beam{opacity:0;transition:opacity 1.3s ease .5s}.chest.open .beam{opacity:1}
#introLogo{width:min(64vw,290px);opacity:0;transform:translateY(8px);transition:opacity 1.2s ease .7s,transform 1.2s ease .7s;filter:brightness(0) invert(1) sepia(.5) saturate(4) hue-rotate(2deg);z-index:2;margin-bottom:4px}
.chest.open ~ #introLogo{opacity:.95;transform:translateY(0)}
#intro .sub{color:var(--goldL);letter-spacing:.34em;font-size:14px;z-index:2;opacity:0;transition:opacity 1.2s ease 1s}.chest.open ~ .sub{opacity:1}
#intro .hint{margin-top:30px;color:var(--goldL);letter-spacing:.35em;font-size:13px;opacity:.8;animation:pulse 2.6s infinite;z-index:2}
@keyframes pulse{0%,100%{opacity:.3}50%{opacity:.9}}
@media(prefers-reduced-motion:reduce){.lid{transition:none}.beam,#introLogo,#intro .sub{transition:none;opacity:1}}
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:14px;padding:10px 20px;background:linear-gradient(#22334f,#0f1b30);border-bottom:2px solid var(--gold);box-shadow:0 3px 16px rgba(7,13,23,.4)}
.topbar img{height:32px;filter:brightness(0) invert(1) sepia(.5) saturate(4) hue-rotate(2deg)}
.brand2{color:var(--goldL);font-size:12.5px;letter-spacing:.16em;line-height:1.3}.spacer{flex:1}
.who{font-size:13px;color:#e7decf;text-align:right;line-height:1.3}.who small{color:#b89853}
.wrap{position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:20px 18px 90px}
.tabs{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 22px}
.tab{position:relative;border:1.5px solid #a2874c;background:linear-gradient(#fefdfc,#e5ddcd);color:var(--ink2);padding:10px 16px 11px;border-radius:14px 14px 10px 10px;font-size:13.5px;transition:transform .14s,box-shadow .2s,filter .2s;display:inline-flex;align-items:center;gap:6px;overflow:hidden;box-shadow:0 3px 7px rgba(37,57,92,.2),inset 0 1px 0 #fefefd;isolation:isolate;font-weight:700}
.tab::before{content:"";position:absolute;left:0;right:0;top:0;height:46%;background:linear-gradient(rgba(255,255,255,.7),rgba(255,255,255,0));pointer-events:none;z-index:-1}
.tab:hover{transform:translateY(-1px);box-shadow:0 5px 12px rgba(37,57,92,.2),inset 0 1px 0 #fefefd;filter:brightness(1.02)}
.tab.on{background:linear-gradient(#283a5a,#1b2941 60%,#121e33);color:#ebe3d5;border:1.5px solid var(--gold);font-weight:800;box-shadow:0 5px 14px rgba(12,22,40,.4),inset 0 1px 0 rgba(224,218,207,.35),inset 0 -3px 0 #0c1626;text-shadow:0 1px 2px rgba(0,0,0,.4)}
.tab.on::before{background:linear-gradient(rgba(255,255,255,.22),rgba(255,255,255,0))}
.tab.on::after{content:"";position:absolute;left:14%;right:14%;bottom:3px;height:2px;border-radius:2px;background:linear-gradient(90deg,rgba(238,231,216,0),#eee7d8,rgba(238,231,216,0))}
.tab .ic{opacity:.85}.tab.on .ic{opacity:1}
.tab:hover{color:var(--goldD)}
.card{position:relative;background:linear-gradient(#fefdfc,#efece5);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:16px;box-shadow:0 6px 18px rgba(27,41,65,.09),inset 0 1px 0 #ffffff}
.card::before{content:"";position:absolute;left:16px;right:16px;top:0;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.7}
.card h3 .ic{width:30px;height:30px;padding:6px;border-radius:50%;background:radial-gradient(circle at 38% 30%,#e0dacf,#b89b5c 70%,#897240);color:#141e31;box-shadow:0 2px 6px rgba(27,41,65,.25),inset 0 1px 0 #f4efe6;flex:0 0 auto}
.card>h3{margin:0 0 4px;color:var(--cocoa);font-size:16.5px;letter-spacing:.02em;display:flex;align-items:center;gap:9px}
.card>h3 .ic{color:var(--caramel)}
.card .desc{color:var(--dim);font-size:12.5px;margin:0 0 12px;padding-bottom:9px;border-bottom:1.5px dashed var(--line)}
.card.dark{background:linear-gradient(#22334f,#0f1b30);border-color:var(--gold);color:var(--cream)}
.card.dark::before{background:linear-gradient(90deg,transparent,var(--goldL),transparent);opacity:.8}
.card.dark h3{color:#ebe3d5}.card.dark .desc{color:#cdd6e6;border-bottom-color:rgba(184,155,92,.4)}
.card.dark h3 .ic{background:radial-gradient(circle at 38% 30%,#e0dacf,#b89b5c 70%,#897240)}
.card.dark>h3{color:var(--goldL)}.card.dark .mark,.card.dark .small,.card.dark .desc{color:#bcb098}
.parch{background:repeating-linear-gradient(0deg,#00000004 0 2px,transparent 2px 4px),linear-gradient(#f2eee6,#e2d8c6);color:var(--ink);border:1px solid #ba9a56;border-radius:14px;padding:20px 22px;margin-bottom:16px;position:relative;box-shadow:0 8px 20px rgba(37,57,92,.14),inset 0 0 0 2px #f2eee6,inset 0 0 0 3px #c5b598}
.parch h2{margin:.1em 0 .6em;color:#21324e;font-size:20px;letter-spacing:.05em;text-align:center;display:flex;align-items:center;justify-content:center;gap:10px;border-bottom:1.5px dashed #b1924f;padding-bottom:10px}
.parch p,.parch li{line-height:1.9;font-size:15px}
.owl{position:absolute;top:-16px;right:18px;width:54px;height:54px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#cebd9f,#967b41 70%,#755f2e);border:2px solid #cebd9f;box-shadow:0 6px 14px rgba(37,57,92,.4);display:flex;align-items:center;justify-content:center;transform:rotate(-6deg);color:#ffffff}
.deflist{list-style:none;padding:0;margin:0}.deflist li{display:flex;gap:12px;padding:9px 0;border-bottom:1px dashed #bdb097;align-items:flex-start}.deflist li:last-child{border-bottom:0}
.deflist .k{flex:0 0 120px;font-weight:700;color:#2e4771;display:flex;align-items:center;gap:7px}.deflist .k .ic{color:var(--caramel)}.deflist .v{flex:1}
.acc{border:1px solid #ba9a56;border-radius:11px;overflow:hidden;margin-bottom:10px;background:#f2eee6}
.acc>summary{cursor:pointer;padding:13px 14px;font-weight:700;color:#21324e;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:8px}
.acc>summary .lft{display:flex;align-items:center;gap:9px}.acc>summary .lft .ic{color:var(--caramel)}
.acc>summary::-webkit-details-marker{display:none}.acc>summary::after{content:"＋";color:var(--caramel);font-size:18px}.acc[open]>summary::after{content:"－"}
.acc[open]>summary{background:linear-gradient(#eae2d4,#dfd4c0)}.acc .body{padding:2px 16px 14px;color:var(--ink);line-height:1.85}
.route{display:flex;flex-wrap:wrap;gap:10px}.stop{flex:1;min-width:128px;background:linear-gradient(#f2eee6,#dcd0ba);border:1px solid #ba9a56;border-radius:12px;padding:12px;position:relative;text-align:center}
.stop .ic{color:var(--caramel);font-size:22px}.stop .n{font-size:11px;color:var(--caramel);font-weight:700;letter-spacing:.2em;margin-top:4px}.stop .t{font-size:14.5px;font-weight:700;color:#21324e;margin-top:3px}
.stop .arrow{position:absolute;right:-13px;top:50%;transform:translateY(-50%);color:var(--gold);font-size:18px;z-index:2}@media(max-width:720px){.stop .arrow{display:none}}
.wax{background:linear-gradient(#f6ddd4,#eec3b7);border:1px solid var(--waxL);border-left:6px solid var(--wax);border-radius:10px;padding:12px 14px;color:#7a1f14;margin:10px 0}.wax b{color:var(--wax)}
.note{background:linear-gradient(#eee8dc,#e2d6be);border:1px solid #c7a04d;border-left:6px solid var(--gold);border-radius:10px;padding:12px 14px;color:#2c436b;margin:10px 0}
table{width:100%;border-collapse:collapse;font-size:13.3px}th,td{padding:8px 9px;border-bottom:1px solid #c5b59888;text-align:left}
th{color:#21324e;font-weight:700;border-bottom:1.5px solid #ba9a56;background:#e6dece}
.tbl-wrap{overflow:auto;border:1px solid #ba9a56;border-radius:10px}.tbl-wrap table th{position:sticky;top:0}
.lamp{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:#324d7b}
.dot{width:12px;height:12px;border-radius:50%;background:#ccc2af;box-shadow:inset 0 0 3px #99814b}
.dot.on{background:radial-gradient(circle at 35% 30%,#ecdec3,#b1914c);box-shadow:0 0 8px #b1914c}.dot.red{background:radial-gradient(circle at 35% 30%,#ee8888,#9e2b1c);box-shadow:0 0 6px #9e2b1c88}
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;border:1px solid}
.badge.ok{color:#2b4d5e;border-color:#3d5c6b;background:#3d5c6b22}.badge.no{color:#9e2b1c;border-color:#c74a38;background:#9e2b1c16}.badge.warn{color:#324d7b;border-color:#b28e41;background:#b28e4122}.badge.zero{color:#9e2b1c;border-color:#9e2b1c;background:#9e2b1c22}
.progress{height:16px;background:#d9ceb9;border:1px solid #ba9a56;border-radius:999px;overflow:hidden}.progress>i{display:block;height:100%;background:linear-gradient(90deg,#967b41,#cebd9f);width:0;transition:width .8s ease}
.mark{font-size:12px;color:var(--dim)}
.field{margin-bottom:12px}.field label{display:block;font-size:13px;color:#324d7b;margin-bottom:5px;font-weight:600}
.input,select.input,textarea.input{width:100%;background:#fdfcfb;border:1px solid #ba9a56;color:var(--ink);border-radius:8px;padding:10px 11px;font-size:14px}
textarea.input{min-height:78px;resize:vertical}.row{display:flex;gap:12px;flex-wrap:wrap}.row>.field{flex:1;min-width:150px}
.timegrp{display:flex;align-items:center;gap:6px}.timegrp input{width:64px;text-align:center}.timegrp .sep{font-weight:700;color:var(--caramel)}
#login{max-width:440px;margin:5vh auto;padding:6px;position:relative;z-index:1}
.paper{background:radial-gradient(120% 90% at 50% -10%,#2b3e60,transparent 58%),linear-gradient(#1c2c49,#0f1b30);border:1px solid var(--gold);border-radius:12px;padding:32px 28px 26px;position:relative;box-shadow:0 24px 60px rgba(7,13,23,.6),inset 0 1px 0 rgba(224,218,207,.25);clip-path:polygon(2% 0,98% 1%,100% 3%,99% 97%,97% 100%,3% 99%,0 97%,1% 3%)}
#login .paper::after{content:"";position:absolute;inset:7px;border:1px solid rgba(184,155,92,.55);border-radius:7px;pointer-events:none}
#login h2{color:#ebe3d5}#login .cap{color:#b89b5c}
#login label{color:#e0dacf}#login .tiny{color:#b8aa8f}#login .chk{color:#cdd6e6}
#login .input{background:#efece5;border-color:#766135;color:#232e40}
#login .input::placeholder{color:#58667d}
#login .logo{filter:brightness(0) invert(1) sepia(.4) saturate(4) hue-rotate(2deg)}
.paper::before{content:"";position:absolute;inset:8px;border:1.5px double #a1864d88;border-radius:4px;pointer-events:none}
.paper .logo{display:block;width:212px;margin:2px auto 6px;filter:brightness(.12) sepia(1) saturate(2.2) hue-rotate(-12deg)}
.paper h2{color:#21324e;margin:2px 0;text-align:center;letter-spacing:.08em}.paper .cap{text-align:center;color:#324d7b;font-size:12.5px;letter-spacing:.28em;margin-bottom:20px}
.paper .field label{color:#2e4771}.paper .input{background:#fefdfc;border-color:#b1924f}
.err{color:var(--wax);font-size:13px;min-height:18px;margin-top:4px}.tiny{font-size:12px;color:#324d7b}
.chk{display:flex;align-items:center;gap:8px;color:#2e4771;font-size:13px;margin:6px 0 14px}
.owl-mini{position:absolute;top:14px;right:16px;width:52px;height:52px;border-radius:50%;background:radial-gradient(circle at 38% 30%,#1c2b44,#0e1521 78%);border:2px solid #c3b293;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(0,0,0,.45),inset 0 1px 0 #304975;overflow:visible;animation:owlbadge 3.6s ease-in-out infinite}
.owl-mini::after{content:"";position:absolute;inset:-4px;border-radius:50%;pointer-events:none;box-shadow:0 0 0 0 rgba(206,189,159,.55);animation:owlring 3.6s ease-in-out infinite}
.owl-mini .owlimg{width:34px;height:34px;object-fit:contain;filter:brightness(0) saturate(100%) invert(84%) sepia(38%) saturate(560%) hue-rotate(3deg) brightness(101%) drop-shadow(0 0 4px rgba(218,201,169,.9));animation:owlglow 2.8s ease-in-out infinite}
@keyframes owlglow{0%,100%{filter:brightness(0) saturate(100%) invert(80%) sepia(30%) saturate(500%) hue-rotate(3deg) brightness(95%) drop-shadow(0 0 3px rgba(218,201,169,.55))}50%{filter:brightness(0) saturate(100%) invert(90%) sepia(45%) saturate(700%) hue-rotate(3deg) brightness(112%) drop-shadow(0 0 9px rgba(236,222,195,1))}}
@keyframes owlring{0%,100%{box-shadow:0 0 0 0 rgba(206,189,159,.5)}50%{box-shadow:0 0 14px 3px rgba(206,189,159,.55)}}
@keyframes owlbadge{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-2px) rotate(3deg)}}
#toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(30px);background:linear-gradient(#c4ae85,#907740);color:#162236;padding:12px 20px;border-radius:10px;font-weight:700;box-shadow:0 10px 26px rgba(37,57,92,.4);opacity:0;transition:.35s;z-index:120;pointer-events:none}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#modal{position:fixed;inset:0;z-index:90;background:#162135cc;display:flex;align-items:center;justify-content:center;padding:16px}
.modalBox{background:linear-gradient(#f9f7f4,#ebe4d7);border:1px solid #ba9a56;border-radius:14px;max-width:640px;width:100%;max-height:90vh;overflow:auto;padding:20px;box-shadow:0 24px 60px rgba(0,0,0,.4)}
.modalBox h3{color:#21324e;margin-top:0;display:flex;align-items:center;gap:8px}
.small{font-size:12.5px;color:var(--dim)}.hr{height:1px;background:#bfaf91;margin:14px 0}
.pill{display:inline-block;background:#3d5c6b16;color:#2b4d5e;border:1px solid #3d5c6b55;border-radius:999px;padding:3px 10px;font-size:12px;margin:2px 4px 2px 0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:720px){.grid2{grid-template-columns:1fr}}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}@media(max-width:720px){.grid3{grid-template-columns:1fr 1fr}}
.metric{background:linear-gradient(#f9f7f4,#ebe4d7);border:1px solid var(--line);border-radius:12px;padding:14px;text-align:center;box-shadow:0 4px 10px rgba(37,57,92,.08)}
.metric .v{font-size:26px;font-weight:800;color:var(--caramel)}.metric .l{font-size:12px;color:var(--dim);margin-top:2px}.metric .ic{color:var(--gold);font-size:20px}
.bar{display:flex;align-items:center;gap:8px;margin:6px 0}.bar .lbl{flex:0 0 92px;font-size:13px;color:var(--dim)}
.bar .track{flex:1;height:14px;background:#d9ceb9;border-radius:999px;overflow:hidden;border:1px solid #ba9a56}.bar .track>i{display:block;height:100%;background:linear-gradient(90deg,#3d5c6b,#5a7f91)}.bar .num{flex:0 0 52px;text-align:right;color:#324d7b;font-size:13px}
.sec-title{color:#324d7b;font-size:13.5px;margin:6px 0 8px;letter-spacing:.04em;font-weight:700;display:flex;align-items:center;gap:7px}
.coinN{color:var(--caramel);font-weight:700}
.reszone{margin-top:12px;padding:12px;border:1.5px solid var(--goldD);border-radius:10px;background:linear-gradient(#20304d,#162135)}.reszone .sec-title{color:var(--goldL);margin-top:0}
.wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px}
.name-card{border:1px solid #ba9a56;border-radius:12px;padding:12px 10px;text-align:center;background:linear-gradient(#f9f7f4,#eae3d6);cursor:pointer;transition:.15s;position:relative}
.name-card:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(37,57,92,.2)}.name-card.absent{opacity:.4;filter:grayscale(.5);cursor:not-allowed}
.name-card .av{flex:0 0 auto;width:44px;height:44px;border-radius:50%;margin:0 auto;background:radial-gradient(circle at 38% 32%,#cebd9f,#907740);display:flex;align-items:center;justify-content:center;color:#ffffff;font-weight:700;font-size:17px}
.name-card .nm{font-weight:700;color:#21324e;margin-top:6px}.tick{position:absolute;top:6px;right:8px;font-size:15px}
.calhead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-dow{text-align:center;font-size:12px;color:#324d7b;font-weight:700;padding:4px 0}
.cell{min-height:72px;border:1px solid #c5b598;border-radius:10px;padding:6px;background:#f2eee6;position:relative;font-size:12px}.cell.empty{background:transparent;border:0}
.cell.has{background:linear-gradient(#f3eee4,#e2d6bf);border-color:#b28e41;cursor:pointer}.cell.grad{background:linear-gradient(#e6edf0,#cddbe2);border-color:#3d5c6b;cursor:pointer}
.cell .d{color:#324d7b;font-weight:700}.cell .ev{margin-top:3px;font-size:11px;color:#21324e;line-height:1.3}.cell .chip{display:inline-block;margin-top:3px;font-size:10.5px;padding:1px 6px;border-radius:999px}
.stwax{position:absolute;bottom:6px;right:6px;width:15px;height:15px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ee8888,#9e2b1c);box-shadow:0 0 5px #9e2b1c88;border:1px solid #6f1f14}
.stgold{position:absolute;bottom:6px;right:6px;width:13px;height:13px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ecdec3,#b1914c);box-shadow:0 0 6px #b1914c}
/* 行事曆雙軸：開播日（金）＋任務日（墨綠） */
.cell.task{background:linear-gradient(#eef3f5,#dbe4e9);border-color:#3d5c6b;cursor:pointer}
.cell.task.over{background:linear-gradient(#fbeeea,#f2ddd6);border-color:#9e2b1c}
.tdot{position:absolute;bottom:5px;left:6px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:700;line-height:1;border:1px solid #2b4d5e;background:#3d5c6b;color:#eaf1f4}
.tdot.over{background:#9e2b1c;border-color:#6f1f14;color:#f9f7f2}
.tdot.done{background:#cfdae0;border-color:#8fa7b3;color:#2b4d5e}
/* 首頁未讀列與任務分區標註 */
.urow .mid{display:flex;flex-direction:column;gap:2px}
.urow.hot{border-color:var(--goldD);background:#f6f3ed}
.catcard.after{background:linear-gradient(#f2f6f8,#e2eaee);border-color:#a9bdc7}
.catcard .gnote{display:block;font-size:11.5px;font-weight:400;color:#836e41;margin-top:2px}
.listrow{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#f9f7f4;margin-bottom:8px}
/* ===== 2026-09-19 新增樣式（任務期限／互評矩陣／備份） ===== */
.duerow{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-left-width:4px;border-radius:10px;background:#f9f7f4;margin-bottom:8px;transition:box-shadow .2s ease-out,transform .2s ease-out}
.duerow:hover{box-shadow:0 4px 10px rgba(37,57,92,.14)}
.duerow.due-over{border-left-color:var(--wax);background:#fdf3f1}
.duerow.due-soon{border-left-color:#aa8432;background:#faf8f5}
.duerow.due-open{border-left-color:var(--gold)}
.duerow.due-done{border-left-color:#b6b2aa;opacity:.72}
.duehd{display:flex;align-items:center;gap:8px;margin:12px 0 6px;font-weight:700;color:var(--ink2);font-size:13.5px}
.duehd .n{font-weight:700;color:var(--dim);font-size:12px}
.emptybox{text-align:center;padding:18px 12px;color:var(--dim);border:1px dashed var(--line);border-radius:10px;background:#fefdfc}
.emptybox .bigic{opacity:.45;display:block;margin-bottom:6px}
.gmtbl{border-collapse:collapse;font-size:12.5px}
.gmtbl th,.gmtbl td{border:1px solid var(--line);padding:6px 8px;text-align:center;white-space:nowrap}
.gmtbl tr:nth-child(even) td{background:#fefdfc}
.gmtbl tr:hover td{background:#f2eee7}
.gmtbl td.gm-yes{color:#2f576b;font-weight:700}
.gmtbl td.gm-no{color:var(--wax);font-weight:700}
.gmtbl td.gm-non{color:#b49b66;font-size:17px;line-height:1}
.gmtbl td.gm-self{color:#c4bcaf;background:#ece8e1}
.gmtbl th.gm-abs,.gmtbl td.gm-abs{background:repeating-linear-gradient(45deg,#eae6df,#eae6df 6px,#e4ded4 6px,#e4ded4 12px);color:#617089}
.bkstat{display:flex;gap:14px;flex-wrap:wrap;margin:8px 0 12px}
.bkstat div{min-width:74px}
.bkstat label{display:block;font-size:11.5px;color:var(--dim)}
.bkstat b{font-size:17px;color:var(--ink2)}
.expta{width:100%;font-family:inherit;font-size:12.5px;line-height:1.7}
.warnbar{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border:1px solid #c79c3f;border-left:4px solid #aa8432;border-radius:10px;background:#f6f3ed;margin-bottom:12px}
.warnbar b{color:#755f2e}
.stucheck{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.stuchk{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1.5px solid var(--line);border-radius:999px;background:#fefdfc;cursor:pointer;font-size:13px;transition:border-color .2s ease-out,background .2s ease-out}
.stuchk:hover{border-color:var(--gold)}
.stuchk.on{border-color:var(--goldD);background:#efebe3;font-weight:700}
.stuchk input{display:none}
.praisecard{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(#fefdfc,#f2eee8);margin-bottom:10px}
.praisecard.top{border-color:var(--goldD);box-shadow:0 3px 10px rgba(137,114,64,.18)}
.praisecard .why{margin-top:3px;color:var(--ink2)}
.ribbon{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--goldD);color:#fefdfc;font-size:11px;font-weight:700}
.duesum{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-left-width:4px;border-radius:10px;background:#f9f7f4;margin-bottom:6px;cursor:pointer}
.duesum.lv-over{border-left-color:var(--wax)}
.duesum.lv-soon{border-left-color:#aa8432}
.duesum.lv-open{border-left-color:var(--gold)}
.duesum.lv-done{border-left-color:#b6b2aa;opacity:.75}
.listrow .dt{flex:0 0 150px;font-weight:700;color:#21324e}.listrow .mid{flex:1}
.todo-item{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid var(--waxL);border-left:5px solid var(--wax);border-radius:8px;background:#f6ddd4;margin-bottom:8px;color:#7a1f14;font-size:13px}
.hero{display:flex;gap:16px;align-items:stretch;flex-wrap:wrap}.hero .signcard{flex:1.5;min-width:260px}.hero .ring{flex:1;min-width:200px}
.ringwrap{display:flex;align-items:center;gap:16px}.ringsvg{width:110px;height:110px;flex:0 0 auto}
/* 指南針 */
.compass{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:470px;margin:12px auto;padding:20px;border-radius:20px;background:radial-gradient(120% 120% at 50% 38%,#e6decf,#d5cab4);border:1px solid #ba9a56;box-shadow:inset 0 2px 12px rgba(50,77,123,.18),inset 0 -2px 0 #ede8df,0 6px 18px rgba(37,57,92,.16)}
.compass .sector{position:relative;width:100%;min-height:94px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #dbd1be;background:linear-gradient(#fefdfc,#ece5d9);border-radius:16px;cursor:pointer;transition:transform .15s,box-shadow .2s;text-align:center;padding:8px;overflow:hidden;box-shadow:0 3px 8px rgba(37,57,92,.14),inset 0 1px 0 #fefefd}
.compass .sector::before{content:"";position:absolute;inset:0 0 auto 0;height:44%;background:linear-gradient(rgba(255,255,255,.72),rgba(255,255,255,0))}
.compass .sector:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(37,57,92,.24);border-color:var(--gold)}
.compass .sector .ic{font-size:26px;color:var(--caramel);position:relative}.compass .sector .l{font-size:13px;color:#21324e;font-weight:800;margin-top:4px;position:relative}
.compass .n{grid-column:2;grid-row:1}.compass .w{grid-column:1;grid-row:2}.compass .midcell{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:center}.compass .e{grid-column:3;grid-row:2}.compass .s{grid-column:2;grid-row:3}
.compass .midball{position:relative;width:80px;height:80px;border-radius:50%;background:radial-gradient(circle at 36% 30%,#eee1ca,#b39249 46%,#324d7b);display:flex;align-items:center;justify-content:center;color:#f7f3eb;box-shadow:0 8px 20px rgba(37,57,92,.45),inset 0 2px 4px rgba(241,235,223,.6),inset 0 -6px 12px rgba(32,48,77,.5)}
.compass .midball::after{content:"";position:absolute;top:12%;left:20%;width:34%;height:26%;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.75),rgba(255,255,255,0))}
/* 關注名單 */
.watchrow{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:linear-gradient(#fefdfc,#efece4);box-shadow:0 2px 6px rgba(37,57,92,.1)}
.watchrow.lv1{border-left:5px solid #b28e41}
.watchrow.lv2{border-left:5px solid #b48e3a}
.watchrow.lv3{border-left:5px solid #9e2b1c}
.wdot{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 4px 0 10px;vertical-align:middle}
.wdot.lv1{background:#b28e41}.wdot.lv2{background:#b48e3a}.wdot.lv3{background:#9e2b1c}
/* 篩選晶片列 */
.filterbar{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:6px 0 14px;padding:12px 14px;border-radius:14px;background:linear-gradient(#f4f0ea,#e8e1d3);border:1px solid #cfc4af;box-shadow:inset 0 1px 0 #fefdfc}
.fgroup{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fgroup>.lbl{font-size:12px;color:var(--dim);font-weight:700;margin-right:2px}
.fchip{border:1px solid #c3b69d;background:linear-gradient(#fefdfc,#eae3d6);color:var(--ink2);border-radius:999px;padding:5px 12px;font-size:12.5px;cursor:pointer;transition:.14s;display:inline-flex;align-items:center;gap:5px}
.fchip:hover{border-color:var(--gold);transform:translateY(-1px)}
.fchip.on{background:linear-gradient(#d0bc96,#9d8041);color:#141e31;border-color:#cebd9f;font-weight:800;box-shadow:0 3px 8px rgba(37,57,92,.24),inset 0 1px 0 #eee7d8}
.fchip.today{border-color:var(--teal)}
.fchip.today.on{background:linear-gradient(#5a7f91,#3d5c6b);color:#f2fbff;border-color:#5a7f91}
/* 挑戰分組 */
.chgroup{margin:14px 0}
.chgroup>.gh{display:flex;align-items:center;gap:10px;margin-bottom:10px;padding-bottom:6px;border-bottom:1px dashed #c3b69d}
.chgroup>.gh .gt{font-weight:800;color:#21324e;font-size:15px}
.chgroup>.gh .gd{font-size:12.5px;color:var(--dim)}
.chgroup>.gh .gc{margin-left:auto;font-size:12px;color:var(--dim)}
.chcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:12px}
.chcard{position:relative;border:1px solid #d4c9b6;border-radius:14px;padding:13px;background:linear-gradient(#fefdfc,#ede8df);box-shadow:0 3px 9px rgba(37,57,92,.12),inset 0 1px 0 #fefefd;display:flex;flex-direction:column;gap:7px;transition:transform .14s,box-shadow .2s}
.chcard.actionable{cursor:pointer}
.chcard.actionable:hover{transform:translateY(-2px);box-shadow:0 9px 20px rgba(37,57,92,.2);border-color:var(--gold)}
.chcard.locked{opacity:.72;background:linear-gradient(#f2f0ec,#e5e0d7)}
.chcard.done{background:linear-gradient(#eef3f6,#dce6eb);border-color:#a9c0cc}
.chcard.late{border-color:#d98b7f;background:linear-gradient(#fdeee9,#f7ddd4)}
.chcard .ct{display:flex;align-items:center;gap:8px;font-weight:800;color:#21324e;font-size:14.5px}
.chcard .ct .mc-ic{width:26px;height:26px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:#e8e1d3;color:var(--caramel)}
.chcard .camt{font-size:16px;font-weight:800;color:var(--caramel)}
.chcard .cmeta{font-size:12px;color:var(--dim)}
.chcard .cbtn{margin-top:2px}
.chcard .cbtn button{width:100%;justify-content:center}
.statechip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;border:1px solid transparent;white-space:nowrap}
.stc-today{background:#e7eef2;color:#2f4f5f;border-color:#a9c2ce}
.stc-open{background:#eee8dc;color:#324d7b;border-color:#cebd9f}
.stc-review{background:#e6ebf4;color:#4a6086;border-color:#b6c3da}
.stc-done{background:#e6eff3;color:#2f576b;border-color:#a9c0cc}
.stc-late{background:#fbe3dc;color:#9e2b1c;border-color:#e0a99e}
.stc-locked{background:#eae7e1;color:#867042;border-color:#cfc6b7}
.stc-official{background:#eaeef4;color:#4a5b78;border-color:#b7c2d5}
/* 步驟流程 */
.gsteps{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.gstep{position:relative;flex:1;min-width:120px;background:linear-gradient(#fefdfc,#eae3d6);border:1px solid #ccc1ad;border-radius:12px;padding:12px 10px;text-align:center;box-shadow:0 2px 6px rgba(37,57,92,.1),inset 0 1px 0 #fefefd}
.gstep .gn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 36% 30%,#eee1ca,#b39249 60%,#755f2e);color:#f7f3eb;font-size:12px;font-weight:800;box-shadow:0 2px 5px rgba(37,57,92,.3)}
.gstep .gtt{font-size:13px;font-weight:800;color:#21324e;margin-top:6px}
.gstep .gdd{font-size:11.5px;color:var(--ink2);margin-top:3px;line-height:1.6}
.gstep .garr{position:absolute;right:-11px;top:50%;transform:translateY(-50%);color:var(--gold);font-weight:900;z-index:1}
@media(max-width:640px){.gstep .garr{display:none}}
/* 任務卡 */
.taskcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.taskcard{border:1px solid var(--line);border-radius:12px;padding:14px;background:linear-gradient(#f9f7f4,#ebe4d7);box-shadow:0 4px 10px rgba(37,57,92,.08);display:flex;flex-direction:column;gap:6px}
.taskcard.done{border-color:#3d5c6b;background:linear-gradient(#eef3f6,#dce6eb)}
.taskcard .tn{font-weight:700;color:#21324e;display:flex;align-items:center;gap:7px}
.taskcard .amt{color:var(--caramel);font-weight:700}.taskcard .sess{font-size:12px;color:var(--dim)}
.catbar{display:flex;align-items:center;gap:8px;margin:14px 0 8px;color:#324d7b;font-weight:700}.catbar .ic{color:var(--caramel)}
/* 聊天室 */
.chatwrap{display:flex;gap:12px;min-height:460px}
.contacts{flex:0 0 210px;border:1px solid var(--line);border-radius:12px;background:#f4f0ea;overflow:auto;max-height:520px}
.contact{padding:11px 12px;border-bottom:1px solid #d9ceb9;cursor:pointer;display:flex;align-items:center;gap:9px}
.contact:hover{background:#eae2d4}.contact.on{background:linear-gradient(#dbcaac,#c4ae85);font-weight:700}
.contact .av{flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#cebd9f,#907740);color:#ffffff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden}
.chatmain{flex:1;border:1px solid var(--line);border-radius:12px;background:linear-gradient(#f9f7f4,#eeeae3);display:flex;flex-direction:column;min-width:0;max-width:100%;overflow:hidden}
.chathead{padding:10px 14px;border-bottom:1px solid #d9ceb9;font-weight:700;color:#21324e;display:flex;align-items:center;gap:8px}
.chatbody{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:8px;max-height:400px}
.bub{max-width:74%;padding:9px 12px;border-radius:14px;font-size:14px;line-height:1.5;position:relative;white-space:normal;word-break:break-word}
.bub a{color:#2b4d5e;text-decoration:underline}
.bub.me .sidtag{background:#ffffff2e;color:#eee6d7;border-color:#ecdec355}
.bub.me a{color:#ecdec3}
.bub.me{align-self:flex-end;background:linear-gradient(#c4ae85,#b1914c);color:#162236;border-bottom-right-radius:4px}
.bub.them{align-self:flex-start;background:#e7dfd1;color:#1e2d48;border-bottom-left-radius:4px}
.bub .t{font-size:10.5px;opacity:.7;margin-top:3px}
.chatfoot{padding:10px;border-top:1px solid #d9ceb9;display:flex;gap:8px;align-items:center}
.chatfoot input{flex:1;min-width:0}
.chatbody .bub{overflow-wrap:anywhere}
.chatwrap{max-width:100%}

/* 規範確認 */
.ruleview{max-height:360px;overflow:auto;border:1px solid #ba9a56;border-radius:10px;padding:14px;background:#f2eee6;margin-bottom:10px}
.rulesec{border-bottom:1px dashed #bdb097;padding:10px 0}.rulesec:last-child{border-bottom:0}
/* v6 新增 */
.seg{display:inline-flex;border:1px solid var(--gold);border-radius:999px;overflow:hidden;background:#f4f0ea}
.seg button{border:0;background:transparent;padding:7px 16px;font-size:13px;color:var(--ink2);cursor:pointer}
.seg button.on{background:linear-gradient(#c4ae85,#907740);color:#162236;font-weight:700}
.catcard{border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px;background:linear-gradient(#f9f7f4,#ebe4d7)}
.catcard.fixed{border-left:5px solid var(--teal)}.catcard.opp{border-left:5px solid var(--gold)}
.catcard>.h{display:flex;align-items:center;gap:8px;font-weight:700;color:#21324e;margin-bottom:10px}
.minicards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.minicard{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fefdfc;display:flex;flex-direction:column;gap:5px;cursor:pointer;transition:.15s;position:relative}
.minicard:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(37,57,92,.18);border-color:var(--gold)}
.minicard.done{border-color:var(--teal);background:linear-gradient(#eef3f6,#dce6eb);cursor:default}
.minicard .tn{font-weight:700;color:#21324e;display:flex;align-items:center;gap:6px;font-size:14px}
.minicard .amt{color:var(--caramel);font-weight:700}.minicard .stt{font-size:12px}
.mc-ic{color:var(--caramel);font-size:18px}
.togglecard{border:1px solid var(--line);border-radius:12px;margin-bottom:14px;overflow:hidden;background:#f4f0ea}
.togglecard>.th{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;font-weight:700;color:#21324e;background:linear-gradient(#eae2d4,#dfd4c0)}
.togglecard>.th .ic{color:var(--caramel)}.togglecard>.tb{padding:14px}
.switch{position:relative;width:44px;height:24px;flex:0 0 auto;margin-left:auto}
.switch input{display:none}.switch .sl{position:absolute;inset:0;background:#ccc2af;border-radius:999px;transition:.2s}
.switch .sl::before{content:"";position:absolute;width:18px;height:18px;border-radius:50%;background:#ffffff;top:3px;left:3px;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.switch input:checked+.sl{background:linear-gradient(#b1914c,#907740)}.switch input:checked+.sl::before{left:23px}
.qrow{border:1px solid #ba9a56;border-radius:10px;padding:10px;margin-bottom:8px;background:#fefdfc}
.qrow .qh{display:flex;gap:8px;align-items:center;margin-bottom:6px}
.badge.cat-fixed{color:#2b4d5e;border-color:#3d5c6b;background:#3d5c6b22}
.badge.cat-vbase{color:#324d7b;border-color:#b28e41;background:#b28e4122}
.badge.cat-vaward{color:#324d7b;border-color:#a3823c;background:#a3823c22}
.badge.cat-fb{color:#304a77;border-color:#907740;background:#90774022}
.badge.cat-grant{color:#25395c;border-color:#755f2e;background:#755f2e22}
.subtot{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.subtot .s{border:1px solid var(--line);border-radius:10px;padding:6px 10px;font-size:12.5px;background:#fefdfc}
.subtot .s b{color:var(--caramel)}
.fbitem{border:1px solid var(--line);border-radius:10px;padding:11px 12px;margin-bottom:8px;background:#fefdfc;cursor:pointer;transition:.15s}
.fbitem:hover{border-color:var(--gold);box-shadow:0 4px 10px rgba(37,57,92,.14)}
.awardline{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.rulesec .rt{font-weight:700;color:#21324e;display:flex;align-items:center;gap:8px}
.rchk{display:flex;align-items:center;gap:8px;margin-top:8px;color:#2e4771;font-size:13px}
/* v7 新增 */
.ava{border-radius:50%;object-fit:cover;width:44px;height:44px;border:2px solid #ba9a56;flex:0 0 auto;background:#ddd3c0}
.ava.sm{width:32px;height:32px;border-width:1px}.ava.big{width:60px;height:60px}.ava.xl{width:80px;height:80px}
.stbadge{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid;white-space:nowrap}
/* ===== 2026-09-19 新增：收件夾三分類／未讀／愛心／表情符號／匿名互評 ===== */
.unread{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;border-radius:999px;background:linear-gradient(#b8372a,#8e2318);color:#f9f6f0;font-size:11px;font-weight:700;line-height:1;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.contact{position:relative}
.contact .unread{margin-left:auto}
.likerow{display:flex;margin-top:3px}
.likerow.me{justify-content:flex-end}
.likebtn{border:1px solid #d9d1c3;background:#fefdfc;border-radius:999px;padding:1px 9px;font-size:13px;cursor:pointer;color:#616f88;display:inline-flex;align-items:center;gap:4px;line-height:1.6;transition:transform .18s cubic-bezier(.34,1.56,.64,1),background .18s ease-out,border-color .18s ease-out,color .18s ease-out}
.likebtn:hover{background:#f6f3ed;border-color:var(--goldD)}
.likebtn:active{transform:scale(.92)}
.likebtn.on{background:#fbe9e6;border-color:#c98a80;color:#9e2b1c;font-weight:700}
.likebtn span{font-variant-numeric:tabular-nums;font-size:11.5px}
.minicard.notopen{opacity:.72;background:#f3f0ec;cursor:default}
.taskpill.notopen{opacity:.7;cursor:default}
.minicard.notopen .amt{color:#836e41}
.urow{cursor:pointer;transition:background .18s ease-out,border-color .18s ease-out}
.urow:hover{background:#f6f3ed;border-color:var(--goldD)}
.urow .gotag{margin-left:8px;flex:0 0 auto}
/* 關注名單三率 */
.ratepills{display:flex;gap:5px;flex-wrap:wrap;margin:4px 0 2px}
.ratepill{flex:0 0 auto;display:inline-block;font-size:11px;padding:1.5px 8px;border-radius:999px;border:1px solid;white-space:nowrap;font-variant-numeric:tabular-nums}
.ratepill.ok{color:#2b4d5e;border-color:#3d5c6b;background:#3d5c6b22}
.ratepill.rmid{color:#324d7b;border-color:#b28e41;background:#b28e4122}
.ratepill.low{color:#9e2b1c;border-color:#c98a80;background:#9e2b1c1a}
.ratepill.na{color:#836e41;border-color:#cfc4af;background:#ebe7df}
/* 進行中任務總表 */
.peerhead{display:flex;gap:6px;align-items:center;flex-wrap:wrap;line-height:1.5}
.peerhead .badge{flex:0 0 auto}
.peerar{opacity:.6}
.absbadge{display:inline-block;border-radius:6px;padding:1px 7px;font-size:11px;font-weight:700}
.absbadge.leave{background:#eef4ea;border:1px solid #9fb894;color:#33422c}
.absbadge.absent{background:#fbeeea;border:1px solid #c98a80;color:#8a3a2e}
.absbadge.forgot{background:#e8e5de;border:1px solid #b39a65;color:#2d446d}
.audtabs{display:flex;gap:8px;flex-wrap:wrap}
.audrow .mid{min-width:0}
.audside{display:inline-block;border-radius:6px;padding:1px 7px;font-size:11px;font-weight:700}
.audside.stu{background:#eef4ea;border:1px solid #9fb894;color:#33422c}
.audside.adm{background:#e8e5de;border:1px solid #b39a65;color:#2d446d}
.audkind{display:inline-block;font-size:11px;color:#384e76;opacity:.9}
.proxytag{display:inline-block;background:#f6e0da;border:1px solid #c98a80;color:#8a3a2e;border-radius:6px;padding:1px 7px;font-size:11px;font-weight:700;letter-spacing:.5px;margin-bottom:4px}
.bub.me .proxytag{background:#fff2ee;border-color:#e0a89f;color:#8a3a2e}
.pvbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;background:#eef4ea;border:1px solid #9fb894;border-left:4px solid #6f8f61;border-radius:10px;padding:8px 12px;margin-bottom:10px;font-size:13px;color:#33422c}
.pvbar.wr{background:#fbeeea;border-color:#c98a80;border-left-color:#b4544a;color:#6a2a22}
.pvbar .pvact{display:flex;gap:6px;flex:0 0 auto}
.atrow{align-items:flex-start}
.atrow.ok{opacity:.72}
.atrow.over{border-color:#c98a80;background:#f9f7f4}
.atcnt{font-size:13px;font-weight:700;color:#324d7b;font-variant-numeric:tabular-nums;white-space:nowrap}
.atcnt.ok{color:#2b4d5e}
.atrow .mid{min-width:0}
.urow .sidtag{display:inline-block;width:auto;vertical-align:middle}
.urow .mid{min-width:0}
.urow .mid .small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.emopanel{display:flex;flex-wrap:wrap;gap:4px;padding:8px 12px 0;animation:emoIn .2s ease-out}
@keyframes emoIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.emobtn{border:1px solid var(--line);background:#fefdfc;border-radius:9px;width:32px;height:32px;font-size:17px;line-height:1;cursor:pointer;transition:transform .15s cubic-bezier(.34,1.56,.64,1),background .15s ease-out}
.emobtn:hover{background:#f6f3ed;transform:translateY(-1px)}
.emobtn:active{transform:scale(.9)}
.fbcard{margin-bottom:10px;position:relative}
.fbcard.isnew{border-color:var(--goldD);box-shadow:0 0 0 2px #b89b5c33}
.fbhead{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding-bottom:7px;margin-bottom:7px;border-bottom:1px dashed var(--line);font-size:13px}
.fbqa{padding:7px 0;border-bottom:1px dotted #d9ceb9}
.fbqa:last-child{border-bottom:0}
.fbqa .q{font-size:12px;color:#836e41;margin-bottom:3px}
.fbqa .a{font-size:14px;line-height:1.6;color:#21324e}
.anonbox{margin-top:9px;padding:9px 11px;border-radius:10px;background:#f5f3ed;border:1px dashed #c98a80}
.anonbox.ok{background:#eef3f5;border-color:#8fa7b3}
.anonrow{display:flex;align-items:flex-start;gap:7px;font-size:13px;line-height:1.6;color:#354e78;padding:4px 0}
.anonrow .ic{width:15px;height:15px;flex:0 0 15px;margin-top:3px;opacity:.7}
.chatfoot textarea.input{flex:1;font-family:inherit;line-height:1.5;max-height:110px;overflow-y:auto}
.stb-none{color:#76633a;border-color:#bbaf98;background:#bbaf9822}
.stb-pending{color:#324d7b;border-color:#b28e41;background:#b28e4122}
.stb-approved{color:#2b4d5e;border-color:#3d5c6b;background:#3d5c6b22}
.stb-rejected{color:#9e2b1c;border-color:#c0503c;background:#c0503c22}
.stb-late{color:#9e2b1c;border-color:#9e2b1c;background:#9e2b1c18}
.taskpill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:6px 12px;background:#fefdfc;cursor:pointer;transition:.15s;font-size:13px;margin:0 6px 6px 0}
.taskpill:hover{border-color:var(--gold);transform:translateY(-1px)}
.taskpill.done{border-color:#3d5c6b;background:#eef3f6}.taskpill .mc-ic{color:var(--caramel)}
.wbtabs{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 14px;border-bottom:2px solid #d9ceb9;padding-bottom:10px}
.wbtab{border:1px solid var(--line);background:#f4f0ea;border-radius:999px;padding:7px 14px;cursor:pointer;font-size:13px;color:var(--ink2);position:relative}
.wbtab.on{background:linear-gradient(#c4ae85,#907740);color:#162236;font-weight:700;border-color:transparent}
.wbtab .cnt{background:#9e2b1c;color:#ffffff;border-radius:999px;font-size:10px;padding:1px 6px;margin-left:5px}
.todobar{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0}
.todochip{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;padding:10px 14px;background:#fefdfc;cursor:pointer;transition:.15s}
.todochip:hover{border-color:var(--gold);box-shadow:0 4px 10px rgba(37,57,92,.14)}
.todochip.hot{border-left:4px solid #9e2b1c}.todochip .n{font-size:20px;font-weight:800;color:#755f2e}.todochip.zero .n{color:#3d5c6b}
.subrow{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;background:#fefdfc}
.subrow .rh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.signrow{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px dashed #d3c9b4}
.signrow:last-child{border-bottom:0}
.hwcard{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:#fefdfc;cursor:pointer;transition:.15s;display:flex;gap:12px;align-items:center}
.hwcard:hover{border-color:var(--gold);box-shadow:0 4px 12px rgba(37,57,92,.14)}
.bubwrap{display:flex;gap:8px;align-items:flex-end;margin-bottom:10px}
.bubwrap.me{flex-direction:row-reverse}
.bubwrap .sidtag{font-size:10px;color:#76633a;border:1px solid #ba9a56;border-radius:6px;padding:0 5px;margin-bottom:3px;display:inline-block}

/* ===================== THEME OVERRIDE：高級奇幻藏寶圖 ===================== */
:root{
  --navy:#0c1524;--navy2:#131c2d;--parch:#eae5dc;--parchD:#c6b9a0;--gold:#b89853;--goldL:#cebfa3;--goldD:#8f763f;
  --brass:#8f763f;--wood:#25395c;--teal:#3d5c6b;--wax:#7c2b22;--waxL:#9e3a2c;
  --ink:#1f2b41;--ink2:#354e78;--dim:#4e596d;--cream:#eae5dc;--panel:#eae5dc;--line:#baab90;--cocoa:#1f2b41;
}
/* 背景＝正在探索的世界地圖 */
body{color:#e0d8cb;background:linear-gradient(160deg,#0c1729 0%,#0b1526 55%,#0c121c 100%)}
#bg{display:none!important;}
.wrap{max-width:1080px}

/* 導覽列＝探險工具列（深木＋黃銅） */
.topbar{background:linear-gradient(#131d2f,#0b111c);border-bottom:2px solid var(--brass);box-shadow:0 4px 18px rgba(4,8,14,.55),inset 0 -1px 0 rgba(184,152,83,.3)}
.topbar .brand2{color:#e0d8cb}
.who{color:#cebfa3}.who small{color:#ae935a}
.tabs{gap:10px}
.tab{background:linear-gradient(#152033,#0e1623);color:#cebfa3;border:1px solid var(--brass);border-radius:12px 12px 9px 9px;box-shadow:0 3px 8px rgba(4,8,14,.4),inset 0 1px 0 rgba(184,152,83,.25);font-weight:700;text-shadow:0 1px 0 rgba(0,0,0,.5)}
.tab::before{background:linear-gradient(rgba(184,152,83,.14),transparent)}
.tab:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(4,8,14,.5);filter:brightness(1.08)}
.tab.on{background:linear-gradient(#cebfa3,#b89853 55%,#8f763f);color:#131d2f;border:1px solid #e1d4bd;box-shadow:0 6px 16px rgba(4,8,14,.5),inset 0 1px 0 #f2ece0,0 0 12px rgba(184,152,83,.45);text-shadow:0 1px 0 rgba(241,235,223,.6)}
.tab.on::before{background:linear-gradient(rgba(255,255,255,.35),transparent)}
.tab.on::after{background:linear-gradient(90deg,transparent,#131d2f,transparent);opacity:.4}

/* ===== 主 CTA ＝ 藏寶箱正面 ===== */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:14px;font-weight:700;color:var(--ink);
  padding:10px 18px;border:0;border-radius:7px;background:linear-gradient(#eae5dc,#d8cdba);
  box-shadow:0 3px 9px rgba(6,11,20,.3),inset 0 0 0 2px var(--brass),inset 0 1px 0 #f9f7f2;
  clip-path:polygon(7px 0,calc(100% - 7px) 0,100% 7px,100% calc(100% - 7px),calc(100% - 7px) 100%,7px 100%,0 calc(100% - 7px),0 7px);
  transition:transform .12s,box-shadow .2s,filter .2s;text-shadow:0 1px 0 rgba(247,243,236,.5)}
.btn::before{display:none}
.btn:hover{transform:translateY(-1px);filter:brightness(1.04);box-shadow:0 6px 14px rgba(6,11,20,.34),inset 0 0 0 2px var(--goldL),inset 0 1px 0 #f9f7f2}
.btn:active{transform:translateY(1px)}

.btn.primary{color:#eee7d9;font-weight:800;letter-spacing:.08em;padding:22px 26px 12px;min-height:56px;border-radius:9px;clip-path:none;
  background:
    radial-gradient(circle at 13px 13px,#d9c7a6 0 2.2px,#324d7b 2.2px 3.4px,transparent 3.9px),
    radial-gradient(circle at calc(100% - 13px) 13px,#d9c7a6 0 2.2px,#324d7b 2.2px 3.4px,transparent 3.9px),
    radial-gradient(circle at 13px calc(100% - 13px),#d9c7a6 0 2.2px,#324d7b 2.2px 3.4px,transparent 3.9px),
    radial-gradient(circle at calc(100% - 13px) calc(100% - 13px),#d9c7a6 0 2.2px,#324d7b 2.2px 3.4px,transparent 3.9px),
    linear-gradient(90deg,transparent calc(50% - 1px),rgba(0,0,0,.30) calc(50% - 1px) calc(50% + 1px),transparent calc(50% + 1px)),
    linear-gradient(180deg,rgba(0,0,0,.28) 0 2px,transparent 2px) 0 40%/100% 40% no-repeat,
    linear-gradient(180deg,rgba(240,228,206,.14) 0,transparent 40%),
    repeating-linear-gradient(91deg,rgba(0,0,0,.10) 0 3px,rgba(255,255,255,.02) 3px 7px),
    linear-gradient(#2c436b,#1c2a44);
  box-shadow:0 10px 22px rgba(4,8,14,.6),inset 0 0 0 2px #755f2e,inset 0 0 0 4px #25395c,inset 0 2px 0 rgba(228,218,200,.2),inset 0 -6px 12px rgba(0,0,0,.5);
  text-shadow:0 1px 0 rgba(0,0,0,.7)}
.btn.primary.block{width:auto;max-width:360px;margin-left:auto;margin-right:auto;display:flex;min-height:58px}
.btn.primary::before{content:"";display:block;position:absolute;left:50%;top:9px;transform:translateX(-50%);width:30px;height:26px;border-radius:5px;
  background:radial-gradient(circle at 50% 34%,#101928 0 2.4px,transparent 3px),radial-gradient(ellipse 2px 5px at 50% 60%,#101928 0 100%,transparent 0),linear-gradient(#dfceaf,#967b41 70%,#755f2e);
  box-shadow:0 2px 4px rgba(0,0,0,.55),inset 0 1px 0 rgba(243,237,226,.7),inset 0 -2px 3px rgba(0,0,0,.4);transition:box-shadow .2s}
.btn.primary::after{content:"";position:absolute;inset:0;border-radius:8px;pointer-events:none;background:radial-gradient(120% 90% at 50% 120%,rgba(224,201,158,0),rgba(224,201,158,0));transition:background .25s}
.btn.primary:hover{transform:translateY(-2px);filter:brightness(1.06);box-shadow:0 12px 24px rgba(4,8,14,.66),inset 0 0 0 2px #8f763f,inset 0 0 0 4px #25395c,inset 0 2px 0 rgba(228,218,200,.2),inset 0 -5px 10px rgba(0,0,0,.5),0 0 16px rgba(213,193,154,.4)}
.btn.primary:hover::before{box-shadow:0 1px 2px rgba(0,0,0,.5),inset 0 1px 0 rgba(240,232,219,.6),0 0 10px rgba(229,210,174,.95)}
.btn.primary:active{transform:translateY(1px)}
.btn.primary:active::after{background:radial-gradient(120% 120% at 50% 130%,rgba(224,201,158,.55),rgba(217,188,135,.14) 45%,transparent 70%)}

.btn.gold{color:#131d2f;background:linear-gradient(#d9c7a6,#b89853 55%,#8f763f);box-shadow:0 4px 12px rgba(50,77,123,.34),inset 0 0 0 1.5px #e1d4bd,inset 0 1px 0 #f2ece0;clip-path:polygon(7px 0,calc(100% - 7px) 0,100% 7px,100% calc(100% - 7px),calc(100% - 7px) 100%,7px 100%,0 calc(100% - 7px),0 7px)}
.btn.teal{color:#eaf8ff;background:linear-gradient(#4d7285,#3d5c6b);box-shadow:0 3px 9px rgba(20,40,50,.4),inset 0 0 0 1.5px #6f99ae,inset 0 1px 0 rgba(220,243,255,.3)}
.btn.danger{color:#ffe9e2;background:linear-gradient(#9e3a2c,#7c2b22);box-shadow:0 3px 9px rgba(60,16,10,.4),inset 0 0 0 1.5px #c15a48,inset 0 1px 0 rgba(255,220,210,.25)}
.btn.ghost{background:linear-gradient(#e7e0d2,#d6cbb8);color:var(--ink2)}
.btn.sm{padding:7px 12px;min-height:0;font-size:12.5px}
.btn.sm.primary{padding:14px 14px 7px;min-height:0}
.btn.sm.primary::before{top:5px;width:22px;height:16px}
.btn.sm.primary.block{max-width:320px}
.btn.block{width:100%}

/* ===== 卡片＝收藏地圖 ===== */
.card{color:var(--ink);border:1px solid var(--brass);border-radius:12px;background:
  url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20200%20200%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27rgba%28201%2C154%2C96%2C0.1%29%27%20stroke-width%3D%271%27%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2798%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2778%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2758%27%2F%3E%3Cg%20stroke-width%3D%27.5%27%3E%3Cline%20x1%3D%27192.0%27%20y1%3D%27100.0%27%20x2%3D%27200.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%27108.4%27%20x2%3D%27199.6%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%27116.0%27%20x2%3D%27198.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%27124.8%27%20x2%3D%27196.6%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%27131.5%27%20x2%3D%27194.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%27140.6%27%20x2%3D%27190.6%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%27146.0%27%20x2%3D%27186.6%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%27155.1%27%20x2%3D%27181.9%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%27159.1%27%20x2%3D%27176.6%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%27167.9%27%20x2%3D%27170.7%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%27170.5%27%20x2%3D%27164.3%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%27178.6%27%20x2%3D%27157.4%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%27179.7%27%20x2%3D%27150.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%27187.0%27%20x2%3D%27142.3%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%27186.5%27%20x2%3D%27134.2%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%27192.7%27%20x2%3D%27125.9%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%27190.6%27%20x2%3D%27117.4%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%27195.6%27%20x2%3D%27108.7%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%27192.0%27%20x2%3D%27100.0%27%20y2%3D%27200.0%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%27195.6%27%20x2%3D%2791.3%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%27190.6%27%20x2%3D%2782.6%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%27192.7%27%20x2%3D%2774.1%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%27186.5%27%20x2%3D%2765.8%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%27187.0%27%20x2%3D%2757.7%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%27179.7%27%20x2%3D%2750.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%27178.6%27%20x2%3D%2742.6%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%27170.5%27%20x2%3D%2735.7%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%27167.9%27%20x2%3D%2729.3%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%27159.1%27%20x2%3D%2723.4%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%27155.1%27%20x2%3D%2718.1%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%27146.0%27%20x2%3D%2713.4%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%27140.6%27%20x2%3D%279.4%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%27131.5%27%20x2%3D%276.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%27124.8%27%20x2%3D%273.4%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%27116.0%27%20x2%3D%271.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%27108.4%27%20x2%3D%270.4%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%278.0%27%20y1%3D%27100.0%27%20x2%3D%270.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%2791.6%27%20x2%3D%270.4%27%20y2%3D%2791.3%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%2784.0%27%20x2%3D%271.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%2775.2%27%20x2%3D%273.4%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%2768.5%27%20x2%3D%276.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%2759.4%27%20x2%3D%279.4%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%2754.0%27%20x2%3D%2713.4%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%2744.9%27%20x2%3D%2718.1%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%2740.9%27%20x2%3D%2723.4%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%2732.1%27%20x2%3D%2729.3%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%2729.5%27%20x2%3D%2735.7%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%2721.4%27%20x2%3D%2742.6%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%2720.3%27%20x2%3D%2750.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%2713.0%27%20x2%3D%2757.7%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%2713.5%27%20x2%3D%2765.8%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%277.3%27%20x2%3D%2774.1%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%279.4%27%20x2%3D%2782.6%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%274.4%27%20x2%3D%2791.3%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%278.0%27%20x2%3D%27100.0%27%20y2%3D%270.0%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%274.4%27%20x2%3D%27108.7%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%279.4%27%20x2%3D%27117.4%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%277.3%27%20x2%3D%27125.9%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%2713.5%27%20x2%3D%27134.2%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%2713.0%27%20x2%3D%27142.3%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%2720.3%27%20x2%3D%27150.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%2721.4%27%20x2%3D%27157.4%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%2729.5%27%20x2%3D%27164.3%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%2732.1%27%20x2%3D%27170.7%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%2740.9%27%20x2%3D%27176.6%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%2744.9%27%20x2%3D%27181.9%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%2754.0%27%20x2%3D%27186.6%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%2759.4%27%20x2%3D%27190.6%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%2768.5%27%20x2%3D%27194.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%2775.2%27%20x2%3D%27196.6%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%2784.0%27%20x2%3D%27198.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%2791.6%27%20x2%3D%27199.6%27%20y2%3D%2791.3%27%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20fill%3D%27rgba%28201%2C154%2C96%2C0.1%29%27%3E%3Cpath%20d%3D%27M100%206%20L110%2090%20L100%2084%20L90%2090%20Z%27%2F%3E%3Cpath%20d%3D%27M100%20194%20L110%20110%20L100%20116%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M6%20100%20L90%2090%20L84%20100%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M194%20100%20L110%2090%20L116%20100%20L110%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M40%2040%20L96%2096%20L92%20100%20L88%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%2040%20L104%2096%20L108%20100%20L112%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M40%20160%20L96%20104%20L92%20100%20L88%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%20160%20L104%20104%20L108%20100%20L112%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%274%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat right 10px bottom 8px / 92px,
  linear-gradient(150deg,#eeeae2,#e7dfd1);
  box-shadow:0 10px 24px rgba(4,8,14,.4),inset 0 0 0 1px rgba(184,152,83,.35),inset 0 0 40px rgba(50,77,123,.06);}
.card::before{content:"";position:absolute;left:14px;right:14px;top:0;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--brass),transparent);opacity:.75}
.card::after{content:"";position:absolute;inset:5px;border:1px solid rgba(184,152,83,.28);border-radius:9px;pointer-events:none}
.card{position:relative}
.card h3{color:var(--ink)}
.card h3 .ic{background:radial-gradient(circle at 38% 30%,#e1d4bd,#b89853 68%,#8f763f);color:#131d2f;box-shadow:0 2px 6px rgba(4,8,14,.3),inset 0 1px 0 #f4efe6}
.desc{color:var(--ink2);border-bottom:1.5px dashed var(--line)}
.small{color:var(--dim)}
h2{color:var(--ink);border-bottom-color:var(--brass)}
h3{color:var(--ink)}
.card.dark{color:#eae5dc;border:1px solid var(--brass);background:
  url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20200%20200%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27rgba%28201%2C154%2C96%2C0.1%29%27%20stroke-width%3D%271%27%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2798%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2778%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2758%27%2F%3E%3Cg%20stroke-width%3D%27.5%27%3E%3Cline%20x1%3D%27192.0%27%20y1%3D%27100.0%27%20x2%3D%27200.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%27108.4%27%20x2%3D%27199.6%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%27116.0%27%20x2%3D%27198.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%27124.8%27%20x2%3D%27196.6%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%27131.5%27%20x2%3D%27194.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%27140.6%27%20x2%3D%27190.6%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%27146.0%27%20x2%3D%27186.6%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%27155.1%27%20x2%3D%27181.9%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%27159.1%27%20x2%3D%27176.6%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%27167.9%27%20x2%3D%27170.7%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%27170.5%27%20x2%3D%27164.3%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%27178.6%27%20x2%3D%27157.4%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%27179.7%27%20x2%3D%27150.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%27187.0%27%20x2%3D%27142.3%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%27186.5%27%20x2%3D%27134.2%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%27192.7%27%20x2%3D%27125.9%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%27190.6%27%20x2%3D%27117.4%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%27195.6%27%20x2%3D%27108.7%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%27192.0%27%20x2%3D%27100.0%27%20y2%3D%27200.0%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%27195.6%27%20x2%3D%2791.3%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%27190.6%27%20x2%3D%2782.6%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%27192.7%27%20x2%3D%2774.1%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%27186.5%27%20x2%3D%2765.8%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%27187.0%27%20x2%3D%2757.7%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%27179.7%27%20x2%3D%2750.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%27178.6%27%20x2%3D%2742.6%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%27170.5%27%20x2%3D%2735.7%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%27167.9%27%20x2%3D%2729.3%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%27159.1%27%20x2%3D%2723.4%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%27155.1%27%20x2%3D%2718.1%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%27146.0%27%20x2%3D%2713.4%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%27140.6%27%20x2%3D%279.4%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%27131.5%27%20x2%3D%276.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%27124.8%27%20x2%3D%273.4%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%27116.0%27%20x2%3D%271.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%27108.4%27%20x2%3D%270.4%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%278.0%27%20y1%3D%27100.0%27%20x2%3D%270.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%2791.6%27%20x2%3D%270.4%27%20y2%3D%2791.3%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%2784.0%27%20x2%3D%271.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%2775.2%27%20x2%3D%273.4%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%2768.5%27%20x2%3D%276.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%2759.4%27%20x2%3D%279.4%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%2754.0%27%20x2%3D%2713.4%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%2744.9%27%20x2%3D%2718.1%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%2740.9%27%20x2%3D%2723.4%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%2732.1%27%20x2%3D%2729.3%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%2729.5%27%20x2%3D%2735.7%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%2721.4%27%20x2%3D%2742.6%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%2720.3%27%20x2%3D%2750.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%2713.0%27%20x2%3D%2757.7%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%2713.5%27%20x2%3D%2765.8%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%277.3%27%20x2%3D%2774.1%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%279.4%27%20x2%3D%2782.6%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%274.4%27%20x2%3D%2791.3%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%278.0%27%20x2%3D%27100.0%27%20y2%3D%270.0%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%274.4%27%20x2%3D%27108.7%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%279.4%27%20x2%3D%27117.4%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%277.3%27%20x2%3D%27125.9%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%2713.5%27%20x2%3D%27134.2%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%2713.0%27%20x2%3D%27142.3%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%2720.3%27%20x2%3D%27150.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%2721.4%27%20x2%3D%27157.4%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%2729.5%27%20x2%3D%27164.3%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%2732.1%27%20x2%3D%27170.7%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%2740.9%27%20x2%3D%27176.6%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%2744.9%27%20x2%3D%27181.9%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%2754.0%27%20x2%3D%27186.6%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%2759.4%27%20x2%3D%27190.6%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%2768.5%27%20x2%3D%27194.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%2775.2%27%20x2%3D%27196.6%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%2784.0%27%20x2%3D%27198.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%2791.6%27%20x2%3D%27199.6%27%20y2%3D%2791.3%27%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20fill%3D%27rgba%28201%2C154%2C96%2C0.1%29%27%3E%3Cpath%20d%3D%27M100%206%20L110%2090%20L100%2084%20L90%2090%20Z%27%2F%3E%3Cpath%20d%3D%27M100%20194%20L110%20110%20L100%20116%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M6%20100%20L90%2090%20L84%20100%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M194%20100%20L110%2090%20L116%20100%20L110%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M40%2040%20L96%2096%20L92%20100%20L88%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%2040%20L104%2096%20L108%20100%20L112%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M40%20160%20L96%20104%20L92%20100%20L88%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%20160%20L104%20104%20L108%20100%20L112%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%274%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat right 10px bottom 8px / 92px,
  linear-gradient(#1e2d48,#101928);}
.card.dark::after{border-color:rgba(184,152,83,.3)}
.card.dark h3{color:#e3d8c3}.card.dark .desc{color:#c1b6a1;border-bottom-color:rgba(184,152,83,.35)}
.card.dark .small{color:#b6ab95}

/* ===== 對話框＝探險家地圖訊息（羊皮卷軸） ===== */
.note{color:var(--ink);border:1px solid var(--brass);border-left:5px solid var(--brass);border-radius:10px;background:
  url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20200%20200%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27rgba%28201%2C154%2C96%2C0.12%29%27%20stroke-width%3D%271%27%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2798%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2778%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2758%27%2F%3E%3Cg%20stroke-width%3D%27.5%27%3E%3Cline%20x1%3D%27192.0%27%20y1%3D%27100.0%27%20x2%3D%27200.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%27108.4%27%20x2%3D%27199.6%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%27116.0%27%20x2%3D%27198.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%27124.8%27%20x2%3D%27196.6%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%27131.5%27%20x2%3D%27194.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%27140.6%27%20x2%3D%27190.6%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%27146.0%27%20x2%3D%27186.6%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%27155.1%27%20x2%3D%27181.9%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%27159.1%27%20x2%3D%27176.6%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%27167.9%27%20x2%3D%27170.7%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%27170.5%27%20x2%3D%27164.3%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%27178.6%27%20x2%3D%27157.4%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%27179.7%27%20x2%3D%27150.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%27187.0%27%20x2%3D%27142.3%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%27186.5%27%20x2%3D%27134.2%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%27192.7%27%20x2%3D%27125.9%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%27190.6%27%20x2%3D%27117.4%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%27195.6%27%20x2%3D%27108.7%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%27192.0%27%20x2%3D%27100.0%27%20y2%3D%27200.0%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%27195.6%27%20x2%3D%2791.3%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%27190.6%27%20x2%3D%2782.6%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%27192.7%27%20x2%3D%2774.1%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%27186.5%27%20x2%3D%2765.8%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%27187.0%27%20x2%3D%2757.7%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%27179.7%27%20x2%3D%2750.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%27178.6%27%20x2%3D%2742.6%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%27170.5%27%20x2%3D%2735.7%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%27167.9%27%20x2%3D%2729.3%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%27159.1%27%20x2%3D%2723.4%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%27155.1%27%20x2%3D%2718.1%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%27146.0%27%20x2%3D%2713.4%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%27140.6%27%20x2%3D%279.4%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%27131.5%27%20x2%3D%276.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%27124.8%27%20x2%3D%273.4%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%27116.0%27%20x2%3D%271.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%27108.4%27%20x2%3D%270.4%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%278.0%27%20y1%3D%27100.0%27%20x2%3D%270.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%2791.6%27%20x2%3D%270.4%27%20y2%3D%2791.3%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%2784.0%27%20x2%3D%271.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%2775.2%27%20x2%3D%273.4%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%2768.5%27%20x2%3D%276.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%2759.4%27%20x2%3D%279.4%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%2754.0%27%20x2%3D%2713.4%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%2744.9%27%20x2%3D%2718.1%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%2740.9%27%20x2%3D%2723.4%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%2732.1%27%20x2%3D%2729.3%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%2729.5%27%20x2%3D%2735.7%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%2721.4%27%20x2%3D%2742.6%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%2720.3%27%20x2%3D%2750.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%2713.0%27%20x2%3D%2757.7%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%2713.5%27%20x2%3D%2765.8%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%277.3%27%20x2%3D%2774.1%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%279.4%27%20x2%3D%2782.6%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%274.4%27%20x2%3D%2791.3%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%278.0%27%20x2%3D%27100.0%27%20y2%3D%270.0%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%274.4%27%20x2%3D%27108.7%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%279.4%27%20x2%3D%27117.4%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%277.3%27%20x2%3D%27125.9%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%2713.5%27%20x2%3D%27134.2%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%2713.0%27%20x2%3D%27142.3%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%2720.3%27%20x2%3D%27150.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%2721.4%27%20x2%3D%27157.4%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%2729.5%27%20x2%3D%27164.3%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%2732.1%27%20x2%3D%27170.7%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%2740.9%27%20x2%3D%27176.6%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%2744.9%27%20x2%3D%27181.9%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%2754.0%27%20x2%3D%27186.6%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%2759.4%27%20x2%3D%27190.6%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%2768.5%27%20x2%3D%27194.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%2775.2%27%20x2%3D%27196.6%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%2784.0%27%20x2%3D%27198.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%2791.6%27%20x2%3D%27199.6%27%20y2%3D%2791.3%27%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20fill%3D%27rgba%28201%2C154%2C96%2C0.12%29%27%3E%3Cpath%20d%3D%27M100%206%20L110%2090%20L100%2084%20L90%2090%20Z%27%2F%3E%3Cpath%20d%3D%27M100%20194%20L110%20110%20L100%20116%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M6%20100%20L90%2090%20L84%20100%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M194%20100%20L110%2090%20L116%20100%20L110%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M40%2040%20L96%2096%20L92%20100%20L88%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%2040%20L104%2096%20L108%20100%20L112%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M40%20160%20L96%20104%20L92%20100%20L88%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%20160%20L104%20104%20L108%20100%20L112%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%274%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat right 8px center / 64px,
  linear-gradient(#eae5dc,#ddd3c0);box-shadow:inset 0 0 0 1px rgba(184,152,83,.25),0 3px 10px rgba(4,8,14,.2)}

/* ===== 收件夾／訊息中心：明確黃銅外框 ===== */
.chatwrap{border:1px solid var(--brass);border-radius:14px;padding:12px;background:linear-gradient(#152033,#0e1521);box-shadow:inset 0 0 0 1px rgba(184,152,83,.2),0 8px 20px rgba(4,8,14,.4)}
.contacts{flex:0 0 210px;border:1px solid var(--brass);border-radius:10px;background:linear-gradient(#eeeae2,#dfd6c5);overflow:auto;max-height:520px}
.contact{border-bottom:1px solid rgba(184,152,83,.4);color:var(--ink)}
.contact.on{background:linear-gradient(#dbcfba,#cbbda2)}
.chatmain{border:1px solid var(--brass);border-radius:10px;background:
  url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20200%20200%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27rgba%28201%2C154%2C96%2C0.12%29%27%20stroke-width%3D%271%27%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2798%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2778%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2758%27%2F%3E%3Cg%20stroke-width%3D%27.5%27%3E%3Cline%20x1%3D%27192.0%27%20y1%3D%27100.0%27%20x2%3D%27200.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%27108.4%27%20x2%3D%27199.6%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%27116.0%27%20x2%3D%27198.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%27124.8%27%20x2%3D%27196.6%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%27131.5%27%20x2%3D%27194.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%27140.6%27%20x2%3D%27190.6%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%27146.0%27%20x2%3D%27186.6%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%27155.1%27%20x2%3D%27181.9%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%27159.1%27%20x2%3D%27176.6%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%27167.9%27%20x2%3D%27170.7%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%27170.5%27%20x2%3D%27164.3%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%27178.6%27%20x2%3D%27157.4%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%27179.7%27%20x2%3D%27150.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%27187.0%27%20x2%3D%27142.3%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%27186.5%27%20x2%3D%27134.2%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%27192.7%27%20x2%3D%27125.9%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%27190.6%27%20x2%3D%27117.4%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%27195.6%27%20x2%3D%27108.7%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%27192.0%27%20x2%3D%27100.0%27%20y2%3D%27200.0%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%27195.6%27%20x2%3D%2791.3%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%27190.6%27%20x2%3D%2782.6%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%27192.7%27%20x2%3D%2774.1%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%27186.5%27%20x2%3D%2765.8%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%27187.0%27%20x2%3D%2757.7%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%27179.7%27%20x2%3D%2750.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%27178.6%27%20x2%3D%2742.6%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%27170.5%27%20x2%3D%2735.7%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%27167.9%27%20x2%3D%2729.3%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%27159.1%27%20x2%3D%2723.4%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%27155.1%27%20x2%3D%2718.1%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%27146.0%27%20x2%3D%2713.4%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%27140.6%27%20x2%3D%279.4%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%27131.5%27%20x2%3D%276.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%27124.8%27%20x2%3D%273.4%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%27116.0%27%20x2%3D%271.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%27108.4%27%20x2%3D%270.4%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%278.0%27%20y1%3D%27100.0%27%20x2%3D%270.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%2791.6%27%20x2%3D%270.4%27%20y2%3D%2791.3%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%2784.0%27%20x2%3D%271.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%2775.2%27%20x2%3D%273.4%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%2768.5%27%20x2%3D%276.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%2759.4%27%20x2%3D%279.4%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%2754.0%27%20x2%3D%2713.4%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%2744.9%27%20x2%3D%2718.1%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%2740.9%27%20x2%3D%2723.4%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%2732.1%27%20x2%3D%2729.3%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%2729.5%27%20x2%3D%2735.7%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%2721.4%27%20x2%3D%2742.6%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%2720.3%27%20x2%3D%2750.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%2713.0%27%20x2%3D%2757.7%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%2713.5%27%20x2%3D%2765.8%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%277.3%27%20x2%3D%2774.1%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%279.4%27%20x2%3D%2782.6%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%274.4%27%20x2%3D%2791.3%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%278.0%27%20x2%3D%27100.0%27%20y2%3D%270.0%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%274.4%27%20x2%3D%27108.7%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%279.4%27%20x2%3D%27117.4%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%277.3%27%20x2%3D%27125.9%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%2713.5%27%20x2%3D%27134.2%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%2713.0%27%20x2%3D%27142.3%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%2720.3%27%20x2%3D%27150.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%2721.4%27%20x2%3D%27157.4%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%2729.5%27%20x2%3D%27164.3%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%2732.1%27%20x2%3D%27170.7%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%2740.9%27%20x2%3D%27176.6%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%2744.9%27%20x2%3D%27181.9%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%2754.0%27%20x2%3D%27186.6%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%2759.4%27%20x2%3D%27190.6%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%2768.5%27%20x2%3D%27194.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%2775.2%27%20x2%3D%27196.6%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%2784.0%27%20x2%3D%27198.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%2791.6%27%20x2%3D%27199.6%27%20y2%3D%2791.3%27%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20fill%3D%27rgba%28201%2C154%2C96%2C0.12%29%27%3E%3Cpath%20d%3D%27M100%206%20L110%2090%20L100%2084%20L90%2090%20Z%27%2F%3E%3Cpath%20d%3D%27M100%20194%20L110%20110%20L100%20116%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M6%20100%20L90%2090%20L84%20100%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M194%20100%20L110%2090%20L116%20100%20L110%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M40%2040%20L96%2096%20L92%20100%20L88%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%2040%20L104%2096%20L108%20100%20L112%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M40%20160%20L96%20104%20L92%20100%20L88%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%20160%20L104%20104%20L108%20100%20L112%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%274%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat right 12px top 12px / 90px,
  linear-gradient(#eeeae2,#e7dfd1);display:flex;flex-direction:column}
.chathead{border-bottom:1px solid rgba(184,152,83,.4);color:var(--ink);background:linear-gradient(#e4dac8,#d8ccb6)}
.chatfoot{border-top:1px solid rgba(184,152,83,.4)}
.bub.them{background:linear-gradient(#f2ede5,#e6dece);border:1px solid var(--brass);color:var(--ink)}
.bub.me{background:linear-gradient(#4d7285,#3d5c6b);color:#eaf8ff;border:1px solid #6f99ae}
.sidtag{background:rgba(184,152,83,.22);color:#2e4771;border-radius:5px;padding:1px 6px}

/* 篩選/晶片/表單/名牌 等在深底上維持羊皮 */
.filterbar{background:linear-gradient(#eae5dc,#ddd3c0);border:1px solid var(--brass)}
.fchip{background:linear-gradient(#eeeae2,#ddd3c0);border:1px solid var(--brass);color:var(--ink)}
.fchip.on{background:linear-gradient(#cebfa3,#b89853);color:#131d2f;border-color:#e1d4bd}
.input{background:#f4f0ea;border:1px solid var(--gold);color:var(--ink)}
.input::placeholder{color:#58667d}
.name-card{background:linear-gradient(#eeeae2,#dfd6c5);border:1px solid var(--brass)}
.minicard{background:linear-gradient(#eeeae2,#e7dfd1);border:1px solid var(--brass)}
.taskpill{background:linear-gradient(#eeeae2,#ddd3c0);border:1px solid var(--brass);color:var(--ink)}
.taskpill.done{background:linear-gradient(#dce6eb,#c8d6dd);border-color:#7f9eae}
.listrow{border:1px solid rgba(184,152,83,.35);border-radius:9px;background:rgba(238,234,226,.55)}
.chgroup>.gh{border-bottom:1px dashed var(--brass)}
.chcard{background:linear-gradient(#eeeae2,#e7dfd1);border:1px solid var(--brass)}
.chcard .mc-ic,.hwcard .mc-ic,.minicard .mc-ic,.chcard .ct .mc-ic{background:radial-gradient(circle at 38% 30%,#e1d4bd,#b89853 68%,#8f763f);color:#131d2f}
.hwcard{background:linear-gradient(#eeeae2,#e7dfd1);border:1px solid var(--brass)}
.togglecard{border:1px solid var(--brass)}
.togglecard>.th{background:linear-gradient(#e4dac8,#d8ccb6);color:var(--ink)}
table th{background:linear-gradient(#e4dac8,#d8ccb6);color:var(--ink);border-color:var(--brass)}
table td{border-color:rgba(184,152,83,.3)}
.parch{border:1px solid var(--brass);background:
  url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20200%20200%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27rgba%28201%2C154%2C96%2C0.1%29%27%20stroke-width%3D%271%27%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2798%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2778%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2758%27%2F%3E%3Cg%20stroke-width%3D%27.5%27%3E%3Cline%20x1%3D%27192.0%27%20y1%3D%27100.0%27%20x2%3D%27200.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%27108.4%27%20x2%3D%27199.6%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%27116.0%27%20x2%3D%27198.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%27124.8%27%20x2%3D%27196.6%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%27131.5%27%20x2%3D%27194.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%27140.6%27%20x2%3D%27190.6%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%27146.0%27%20x2%3D%27186.6%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%27155.1%27%20x2%3D%27181.9%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%27159.1%27%20x2%3D%27176.6%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%27167.9%27%20x2%3D%27170.7%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%27170.5%27%20x2%3D%27164.3%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%27178.6%27%20x2%3D%27157.4%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%27179.7%27%20x2%3D%27150.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%27187.0%27%20x2%3D%27142.3%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%27186.5%27%20x2%3D%27134.2%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%27192.7%27%20x2%3D%27125.9%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%27190.6%27%20x2%3D%27117.4%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%27195.6%27%20x2%3D%27108.7%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%27192.0%27%20x2%3D%27100.0%27%20y2%3D%27200.0%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%27195.6%27%20x2%3D%2791.3%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%27190.6%27%20x2%3D%2782.6%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%27192.7%27%20x2%3D%2774.1%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%27186.5%27%20x2%3D%2765.8%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%27187.0%27%20x2%3D%2757.7%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%27179.7%27%20x2%3D%2750.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%27178.6%27%20x2%3D%2742.6%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%27170.5%27%20x2%3D%2735.7%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%27167.9%27%20x2%3D%2729.3%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%27159.1%27%20x2%3D%2723.4%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%27155.1%27%20x2%3D%2718.1%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%27146.0%27%20x2%3D%2713.4%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%27140.6%27%20x2%3D%279.4%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%27131.5%27%20x2%3D%276.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%27124.8%27%20x2%3D%273.4%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%27116.0%27%20x2%3D%271.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%27108.4%27%20x2%3D%270.4%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%278.0%27%20y1%3D%27100.0%27%20x2%3D%270.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%2791.6%27%20x2%3D%270.4%27%20y2%3D%2791.3%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%2784.0%27%20x2%3D%271.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%2775.2%27%20x2%3D%273.4%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%2768.5%27%20x2%3D%276.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%2759.4%27%20x2%3D%279.4%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%2754.0%27%20x2%3D%2713.4%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%2744.9%27%20x2%3D%2718.1%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%2740.9%27%20x2%3D%2723.4%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%2732.1%27%20x2%3D%2729.3%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%2729.5%27%20x2%3D%2735.7%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%2721.4%27%20x2%3D%2742.6%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%2720.3%27%20x2%3D%2750.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%2713.0%27%20x2%3D%2757.7%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%2713.5%27%20x2%3D%2765.8%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%277.3%27%20x2%3D%2774.1%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%279.4%27%20x2%3D%2782.6%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%274.4%27%20x2%3D%2791.3%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%278.0%27%20x2%3D%27100.0%27%20y2%3D%270.0%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%274.4%27%20x2%3D%27108.7%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%279.4%27%20x2%3D%27117.4%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%277.3%27%20x2%3D%27125.9%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%2713.5%27%20x2%3D%27134.2%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%2713.0%27%20x2%3D%27142.3%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%2720.3%27%20x2%3D%27150.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%2721.4%27%20x2%3D%27157.4%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%2729.5%27%20x2%3D%27164.3%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%2732.1%27%20x2%3D%27170.7%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%2740.9%27%20x2%3D%27176.6%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%2744.9%27%20x2%3D%27181.9%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%2754.0%27%20x2%3D%27186.6%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%2759.4%27%20x2%3D%27190.6%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%2768.5%27%20x2%3D%27194.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%2775.2%27%20x2%3D%27196.6%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%2784.0%27%20x2%3D%27198.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%2791.6%27%20x2%3D%27199.6%27%20y2%3D%2791.3%27%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20fill%3D%27rgba%28201%2C154%2C96%2C0.1%29%27%3E%3Cpath%20d%3D%27M100%206%20L110%2090%20L100%2084%20L90%2090%20Z%27%2F%3E%3Cpath%20d%3D%27M100%20194%20L110%20110%20L100%20116%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M6%20100%20L90%2090%20L84%20100%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M194%20100%20L110%2090%20L116%20100%20L110%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M40%2040%20L96%2096%20L92%20100%20L88%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%2040%20L104%2096%20L108%20100%20L112%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M40%20160%20L96%20104%20L92%20100%20L88%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%20160%20L104%20104%20L108%20100%20L112%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%274%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat right 14px bottom 12px / 110px,
  linear-gradient(150deg,#eeeae2,#e7dfd1)}

/* 步驟流程/路線 金屬感 */
.gstep{background:linear-gradient(#eeeae2,#ddd3c0);border:1px solid var(--brass)}
.route .stop{border-color:var(--brass)}

/* ===== 登入卡＝羊皮紙（比照情境圖）＋ 藏寶箱 CTA ===== */
.paper{background:
  url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20200%20200%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27rgba%28201%2C154%2C96%2C0.1%29%27%20stroke-width%3D%271%27%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2798%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2778%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%2758%27%2F%3E%3Cg%20stroke-width%3D%27.5%27%3E%3Cline%20x1%3D%27192.0%27%20y1%3D%27100.0%27%20x2%3D%27200.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%27108.4%27%20x2%3D%27199.6%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%27116.0%27%20x2%3D%27198.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%27124.8%27%20x2%3D%27196.6%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%27131.5%27%20x2%3D%27194.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%27140.6%27%20x2%3D%27190.6%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%27146.0%27%20x2%3D%27186.6%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%27155.1%27%20x2%3D%27181.9%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%27159.1%27%20x2%3D%27176.6%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%27167.9%27%20x2%3D%27170.7%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%27170.5%27%20x2%3D%27164.3%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%27178.6%27%20x2%3D%27157.4%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%27179.7%27%20x2%3D%27150.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%27187.0%27%20x2%3D%27142.3%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%27186.5%27%20x2%3D%27134.2%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%27192.7%27%20x2%3D%27125.9%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%27190.6%27%20x2%3D%27117.4%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%27195.6%27%20x2%3D%27108.7%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%27192.0%27%20x2%3D%27100.0%27%20y2%3D%27200.0%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%27195.6%27%20x2%3D%2791.3%27%20y2%3D%27199.6%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%27190.6%27%20x2%3D%2782.6%27%20y2%3D%27198.5%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%27192.7%27%20x2%3D%2774.1%27%20y2%3D%27196.6%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%27186.5%27%20x2%3D%2765.8%27%20y2%3D%27194.0%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%27187.0%27%20x2%3D%2757.7%27%20y2%3D%27190.6%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%27179.7%27%20x2%3D%2750.0%27%20y2%3D%27186.6%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%27178.6%27%20x2%3D%2742.6%27%20y2%3D%27181.9%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%27170.5%27%20x2%3D%2735.7%27%20y2%3D%27176.6%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%27167.9%27%20x2%3D%2729.3%27%20y2%3D%27170.7%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%27159.1%27%20x2%3D%2723.4%27%20y2%3D%27164.3%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%27155.1%27%20x2%3D%2718.1%27%20y2%3D%27157.4%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%27146.0%27%20x2%3D%2713.4%27%20y2%3D%27150.0%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%27140.6%27%20x2%3D%279.4%27%20y2%3D%27142.3%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%27131.5%27%20x2%3D%276.0%27%20y2%3D%27134.2%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%27124.8%27%20x2%3D%273.4%27%20y2%3D%27125.9%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%27116.0%27%20x2%3D%271.5%27%20y2%3D%27117.4%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%27108.4%27%20x2%3D%270.4%27%20y2%3D%27108.7%27%2F%3E%3Cline%20x1%3D%278.0%27%20y1%3D%27100.0%27%20x2%3D%270.0%27%20y2%3D%27100.0%27%2F%3E%3Cline%20x1%3D%274.4%27%20y1%3D%2791.6%27%20x2%3D%270.4%27%20y2%3D%2791.3%27%2F%3E%3Cline%20x1%3D%279.4%27%20y1%3D%2784.0%27%20x2%3D%271.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%277.3%27%20y1%3D%2775.2%27%20x2%3D%273.4%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%2713.5%27%20y1%3D%2768.5%27%20x2%3D%276.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%2713.0%27%20y1%3D%2759.4%27%20x2%3D%279.4%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%2720.3%27%20y1%3D%2754.0%27%20x2%3D%2713.4%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%2721.4%27%20y1%3D%2744.9%27%20x2%3D%2718.1%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%2729.5%27%20y1%3D%2740.9%27%20x2%3D%2723.4%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%2732.1%27%20y1%3D%2732.1%27%20x2%3D%2729.3%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%2740.9%27%20y1%3D%2729.5%27%20x2%3D%2735.7%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%2744.9%27%20y1%3D%2721.4%27%20x2%3D%2742.6%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%2754.0%27%20y1%3D%2720.3%27%20x2%3D%2750.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%2759.4%27%20y1%3D%2713.0%27%20x2%3D%2757.7%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%2768.5%27%20y1%3D%2713.5%27%20x2%3D%2765.8%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%2775.2%27%20y1%3D%277.3%27%20x2%3D%2774.1%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%2784.0%27%20y1%3D%279.4%27%20x2%3D%2782.6%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%2791.6%27%20y1%3D%274.4%27%20x2%3D%2791.3%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27100.0%27%20y1%3D%278.0%27%20x2%3D%27100.0%27%20y2%3D%270.0%27%2F%3E%3Cline%20x1%3D%27108.4%27%20y1%3D%274.4%27%20x2%3D%27108.7%27%20y2%3D%270.4%27%2F%3E%3Cline%20x1%3D%27116.0%27%20y1%3D%279.4%27%20x2%3D%27117.4%27%20y2%3D%271.5%27%2F%3E%3Cline%20x1%3D%27124.8%27%20y1%3D%277.3%27%20x2%3D%27125.9%27%20y2%3D%273.4%27%2F%3E%3Cline%20x1%3D%27131.5%27%20y1%3D%2713.5%27%20x2%3D%27134.2%27%20y2%3D%276.0%27%2F%3E%3Cline%20x1%3D%27140.6%27%20y1%3D%2713.0%27%20x2%3D%27142.3%27%20y2%3D%279.4%27%2F%3E%3Cline%20x1%3D%27146.0%27%20y1%3D%2720.3%27%20x2%3D%27150.0%27%20y2%3D%2713.4%27%2F%3E%3Cline%20x1%3D%27155.1%27%20y1%3D%2721.4%27%20x2%3D%27157.4%27%20y2%3D%2718.1%27%2F%3E%3Cline%20x1%3D%27159.1%27%20y1%3D%2729.5%27%20x2%3D%27164.3%27%20y2%3D%2723.4%27%2F%3E%3Cline%20x1%3D%27167.9%27%20y1%3D%2732.1%27%20x2%3D%27170.7%27%20y2%3D%2729.3%27%2F%3E%3Cline%20x1%3D%27170.5%27%20y1%3D%2740.9%27%20x2%3D%27176.6%27%20y2%3D%2735.7%27%2F%3E%3Cline%20x1%3D%27178.6%27%20y1%3D%2744.9%27%20x2%3D%27181.9%27%20y2%3D%2742.6%27%2F%3E%3Cline%20x1%3D%27179.7%27%20y1%3D%2754.0%27%20x2%3D%27186.6%27%20y2%3D%2750.0%27%2F%3E%3Cline%20x1%3D%27187.0%27%20y1%3D%2759.4%27%20x2%3D%27190.6%27%20y2%3D%2757.7%27%2F%3E%3Cline%20x1%3D%27186.5%27%20y1%3D%2768.5%27%20x2%3D%27194.0%27%20y2%3D%2765.8%27%2F%3E%3Cline%20x1%3D%27192.7%27%20y1%3D%2775.2%27%20x2%3D%27196.6%27%20y2%3D%2774.1%27%2F%3E%3Cline%20x1%3D%27190.6%27%20y1%3D%2784.0%27%20x2%3D%27198.5%27%20y2%3D%2782.6%27%2F%3E%3Cline%20x1%3D%27195.6%27%20y1%3D%2791.6%27%20x2%3D%27199.6%27%20y2%3D%2791.3%27%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20fill%3D%27rgba%28201%2C154%2C96%2C0.1%29%27%3E%3Cpath%20d%3D%27M100%206%20L110%2090%20L100%2084%20L90%2090%20Z%27%2F%3E%3Cpath%20d%3D%27M100%20194%20L110%20110%20L100%20116%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M6%20100%20L90%2090%20L84%20100%20L90%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M194%20100%20L110%2090%20L116%20100%20L110%20110%20Z%27%2F%3E%3Cpath%20d%3D%27M40%2040%20L96%2096%20L92%20100%20L88%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%2040%20L104%2096%20L108%20100%20L112%2092%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M40%20160%20L96%20104%20L92%20100%20L88%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Cpath%20d%3D%27M160%20160%20L104%20104%20L108%20100%20L112%20108%20Z%27%20opacity%3D%27.8%27%2F%3E%3Ccircle%20cx%3D%27100%27%20cy%3D%27100%27%20r%3D%274%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat right 12px bottom 14px / 120px,
  radial-gradient(120% 90% at 50% -10%,#f9f7f2,transparent 55%),
  linear-gradient(#eae5dc,#d7cdb8)!important;
  border:1px solid var(--brass)!important;box-shadow:0 26px 60px rgba(4,8,14,.6),inset 0 0 0 1px rgba(184,152,83,.35)!important}
#login .paper::after{content:"";position:absolute;inset:8px;border:1px solid rgba(184,152,83,.55);border-radius:7px;pointer-events:none}
#login h2{color:#1f2b41!important}#login .cap{color:#8f763f!important}
#login label{color:#2d446d!important}#login .chk{color:#2d446d!important}
#login .input{background:#f4f0ea!important;border-color:var(--gold)!important;color:#1f2b41!important}
#login .input::placeholder{color:#58667d!important}
#login .logo{filter:brightness(0) sepia(1) saturate(3) hue-rotate(-6deg) brightness(.55)!important}

/* 右上角貓頭鷹：黃銅圓章＋黃銅鳥 */
.owl-mini{background:radial-gradient(circle at 38% 30%,#1e2d48,#0c121d 80%)!important;border:2px solid var(--brass)!important;box-shadow:0 4px 12px rgba(4,8,14,.5),inset 0 1px 0 rgba(184,152,83,.4)!important}
.owl-mini .owlimg{filter:brightness(0) saturate(100%) invert(72%) sepia(38%) saturate(520%) hue-rotate(3deg) brightness(95%) drop-shadow(0 0 4px rgba(184,152,83,.9))!important}
@keyframes owlglow{0%,100%{filter:brightness(0) saturate(100%) invert(64%) sepia(34%) saturate(460%) hue-rotate(3deg) brightness(88%) drop-shadow(0 0 3px rgba(184,152,83,.5))}50%{filter:brightness(0) saturate(100%) invert(78%) sepia(46%) saturate(640%) hue-rotate(3deg) brightness(104%) drop-shadow(0 0 9px rgba(209,191,160,1))}}

/* 開場：標題/字色配合 */
#intro .sub,#intro .hint{color:#cebfa3}


/* ============ 按鈕修正層（比照範例圖：金框金屬牌、文字置中、無壓字符號） ============ */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  color:#152034;font-weight:700;font-size:14px;letter-spacing:.03em;padding:11px 20px;min-height:0;border:0;border-radius:8px;
  background:linear-gradient(#eae5dc,#d6cbb7);
  clip-path:polygon(9px 0,calc(100% - 9px) 0,100% 9px,100% calc(100% - 9px),calc(100% - 9px) 100%,9px 100%,0 calc(100% - 9px),0 9px);
  box-shadow:inset 0 0 0 1px #8f763f,inset 0 0 0 2.5px #eae5dc,inset 0 0 0 3.6px rgba(143,118,63,.55),inset 0 1px 0 #f9f7f2,0 3px 9px rgba(6,11,20,.28);
  text-shadow:0 1px 0 rgba(247,243,236,.5);transition:transform .12s,box-shadow .2s,filter .2s;overflow:visible}
.btn::before{display:none!important}
.btn::after{content:none!important}
.btn:hover{transform:translateY(-1px);filter:brightness(1.05)}
.btn:active{transform:translateY(1px)}

.btn.primary{color:#e1d4bd;font-weight:800;letter-spacing:.08em;padding:13px 24px;min-height:46px;border-radius:9px;
  background:linear-gradient(#24344f,#101d33 68%,#0b1526);
  clip-path:polygon(11px 0,calc(100% - 11px) 0,100% 11px,100% calc(100% - 11px),calc(100% - 11px) 100%,11px 100%,0 calc(100% - 11px),0 11px);
  box-shadow:inset 0 0 0 1px #b89853,inset 0 0 0 3px #0f1b30,inset 0 0 0 4px rgba(184,152,83,.55),inset 0 1px 0 rgba(224,218,207,.22),inset 0 -3px 8px rgba(0,0,0,.5),0 6px 16px rgba(4,8,14,.5);
  text-shadow:0 1px 2px rgba(0,0,0,.55)}
.btn.primary::before{content:""!important;display:block!important;position:absolute;left:8px;right:8px;top:5px;height:38%;width:auto!important;transform:none!important;border-radius:6px;
  background:linear-gradient(rgba(255,255,255,.14),transparent);pointer-events:none;box-shadow:none!important}
.btn.primary:hover{transform:translateY(-2px);filter:brightness(1.08);
  box-shadow:inset 0 0 0 1px #d2c2a5,inset 0 0 0 3px #0f1b30,inset 0 0 0 4px rgba(209,191,160,.75),inset 0 1px 0 rgba(224,218,207,.3),0 10px 22px rgba(4,8,14,.6),0 0 14px rgba(184,152,83,.35)}
.btn.primary:hover::before{box-shadow:none!important}
.btn.primary:active{transform:translateY(1px)}
.btn.primary.block{width:auto;max-width:360px;margin-left:auto;margin-right:auto;display:flex;min-height:46px}

.btn.sm{padding:8px 13px;font-size:12.5px;border-radius:8px;
  clip-path:polygon(7px 0,calc(100% - 7px) 0,100% 7px,100% calc(100% - 7px),calc(100% - 7px) 100%,7px 100%,0 calc(100% - 7px),0 7px)}
.btn.sm.primary{padding:9px 15px;min-height:0}
.btn.sm.primary.block{max-width:320px}

.btn.gold{color:#131c2d;background:linear-gradient(#d9c7a6,#b89853 60%,#8f763f);
  box-shadow:inset 0 0 0 1px #e1d4bd,inset 0 0 0 2.5px #c4b393,inset 0 1px 0 #f2ece0,0 3px 9px rgba(50,77,123,.32);text-shadow:0 1px 0 rgba(247,243,236,.5)}
.btn.teal{color:#eaf8ff;background:linear-gradient(#4d7285,#335566);
  box-shadow:inset 0 0 0 1px #6f99ae,inset 0 0 0 2.5px #2c4b5a,inset 0 1px 0 rgba(220,243,255,.28),0 3px 9px rgba(20,40,50,.38);text-shadow:0 1px 2px rgba(0,0,0,.35)}
.btn.danger{color:#ffe9e2;background:linear-gradient(#a2402f,#7c2b22);
  box-shadow:inset 0 0 0 1px #c86e5b,inset 0 0 0 2.5px #6a2019,inset 0 1px 0 rgba(255,220,210,.24),0 3px 9px rgba(60,16,10,.38);text-shadow:0 1px 2px rgba(0,0,0,.4)}
.btn.ghost{color:#152034;background:linear-gradient(#e8e1d4,#d3c8b3);
  box-shadow:inset 0 0 0 1px rgba(143,118,63,.7),inset 0 1px 0 #f9f7f2,0 2px 6px rgba(6,11,20,.2)}
.btn:disabled,.btn[disabled]{filter:grayscale(.4) brightness(.92);opacity:.7;cursor:not-allowed;transform:none!important}


/* ============ Design System v2：航海探索元件 ============ */
/* 色票（依規範） */
:root{
  --navy:#0c1729;--navy2:#142646;--coffee:#172339;--wood:#25385a;
  --brass:#8f763f;--gold:#b5995c;--goldL:#c6b9a0;
  --parch:#d9cfbc;--parchL:#e8e1d4;--parchW:#efebe4;
  --ink:#202c41;--cream:#e9e4dc;--wax:#7f2e22;--teal:#35515f;--line:#b5995c;
}
/* 完成狀態：不再整顆綠，改深藍銅框＋左側小綠識別＋✓（沿用 .btn.teal 類名以全域生效） */
.btn.teal{color:#e9e4dc!important;background:linear-gradient(#172c4f,#0e1a2e)!important;
  box-shadow:inset 0 0 0 1px #b5995c,inset 0 0 0 3px #0e1a2e,inset 0 0 0 4px rgba(182,154,92,.5),inset 3px 0 0 #35515f,inset 0 1px 0 rgba(224,218,207,.2),0 3px 9px rgba(4,8,14,.4)!important;text-shadow:0 1px 2px rgba(0,0,0,.5)!important}
/* 警示：深咖啡紅棕＋銅框＋左側蠟封紅，不用大紅實心 */
.btn.danger{color:#ede9e3!important;background:linear-gradient(#3a201a,#2b1512)!important;
  box-shadow:inset 0 0 0 1px #b5995c,inset 0 0 0 3px #2b1512,inset 0 0 0 4px rgba(182,154,92,.45),inset 3px 0 0 #7f2e22,inset 0 1px 0 rgba(224,218,207,.18),0 3px 9px rgba(4,8,14,.4)!important;text-shadow:0 1px 2px rgba(0,0,0,.5)!important}
/* 主要按鈕：加左右金屬端件＋hover 掃光 */
.btn.primary{overflow:hidden}
.btn.primary::after{content:""!important;position:absolute;top:0;bottom:0;left:-40%;width:35%;
  background:linear-gradient(100deg,transparent,rgba(241,235,223,.28),transparent);transform:skewX(-18deg);pointer-events:none;opacity:0;transition:none}
.btn.primary:hover::after{opacity:1;animation:btnsweep .6s ease}
@keyframes btnsweep{0%{left:-40%}100%{left:120%}}
/* 登入按鈕：主操作、加大加寬 */
#login .btn.primary{width:64%!important;min-width:220px;max-width:none;min-height:52px!important;font-size:16px;margin:4px auto 0;display:flex}

/* 停用＝未解鎖：深灰藍＋暗銅框 */
.btn:disabled,.btn[disabled]{color:#9fadc6!important;background:linear-gradient(#1b2940,#141e30)!important;
  box-shadow:inset 0 0 0 1px rgba(182,154,92,.4),inset 0 0 0 3px #141e30,inset 0 1px 0 rgba(255,255,255,.05)!important;
  opacity:.75;filter:none;cursor:not-allowed;text-shadow:none!important}

/* ===== 航海節點路徑 ===== */
.route-steps{display:flex;align-items:flex-start;gap:0;margin:6px 0 2px;flex-wrap:wrap}
.route-steps .rstep{display:flex;align-items:center;flex:1;min-width:0}
.route-steps .rcell{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:82px}
.route-steps.sm .rcell{min-width:70px}
.rline{flex:1;height:0;border-top:2px dashed #3c4454;min-width:16px;opacity:.7;align-self:flex-start;margin-top:23px}
.rline.on{border-top-color:#b5995c;opacity:1}
.rnode{position:relative;width:48px;height:48px;border-radius:50%;padding:0;border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 38% 30%,#1a2b48,#0b1526);box-shadow:0 0 0 1px #8f763f,inset 0 1px 0 rgba(182,154,92,.3),0 3px 8px rgba(4,8,14,.45);transition:transform .18s,box-shadow .2s,filter .2s}
.route-steps.sm .rnode{width:42px;height:42px}
.rnode:hover{transform:scale(1.04)}
.rnode.now{background:radial-gradient(circle at 38% 30%,#2a3d5e,#12223d);box-shadow:0 0 0 1px #b5995c,0 0 0 4px rgba(182,154,92,.22),0 0 14px rgba(182,154,92,.5),inset 0 1px 0 rgba(224,218,207,.35);animation:nodehalo 2.4s ease-in-out infinite}
@keyframes nodehalo{0%,100%{box-shadow:0 0 0 1px #b5995c,0 0 0 4px rgba(182,154,92,.18),0 0 10px rgba(182,154,92,.35),inset 0 1px 0 rgba(224,218,207,.3)}50%{box-shadow:0 0 0 1px #cebfa3,0 0 0 5px rgba(182,154,92,.3),0 0 18px rgba(182,154,92,.6),inset 0 1px 0 rgba(224,218,207,.4)}}
.rnode.done{background:radial-gradient(circle at 38% 30%,#d2c1a3,#967b41 70%,#755f2e);box-shadow:0 0 0 1px #e1d4bd,inset 0 1px 0 rgba(243,237,226,.6),0 3px 8px rgba(4,8,14,.4)}
.rnode.lock{opacity:.55;cursor:not-allowed}
.rnode .rchk{position:absolute;right:-3px;bottom:-3px;width:18px;height:18px;border-radius:50%;background:radial-gradient(circle at 38% 30%,#d2c1a3,#755f2e);color:#101928;font-size:11px;font-weight:900;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 3px rgba(0,0,0,.5)}
.rlabel{font-size:12px;color:#3c4454;font-weight:700;text-align:center}
.route-steps.sm .rlabel{font-size:11px}
.rlabel.now{color:#755f2e}.rlabel.done{color:#755f2e}

/* ===== 狀態徽章（印章式） ===== */
.badge{border-radius:999px;font-size:11.5px;padding:2px 9px;border:1px solid var(--brass);background:linear-gradient(#e8e1d4,#d9cfbc);color:#2d446d}
.badge.ok{background:linear-gradient(#172c4f,#0e1a2e);color:#d2c1a3;border-color:#b5995c}
.badge.warn{background:linear-gradient(#3a201a,#2b1512);color:#e6b9a8;border-color:#8f763f}
.badge.no{background:linear-gradient(#d9cfbc,#c6b9a0);color:#2d446d;border-color:#8f763f}
.badge.zero{background:linear-gradient(#7f2e22,#5e2019);color:#ede9e3;border-color:#8f763f}
.stbadge{border:1px solid var(--brass)}
.stb-approved{background:linear-gradient(#172c4f,#0e1a2e);color:#d2c1a3}
.stb-pending{background:linear-gradient(#1d2c47,#162135);color:#d2c1a3}
.stb-rejected{background:linear-gradient(#3a201a,#2b1512);color:#e6b9a8}
.stb-late{background:linear-gradient(#7f2e22,#5e2019);color:#ede9e3}
.stb-none{background:linear-gradient(#d9cfbc,#c6b9a0);color:#2d446d}


/* ===== 最終色票（依最新九色）與小綠識別 ===== */
:root{
  --navy:#0c1729;--navy2:#142646;--navy3:#172339;--wood:#25385a;
  --brass:#8f763f;--gold:#b5995c;--goldL:#c6b9a0;--goldD:#755f2e;
  --parch:#e8e1d4;--parchD:#d9cfbc;--cream:#efebe4;--panel:#e8e1d4;
  --ink:#202c41;--ink2:#354e78;--dim:#4e596d;--line:#b8aa8f;
  --teal:#35515f;--wax:#7f2e22;--waxL:#9e3a2c;--cocoa:#202c41;
}
/* 完成/成功識別：深藏青綠，僅小按鈕使用，不做大面積亮綠 */
.btn.teal{color:#eaf8ff;background:linear-gradient(#3f5f6f,#2c4653);
  box-shadow:inset 0 0 0 1px #5c7f91,inset 0 0 0 2.4px #263c47,inset 0 1px 0 rgba(220,243,255,.22),0 2px 7px rgba(14,31,40,.4);
  text-shadow:0 1px 2px rgba(0,0,0,.4)}
.btn.danger{color:#ffe4dc;background:linear-gradient(#94382b,#7f2e22);
  box-shadow:inset 0 0 0 1px #b85a49,inset 0 0 0 2.4px #601f16,inset 0 1px 0 rgba(255,220,210,.2),0 2px 7px rgba(60,16,10,.4)}


/* ===== 卡片浮水印淡化：正常卡改乾淨羊皮，只保留極淡頂線 ===== */
.card{background:linear-gradient(150deg,#eeeae2,#e7dfd1)!important}
.card.dark{background:linear-gradient(#132543,#0e1a2e)!important;border-color:var(--brass)!important}
.parch{background:linear-gradient(150deg,#eeeae2,#e7dfd1)!important}

/* ===== 背景手機校正 ===== */
@media(max-width:640px){body{background-size:min(120vw,560px),52px 52px,100% 100%,100% 100%!important;background-position:center 60px,0 0,center,center!important}}

/* ===== 按鈕：主鈕端件＋箭頭；三態按下；停用；成功✓ ===== */
.btn.primary{position:relative}
.btn.primary::after{content:""!important;position:absolute;left:6px;top:8px;bottom:8px;width:5px;border-radius:2px;
  background:linear-gradient(#d2c1a3,#755f2e);box-shadow:1px 0 2px rgba(0,0,0,.4),inset 0 1px 0 rgba(243,237,226,.6);opacity:.9;pointer-events:none}
.btn.primary .arw,.btn.primary::marker{display:none}
.btn.primary{background-image:linear-gradient(#24344f,#101d33 68%,#0b1526)}
.btn.primary::before{right:14px!important}
.btn.primary:active,.btn:active,.btn.gold:active,.btn.teal:active,.btn.danger:active{transform:translateY(1px)!important;filter:brightness(.97);box-shadow:inset 0 0 0 1px #755f2e,inset 0 2px 6px rgba(0,0,0,.4)!important}
.btn[disabled],.btn:disabled{background:linear-gradient(#20304c,#16243d)!important;color:#8f9fbb!important;
  box-shadow:inset 0 0 0 1px rgba(120,138,170,.35),inset 0 0 0 2.4px rgba(20,31,50,.6)!important;opacity:.8;filter:none!important}
.btn[disabled]::before,.btn:disabled::before{display:none!important}
.btn.teal{position:relative;padding-left:26px}
.btn.teal::after{content:"✓";position:absolute;left:8px;top:50%;transform:translateY(-50%);width:15px;height:15px;line-height:15px;text-align:center;border-radius:50%;font-size:10px;font-weight:900;color:#203946;background:radial-gradient(circle at 38% 30%,#d2c1a3,#8f763f);box-shadow:0 1px 2px rgba(0,0,0,.4)}

/* ===== 地圖節點徽章 map-node（供標題/導覽用，圓形古銅羅盤）===== */
.map-node,.card h3 .ic{position:relative;border-radius:50%!important}
.card h3 .ic{box-shadow:0 0 0 1px #324d7b,0 0 0 3px rgba(224,218,207,.25),0 2px 6px rgba(4,8,14,.4),inset 0 1px 0 #f4efe6!important}

/* ===== 狀態標籤四型（印章化）===== */
.stbadge{border-radius:6px;font-weight:800;letter-spacing:.02em;border:1px solid transparent;padding:2px 8px}
.stbadge.stb-approved,.badge.ok{background:radial-gradient(circle at 30% 25%,#e2d7c3,#b5995c);color:#1c2a44;border:1px solid #755f2e;box-shadow:inset 0 1px 0 #f4efe6}
.stbadge.stb-pending{background:linear-gradient(#1c2c49,#12223d);color:#d9ceb9;border:1px solid #8f763f}
.stbadge.stb-rejected,.badge.zero{background:linear-gradient(#94382b,#7f2e22);color:#ffe4dc;border:1px solid #b85a49}
.stbadge.stb-late{background:linear-gradient(#94382b,#6f271e);color:#ffe0d6;border:1px solid #b85a49}
.stbadge.stb-none,.badge.warn,.badge.no{background:linear-gradient(#33435e,#233047);color:#c9d3e4;border:1px solid #5f708c}
.badge.cat-fixed{background:radial-gradient(circle at 30% 25%,#e2d7c3,#b5995c);color:#1c2a44;border:1px solid #755f2e}
.badge.cat-fb,.badge.cat-vaward{background:linear-gradient(#1c2c49,#12223d);color:#d9ceb9;border:1px solid #8f763f}

/* ===== 航海節點：暗古銅底、當前金光更明確 ===== */
.rnode{background:radial-gradient(circle at 38% 30%,#172339,#0f1725);box-shadow:0 0 0 1px #314b77,inset 0 1px 0 rgba(224,218,207,.15)}
.rnode.lock{opacity:.75;filter:saturate(.85)}
.rline{border-top-color:#314b77}
.rline.on{border-top-color:#b5995c;opacity:.9}
.rlabel{color:#4e596d;font-size:12px;margin-top:6px;text-align:center}
.rlabel.done{color:#755f2e;font-weight:700}.rlabel.now{color:#b5995c;font-weight:800}


/* ===== 背景：深藍銀河星點細閃（取代大羅盤）===== */
#bg{display:none!important}
#sky{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  background:
   radial-gradient(1200px 700px at 72% 12%, rgba(58,92,150,.16), transparent 60%),
   radial-gradient(1000px 800px at 20% 88%, rgba(45,69,110,.14), transparent 62%),
   radial-gradient(900px 520px at 50% 44%, rgba(120,153,210,.05), transparent 70%);}
#sky::before,#sky::after,#sky>.s3{content:"";position:absolute;inset:-10%;background-repeat:repeat;will-change:opacity}
#sky::before{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27300%27%20viewBox%3D%270%200%20300%20300%27%3E%3Ccircle%20cx%3D%2740.3%27%20cy%3D%27254.2%27%20r%3D%271.2%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.42%29%27%2F%3E%3Ccircle%20cx%3D%27134.8%27%20cy%3D%27195.5%27%20r%3D%271.3%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.31%29%27%2F%3E%3Ccircle%20cx%3D%27250.7%27%20cy%3D%27129.8%27%20r%3D%271.2%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.25%29%27%2F%3E%3Ccircle%20cx%3D%27216.5%27%20cy%3D%2768.6%27%20r%3D%271.4%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.84%29%27%2F%3E%3Ccircle%20cx%3D%277.6%27%20cy%3D%27162.4%27%20r%3D%271.4%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.5%29%27%2F%3E%3Ccircle%20cx%3D%27126.6%27%20cy%3D%278.7%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.53%29%27%2F%3E%3Ccircle%20cx%3D%2769.9%27%20cy%3D%2769.3%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.55%29%27%2F%3E%3Ccircle%20cx%3D%276.4%27%20cy%3D%27251.3%27%20r%3D%271.0%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.67%29%27%2F%3E%3Ccircle%20cx%3D%27297.8%27%20cy%3D%27258.0%27%20r%3D%270.5%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.47%29%27%2F%3E%3Ccircle%20cx%3D%27213.4%27%20cy%3D%27280.9%27%20r%3D%270.9%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.79%29%27%2F%3E%3Ccircle%20cx%3D%2791.0%27%20cy%3D%27176.3%27%20r%3D%271.4%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.8%29%27%2F%3E%3Ccircle%20cx%3D%27176.7%27%20cy%3D%2710.4%27%20r%3D%270.7%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.77%29%27%2F%3E%3Ccircle%20cx%3D%2751.9%27%20cy%3D%27164.6%27%20r%3D%271.2%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.69%29%27%2F%3E%3Ccircle%20cx%3D%27131.7%27%20cy%3D%27152.5%27%20r%3D%271.3%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.59%29%27%2F%3E%3Ccircle%20cx%3D%27146.9%27%20cy%3D%278.9%27%20r%3D%270.4%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.71%29%27%2F%3E%3Ccircle%20cx%3D%27178.0%27%20cy%3D%27118.1%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.58%29%27%2F%3E%3Ccircle%20cx%3D%27231.2%27%20cy%3D%27161.9%27%20r%3D%271.3%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.4%29%27%2F%3E%3Ccircle%20cx%3D%27285.7%27%20cy%3D%27173.3%27%20r%3D%270.9%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.43%29%27%2F%3E%3Ccircle%20cx%3D%27287.1%27%20cy%3D%271.7%27%20r%3D%271.3%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.78%29%27%2F%3E%3Ccircle%20cx%3D%27222.2%27%20cy%3D%27242.7%27%20r%3D%271.0%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.61%29%27%2F%3E%3Ccircle%20cx%3D%2716.8%27%20cy%3D%27261.0%27%20r%3D%271.0%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.38%29%27%2F%3E%3Ccircle%20cx%3D%27145.5%27%20cy%3D%27107.0%27%20r%3D%270.8%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.6%29%27%2F%3E%3Ccircle%20cx%3D%27183.7%27%20cy%3D%27137.4%27%20r%3D%270.4%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.4%29%27%2F%3E%3Ccircle%20cx%3D%27175.3%27%20cy%3D%27258.3%27%20r%3D%271.3%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.77%29%27%2F%3E%3Ccircle%20cx%3D%2776.6%27%20cy%3D%27252.5%27%20r%3D%271.1%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.3%29%27%2F%3E%3Ccircle%20cx%3D%274.4%27%20cy%3D%27226.7%27%20r%3D%270.7%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.32%29%27%2F%3E%3Ccircle%20cx%3D%27103.3%27%20cy%3D%2720.9%27%20r%3D%270.6%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.59%29%27%2F%3E%3Ccircle%20cx%3D%2781.9%27%20cy%3D%27213.5%27%20r%3D%270.9%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.46%29%27%2F%3E%3Ccircle%20cx%3D%277.1%27%20cy%3D%27116.0%27%20r%3D%270.9%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.37%29%27%2F%3E%3Ccircle%20cx%3D%27269.9%27%20cy%3D%27153.0%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.64%29%27%2F%3E%3Ccircle%20cx%3D%276.2%27%20cy%3D%275.4%27%20r%3D%270.6%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.72%29%27%2F%3E%3Ccircle%20cx%3D%27211.4%27%20cy%3D%27203.5%27%20r%3D%271.0%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.39%29%27%2F%3E%3Ccircle%20cx%3D%27239.3%27%20cy%3D%27155.0%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.67%29%27%2F%3E%3Ccircle%20cx%3D%27172.8%27%20cy%3D%2796.4%27%20r%3D%271.1%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.29%29%27%2F%3E%3Ccircle%20cx%3D%27290.4%27%20cy%3D%27262.7%27%20r%3D%270.7%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.81%29%27%2F%3E%3Ccircle%20cx%3D%27281.8%27%20cy%3D%27223.2%27%20r%3D%270.9%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.41%29%27%2F%3E%3Ccircle%20cx%3D%27263.6%27%20cy%3D%2711.4%27%20r%3D%271.3%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.88%29%27%2F%3E%3Ccircle%20cx%3D%2751.5%27%20cy%3D%27260.3%27%20r%3D%271.5%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.71%29%27%2F%3E%3Ccircle%20cx%3D%27113.4%27%20cy%3D%27104.1%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.69%29%27%2F%3E%3Ccircle%20cx%3D%2758.2%27%20cy%3D%2731.3%27%20r%3D%271.1%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.44%29%27%2F%3E%3Ccircle%20cx%3D%2797.6%27%20cy%3D%27261.5%27%20r%3D%271.4%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.26%29%27%2F%3E%3Ccircle%20cx%3D%2798.3%27%20cy%3D%27296.1%27%20r%3D%271.3%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.47%29%27%2F%3E%3Ccircle%20cx%3D%27202.3%27%20cy%3D%27251.3%27%20r%3D%271.4%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.47%29%27%2F%3E%3Ccircle%20cx%3D%27206.1%27%20cy%3D%27145.3%27%20r%3D%271.5%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.4%29%27%2F%3E%3Ccircle%20cx%3D%2725.4%27%20cy%3D%2750.9%27%20r%3D%271.4%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.39%29%27%2F%3E%3Ccircle%20cx%3D%27180.1%27%20cy%3D%27252.3%27%20r%3D%270.8%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.47%29%27%2F%3E%3C%2Fsvg%3E");background-size:300px 300px;animation:twk 4.2s ease-in-out infinite}
#sky::after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27360%27%20height%3D%27360%27%20viewBox%3D%270%200%20360%20360%27%3E%3Ccircle%20cx%3D%27344.2%27%20cy%3D%27341.2%27%20r%3D%270.4%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.31%29%27%2F%3E%3Ccircle%20cx%3D%27264.9%27%20cy%3D%27241.1%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.64%29%27%2F%3E%3Ccircle%20cx%3D%27209.2%27%20cy%3D%2757.0%27%20r%3D%270.7%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.51%29%27%2F%3E%3Ccircle%20cx%3D%27358.1%27%20cy%3D%27341.8%27%20r%3D%270.8%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.54%29%27%2F%3E%3Ccircle%20cx%3D%2712.9%27%20cy%3D%279.9%27%20r%3D%270.7%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.46%29%27%2F%3E%3Ccircle%20cx%3D%27321.0%27%20cy%3D%27189.3%27%20r%3D%270.8%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.4%29%27%2F%3E%3Ccircle%20cx%3D%27117.1%27%20cy%3D%2749.2%27%20r%3D%270.8%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.9%29%27%2F%3E%3Ccircle%20cx%3D%2765.5%27%20cy%3D%27321.7%27%20r%3D%271.0%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.73%29%27%2F%3E%3Ccircle%20cx%3D%27274.6%27%20cy%3D%27284.3%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.89%29%27%2F%3E%3Ccircle%20cx%3D%2758.0%27%20cy%3D%27271.4%27%20r%3D%270.9%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.55%29%27%2F%3E%3Ccircle%20cx%3D%27176.4%27%20cy%3D%27332.9%27%20r%3D%270.8%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.79%29%27%2F%3E%3Ccircle%20cx%3D%27317.8%27%20cy%3D%27323.9%27%20r%3D%270.7%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.62%29%27%2F%3E%3Ccircle%20cx%3D%27260.6%27%20cy%3D%27175.2%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.46%29%27%2F%3E%3Ccircle%20cx%3D%2759.8%27%20cy%3D%27326.9%27%20r%3D%270.6%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.84%29%27%2F%3E%3Ccircle%20cx%3D%27344.7%27%20cy%3D%27254.2%27%20r%3D%270.8%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.59%29%27%2F%3E%3Ccircle%20cx%3D%27211.7%27%20cy%3D%27112.3%27%20r%3D%270.5%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.58%29%27%2F%3E%3Ccircle%20cx%3D%27224.4%27%20cy%3D%2727.1%27%20r%3D%271.0%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.72%29%27%2F%3E%3Ccircle%20cx%3D%2768.9%27%20cy%3D%27268.1%27%20r%3D%270.4%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.67%29%27%2F%3E%3Ccircle%20cx%3D%2781.6%27%20cy%3D%27315.2%27%20r%3D%270.5%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.59%29%27%2F%3E%3Ccircle%20cx%3D%2788.1%27%20cy%3D%2775.8%27%20r%3D%271.0%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.52%29%27%2F%3E%3Ccircle%20cx%3D%2711.5%27%20cy%3D%27130.4%27%20r%3D%270.5%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.69%29%27%2F%3E%3Ccircle%20cx%3D%27343.6%27%20cy%3D%279.1%27%20r%3D%270.9%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.26%29%27%2F%3E%3Ccircle%20cx%3D%27292.8%27%20cy%3D%2756.6%27%20r%3D%270.5%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.7%29%27%2F%3E%3Ccircle%20cx%3D%2715.5%27%20cy%3D%27356.4%27%20r%3D%270.5%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.27%29%27%2F%3E%3Ccircle%20cx%3D%27221.5%27%20cy%3D%27267.3%27%20r%3D%270.5%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.47%29%27%2F%3E%3Ccircle%20cx%3D%27161.5%27%20cy%3D%27275.7%27%20r%3D%270.9%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.84%29%27%2F%3E%3Ccircle%20cx%3D%27310.5%27%20cy%3D%27253.9%27%20r%3D%270.7%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.4%29%27%2F%3E%3Ccircle%20cx%3D%27113.9%27%20cy%3D%2736.7%27%20r%3D%270.7%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.82%29%27%2F%3E%3Ccircle%20cx%3D%27210.6%27%20cy%3D%27141.5%27%20r%3D%270.8%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.34%29%27%2F%3E%3Ccircle%20cx%3D%2793.3%27%20cy%3D%27218.2%27%20r%3D%270.7%27%20fill%3D%27rgba%28255%2C255%2C255%2C0.26%29%27%2F%3E%3C%2Fsvg%3E");background-size:360px 360px;animation:twk 5.8s ease-in-out infinite .8s;opacity:.8}
#sky>.s3{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27420%27%20height%3D%27420%27%20viewBox%3D%270%200%20420%20420%27%3E%3Ccircle%20cx%3D%2799.9%27%20cy%3D%27228.6%27%20r%3D%270.6%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.64%29%27%2F%3E%3Ccircle%20cx%3D%2727.5%27%20cy%3D%275.5%27%20r%3D%270.8%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.42%29%27%2F%3E%3Ccircle%20cx%3D%27418.2%27%20cy%3D%27197.5%27%20r%3D%270.8%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.56%29%27%2F%3E%3Ccircle%20cx%3D%2763.3%27%20cy%3D%27266.6%27%20r%3D%270.8%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.59%29%27%2F%3E%3Ccircle%20cx%3D%27282.0%27%20cy%3D%2726.9%27%20r%3D%270.8%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.63%29%27%2F%3E%3Ccircle%20cx%3D%2713.0%27%20cy%3D%27363.5%27%20r%3D%270.6%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.72%29%27%2F%3E%3Ccircle%20cx%3D%27299.9%27%20cy%3D%27386.9%27%20r%3D%270.6%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.77%29%27%2F%3E%3Ccircle%20cx%3D%27392.9%27%20cy%3D%27369.1%27%20r%3D%270.4%27%20fill%3D%27rgba%28230%2C210%2C150%2C0.34%29%27%2F%3E%3Ccircle%20cx%3D%27405.5%27%20cy%3D%27183.2%27%20r%3D%270.7%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.45%29%27%2F%3E%3Ccircle%20cx%3D%27162.1%27%20cy%3D%27147.4%27%20r%3D%270.7%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.63%29%27%2F%3E%3Ccircle%20cx%3D%27286.4%27%20cy%3D%27390.2%27%20r%3D%270.8%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.89%29%27%2F%3E%3Ccircle%20cx%3D%2768.5%27%20cy%3D%27361.5%27%20r%3D%270.9%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.84%29%27%2F%3E%3Ccircle%20cx%3D%27299.8%27%20cy%3D%2788.7%27%20r%3D%270.8%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.62%29%27%2F%3E%3Ccircle%20cx%3D%2726.7%27%20cy%3D%27358.7%27%20r%3D%270.9%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.31%29%27%2F%3E%3Ccircle%20cx%3D%27172.4%27%20cy%3D%2763.3%27%20r%3D%270.5%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.75%29%27%2F%3E%3Ccircle%20cx%3D%2718.6%27%20cy%3D%27258.1%27%20r%3D%270.4%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.72%29%27%2F%3E%3Ccircle%20cx%3D%27370.0%27%20cy%3D%27411.9%27%20r%3D%270.7%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.9%29%27%2F%3E%3Ccircle%20cx%3D%2732.3%27%20cy%3D%27251.9%27%20r%3D%270.4%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.38%29%27%2F%3E%3Ccircle%20cx%3D%27256.4%27%20cy%3D%2765.6%27%20r%3D%270.4%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.81%29%27%2F%3E%3Ccircle%20cx%3D%27402.6%27%20cy%3D%27376.6%27%20r%3D%270.6%27%20fill%3D%27rgba%28200%2C215%2C240%2C0.55%29%27%2F%3E%3C%2Fsvg%3E");background-size:420px 420px;animation:drift 90s linear infinite, twk 7s ease-in-out infinite 1.6s;opacity:.7}
@keyframes twk{0%,100%{opacity:.45}50%{opacity:1}}
@keyframes drift{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(-40px,-24px,0)}}
@media(prefers-reduced-motion:reduce){#sky::before,#sky::after,#sky>.s3{animation:none}}
.wrap{position:relative;z-index:1}

/* ===== 按鈕清理：移除斜線端件、邊框乾淨 ===== */
.btn.primary::after{content:none!important}
.btn.primary::before{content:""!important;display:block!important;position:absolute;left:9px!important;right:9px!important;top:5px!important;height:36%!important;width:auto!important;transform:none!important;border-radius:6px;background:linear-gradient(rgba(255,255,255,.12),transparent)!important;box-shadow:none!important;pointer-events:none}
.btn.primary{padding:13px 24px!important;background-image:linear-gradient(#24344f,#101d33 68%,#0b1526)!important}
/* 移除次要/其他鈕可能的偽端件殘留 */
.btn::after{content:none!important}
.btn.teal{padding-left:28px!important}
.btn.teal::after{content:"✓"!important;position:absolute;left:9px;top:50%;transform:translateY(-50%);width:15px;height:15px;line-height:15px;text-align:center;border-radius:50%;font-size:10px;font-weight:900;color:#203946;background:radial-gradient(circle at 38% 30%,#d2c1a3,#8f763f);box-shadow:0 1px 2px rgba(0,0,0,.4)}

/* ===== 開箱資訊/路徑節點：狀態配色更分明 ===== */
.rnode.now{background:radial-gradient(circle at 38% 30%,#334e7e,#16294a)!important;box-shadow:0 0 0 1px #b5995c,0 0 0 4px rgba(181,153,92,.22),0 0 14px rgba(181,153,92,.55),inset 0 1px 0 rgba(224,218,207,.4)!important}
.rnode.done{background:radial-gradient(circle at 38% 30%,#d6c6a9,#967b41 68%,#324d7b)!important}
.rnode.lock{background:radial-gradient(circle at 38% 30%,#172339,#0c131e)!important;box-shadow:0 0 0 1px #314b77!important;opacity:.85}


/* =================== CLEAN DESIGN SYSTEM（權威層，收斂所有按鈕/卡片/標籤）=================== */
:root{
  --navy:#0e1b32;--navy2:#132543;--navyb1:#233a63;--navyb2:#101e37;
  --brass:#8f763f;--gold:#b5995c;--goldL:#d0c1a6;
  --parch:#eae5dc;--parch2:#dbd1bf;--ink:#202c41;--ink2:#354e78;--cream:#e9e4dc;
  --wax:#8a2e22;--waxT:#b23a2a;--tealc:#35515f;
}
/* 通用按鈕：乾淨圓角、單層黃銅框、無切角、無殘留偽元素 */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  font-family:inherit;font-size:14px;font-weight:700;line-height:1.15;cursor:pointer;
  padding:11px 20px;min-height:0;border-radius:10px;border:1.5px solid var(--brass);
  background:linear-gradient(#ede8df,#dbd1bf);color:var(--ink);
  clip-path:none!important;-webkit-clip-path:none!important;
  box-shadow:0 2px 6px rgba(6,11,20,.22),inset 0 1px 0 #f9f6f0;
  text-shadow:none;transition:transform .15s,box-shadow .18s,filter .18s,border-color .18s;overflow:hidden}
.btn::before,.btn::after{content:none!important;display:none!important}
.btn:hover{transform:translateY(-1px);border-color:var(--goldL);box-shadow:0 5px 12px rgba(6,11,20,.28),inset 0 1px 0 #f9f6f0}
.btn:active{transform:translateY(1px);box-shadow:inset 0 2px 5px rgba(0,0,0,.26)}
/* 主要：墨藍 + 金框 + 暖米白字 */
.btn.primary{background:linear-gradient(var(--navyb1),var(--navyb2))!important;color:var(--cream)!important;
  border:1.5px solid var(--gold)!important;
  box-shadow:0 3px 10px rgba(4,8,14,.42),inset 0 1px 0 rgba(224,218,207,.22)!important;
  text-shadow:0 1px 2px rgba(0,0,0,.42)!important;padding:12px 22px!important;letter-spacing:.04em}
.btn.primary::before{content:""!important;display:block!important;position:absolute;left:6px;right:6px;top:4px;height:38%;
  border-radius:8px;background:linear-gradient(rgba(255,255,255,.13),transparent);pointer-events:none;box-shadow:none!important}
.btn.primary::after{content:none!important;display:none!important}
.btn.primary:hover{filter:brightness(1.1);border-color:var(--goldL)!important;
  box-shadow:0 6px 16px rgba(4,8,14,.5),0 0 12px rgba(181,153,92,.32),inset 0 1px 0 rgba(224,218,207,.26)!important}
.btn.primary:active{transform:translateY(1px);box-shadow:inset 0 2px 6px rgba(0,0,0,.4)!important}
.btn.primary.block{width:auto;max-width:360px;margin-left:auto;margin-right:auto;display:flex}
/* 次要：羊皮深字（=通用 .btn） */
.btn.ghost{background:linear-gradient(#e8e1d4,#d3c8b3)!important;color:var(--ink2)!important;border-color:rgba(143,118,63,.7)!important}
/* 金：黃銅牌 */
.btn.gold{background:linear-gradient(#dfd1b8,#b5995c 60%,#8f763f)!important;color:#141e31!important;border:1.5px solid var(--goldL)!important;text-shadow:0 1px 0 rgba(247,243,236,.5)!important}
/* 成功：小面積深藏青綠 + ✓ */
.btn.teal{background:linear-gradient(#3f5f6f,#2c4653)!important;color:#eaf8ff!important;border:1.5px solid #5c7f91!important;position:relative;padding-left:28px!important;text-shadow:0 1px 2px rgba(0,0,0,.35)!important}
.btn.teal::after{content:"✓"!important;display:flex!important;position:absolute;left:8px;top:50%;transform:translateY(-50%);width:15px;height:15px;align-items:center;justify-content:center;border-radius:50%;font-size:10px;font-weight:900;color:#203946;background:radial-gradient(circle at 38% 30%,#d2c1a3,#8f763f);box-shadow:0 1px 2px rgba(0,0,0,.4)}
/* 危險：蠟封紅 */
.btn.danger{background:linear-gradient(#9e3627,#7f2820)!important;color:#ffe4dc!important;border:1.5px solid #c15a49!important;text-shadow:0 1px 2px rgba(0,0,0,.4)!important}
/* 停用/未解鎖：暗墨藍 */
.btn[disabled],.btn:disabled{background:linear-gradient(#1a2942,#132138)!important;color:#8f9fbb!important;border-color:rgba(120,138,170,.4)!important;opacity:.8;filter:none!important;cursor:not-allowed;transform:none!important}
.btn.sm{padding:8px 13px!important;font-size:12.5px!important;border-radius:9px!important}
.btn.sm.primary{padding:9px 15px!important}
.btn.sm.teal{padding-left:26px!important}

/* 導覽分頁：墨藍統一，選中=墨藍+金框發光 */
.tab{background:linear-gradient(#16294a,#0f1c33)!important;color:#e0d8cb!important;border:1px solid var(--brass)!important;
  border-radius:11px!important;box-shadow:0 2px 7px rgba(4,8,14,.4),inset 0 1px 0 rgba(224,218,207,.12)!important;
  text-shadow:none!important;font-weight:700}
.tab::before,.tab::after{content:none!important;display:none!important}
.tab:hover{transform:translateY(-1px);filter:brightness(1.12);border-color:var(--goldL)!important}
.tab.on{background:linear-gradient(#22385f,#101e37)!important;color:#e1d4bd!important;border:1.5px solid var(--gold)!important;
  box-shadow:0 4px 14px rgba(4,8,14,.5),0 0 12px rgba(181,153,92,.4),inset 0 1px 0 rgba(224,218,207,.22)!important}
.tab.on .ic{opacity:1}
.topbar{background:linear-gradient(#12233f,#0d192d)!important;border-bottom:2px solid var(--brass)!important}
.who{color:#e0d8cb!important}.who small{color:#ae935a!important}

/* 登入卡：乾淨圓角、無切角缺口、內金細框 */
.paper{clip-path:none!important;-webkit-clip-path:none!important;border-radius:16px!important;
  border:1.5px solid var(--brass)!important;
  background:radial-gradient(120% 80% at 50% -8%,#f7f4ed,transparent 55%),linear-gradient(#eeeae2,#dfd5c3)!important;
  box-shadow:0 26px 60px rgba(4,8,14,.55),inset 0 0 0 1px rgba(184,152,83,.28)!important;padding:30px 28px 26px!important}
#login .paper::after{content:""!important;position:absolute;inset:9px;border:1px solid rgba(143,118,63,.5);border-radius:11px;pointer-events:none}
#login h2{color:#202c41!important}#login .cap{color:#8f763f!important}#login label{color:#2d446d!important}#login .chk{color:#2d446d!important}
#login .input{background:#f4f0ea!important;border-color:var(--gold)!important;color:#202c41!important}

/* 卡片：乾淨圓角（統一） */
.card{border-radius:14px!important}

/* 狀態徽章四型（印章化） */
.badge,.stbadge{border-radius:7px;font-weight:800;letter-spacing:.02em;border:1px solid transparent;padding:2px 8px;display:inline-flex;align-items:center;gap:4px}
.badge.ok,.badge.cat-fixed,.stbadge.stb-approved{background:radial-gradient(circle at 30% 25%,#e2d6c0,#b5995c)!important;color:#1c2a44!important;border:1px solid #755f2e!important;box-shadow:inset 0 1px 0 #f4efe6}
.stbadge.stb-pending,.badge.cat-fb,.badge.cat-vaward{background:linear-gradient(#1c2c49,#12223d)!important;color:#d9ceb9!important;border:1px solid var(--brass)!important}
.stbadge.stb-rejected,.stbadge.stb-late,.badge.zero,.badge.no{background:linear-gradient(#9e3627,#7f2820)!important;color:#ffe0d6!important;border:1px solid #c15a49!important}
.stbadge.stb-none,.badge.warn{background:linear-gradient(#2a3b58,#1c2a42)!important;color:#c3cfe4!important;border:1px solid #5f708c!important}

/* 警告卡 + 待補交橡皮章 */
.alert-card{border:1px solid var(--wax)!important;border-left:5px solid var(--wax)!important;
  background:linear-gradient(#efebe3,#e8e0d1)!important;position:relative;overflow:hidden}
.alert-card h3{color:var(--waxT)!important}
.alert-card .listrow{border:1px solid rgba(138,46,34,.35)!important;background:rgba(252,251,249,.7)!important}
.stamp-todo{position:absolute;right:16px;top:14px;transform:rotate(-12deg);color:#b23a2a;border:2.5px solid #b23a2a;
  border-radius:9px;padding:3px 12px;font-weight:900;letter-spacing:.14em;font-size:15px;opacity:.9;
  box-shadow:inset 0 0 0 1px rgba(178,58,42,.35);text-shadow:0 0 1px rgba(178,58,42,.3)}
@media(max-width:640px){.stamp-todo{font-size:12px;right:10px;top:10px}}

/* =============== 間距節奏 + 黑曜石圖示 =============== */
/* 間距：收斂卡片與區塊留白，減少大片深色縫 */
.wrap{padding:14px 16px 70px!important}
.tabs{margin:12px 0 14px!important;gap:8px!important}
.card{margin-bottom:12px!important;padding:16px 18px!important}
.hero{gap:12px!important;margin-bottom:12px!important}
.desc{margin:0 0 10px!important;padding-bottom:8px!important}
.route-steps{margin:10px 0 4px!important}
.card h3{margin:0 0 2px!important}
@media(max-width:640px){
  .hero{gap:10px!important}
  .card{margin-bottom:10px!important;padding:15px 16px!important}
  .tabs{gap:7px!important;margin:10px 0 12px!important}
}

/* 黑曜石圖示：深黑玻璃＋金邊＋金色圖徽（標題圓章、路徑節點、導覽徽章） */
.card h3 .ic,.map-node{
  background:radial-gradient(circle at 34% 26%,#3b424e 0%,#161a22 46%,#080b0f 100%)!important;
  color:#d2c1a3!important;border:0!important;
  box-shadow:0 0 0 1.4px var(--brass),0 0 0 2.4px rgba(8,11,15,.9),inset 0 1px 2px rgba(255,255,255,.22),inset 0 -3px 5px rgba(0,0,0,.6),0 3px 7px rgba(4,8,14,.5)!important}
.card h3 .ic svg,.card h3 .ic path{stroke:#d2c1a3!important}
/* 頂欄/區塊標題左側圓章的高光點 */
.card h3 .ic::after{content:"";position:absolute;top:14%;left:22%;width:34%;height:26%;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.5),transparent 70%);pointer-events:none}

/* 路徑節點黑曜石化：未完成/進行中黑曜石＋金邊，完成維持古銅金 */
.rnode{background:radial-gradient(circle at 34% 26%,#2b313c,#0b0e14 72%)!important;box-shadow:0 0 0 1.3px #314b77,inset 0 1px 2px rgba(255,255,255,.18),inset 0 -3px 5px rgba(0,0,0,.6)!important}
.rnode.now{box-shadow:0 0 0 1.4px #b5995c,0 0 14px rgba(181,153,92,.6),inset 0 1px 2px rgba(255,255,255,.22)!important}
.rnode.done{background:radial-gradient(circle at 36% 28%,#d6c6a9,#967b41 68%,#324d7b)!important;box-shadow:0 0 0 1.3px #e1d4bd,inset 0 1px 0 rgba(243,237,226,.6),0 3px 8px rgba(4,8,14,.4)!important}
.rnode.lock{opacity:.7}
.rnode svg circle{stroke:#b5995c}
.rnode.done svg *{stroke:#283d62!important;fill:#1e2d48}
/* 節點內星形金色（進行/未開放） */
.rnode.now svg path,.rnode.lock svg path{fill:#d2c1a3!important}

/* 手機：hero 上下堆疊，避免兩欄擠壓 */
@media(max-width:600px){
  .hero{flex-direction:column!important;gap:10px!important}
  .hero>.card,.signcard{flex:1 1 auto!important;width:100%!important;min-width:0!important}
  .ringwrap{gap:14px}
}

/* =============== 倒數大字盒（更精緻、有緊張感）=============== */
.cdwrap{display:inline-block;padding:10px 14px;border-radius:12px;border:1px solid var(--brass);
  background:linear-gradient(#132543,#0d192e);box-shadow:0 3px 12px rgba(4,8,14,.4),inset 0 1px 0 rgba(224,218,207,.12)}
.cdlab{font-size:12px;letter-spacing:.14em;color:#b5995c;margin-bottom:6px;font-weight:700}
.cdlab.live{color:#7fb5d0}
.cdlab.muted{color:#8f9fbb}
.cdbig{display:flex;gap:8px;align-items:flex-end}
.cdu{display:flex;flex-direction:column;align-items:center;min-width:44px;padding:6px 8px;border-radius:9px;
  background:radial-gradient(circle at 40% 20%,#26334a,#0e1a2f);border:1px solid rgba(181,153,92,.55);
  box-shadow:inset 0 1px 0 rgba(224,218,207,.18),inset 0 -3px 6px rgba(0,0,0,.45)}
.cdu>b{font-size:26px;line-height:1;font-weight:800;color:#eae5dc;font-variant-numeric:tabular-nums;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.5)}
.cdu>i{font-size:10px;color:#b5995c;font-style:normal;margin-top:4px;letter-spacing:.1em}
.cdbig.live .cdu{border-color:#5f94ae;background:radial-gradient(circle at 40% 20%,#223945,#0e212a)}
.cdbig.live .cdu>b{color:#eaf8ff}.cdbig.live .cdu>i{color:#8fc0d8}
.cdbig.muted .cdu{opacity:.7}
@media(max-width:640px){.cdu{min-width:38px;padding:5px 6px}.cdu>b{font-size:21px}}

/* 路徑連接線改淺色（暗古銅→淺舊金） */
.rline{border-top-color:#c6b9a0!important;opacity:.65!important}
.rline.on{border-top-color:#d2c1a3!important;opacity:.95!important}
/* 節點內星形/圈 更亮（未完成/進行中） */
.rnode:not(.done) svg circle{stroke:#cebfa3!important}
.rnode:not(.done) svg path{fill:#ece6db!important;stroke:none!important}

/* 路徑連接線改淺色（羊皮上好看） */
.rline{border-top:2px dashed #cdc2ae!important;opacity:.9}
.rline.on{border-top:2px dashed #cebfa3!important;opacity:1}
/* 倒數更明顯：面板加大、數字更大 */
.cdwrap{margin-top:12px}
.cdwrap .cdbig{gap:9px}
.cdwrap .cdu{min-width:46px!important;padding:7px 8px!important}
.cdwrap .cdu b{font-size:26px!important;line-height:1;display:block;font-variant-numeric:tabular-nums}
.cdwrap .cdu i{font-size:11px!important;font-style:normal;opacity:.85}
.cdwrap .cdlab{font-size:12.5px!important;letter-spacing:.12em}

/* 彈窗文字改深色（規範確認等） */
.modalBox{color:var(--ink)!important}
.modalBox p,.modalBox li,.modalBox label,.modalBox .rulesec p,.modalBox .chk,.modalBox .field label{color:var(--ink)!important}
.modalBox .small{color:#354e78!important}
.modalBox .rulesec .rt{color:#202c41!important}
.modalBox h3{color:#202c41!important}
/* 附檔指示 */
.attach-ok{color:#2c4653;font-size:11px;border:1px solid #5c7f91;border-radius:6px;padding:1px 6px;margin-left:6px}
.attach-no{color:#8a2e22;font-size:11px;border:1px solid #c15a49;border-radius:6px;padding:1px 6px;margin-left:6px}
/* 學員端即時計時 */
.liveel{display:inline-block;margin-top:4px;padding:3px 9px;border-radius:8px;background:linear-gradient(#16294a,#0f1c33);color:#d9ceb9;border:1px solid var(--brass);font-size:12.5px;font-variant-numeric:tabular-nums}


/* ===== 版面覆寫：一律放在樣式表最後，確保不被前面的舊規則蓋掉 =====
   基礎規則先寫，媒體查詢放最後，否則手機版的覆寫會被基礎規則蓋掉。 */

/* 頭像：補上全域規則。原本只有 .name-card .av 與 .contact .av 兩條帶範圍的規則，
   所以聊天室、名單列裡的頭像沒有尺寸，會在 flex 列裡被壓扁。 */
.av{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
    width:44px;height:44px;border-radius:50%;overflow:hidden;white-space:nowrap;
    background:radial-gradient(circle at 38% 32%,#cebd9f,#907740);
    color:#ffffff;font-weight:700;font-size:17px;line-height:1}
.av.sm{width:32px;height:32px;font-size:13px}
.av.xl{width:64px;height:64px;font-size:22px}
.ava{flex:0 0 auto}

/* 對話泡泡列：頭像與愛心不被壓縮，泡泡自己換行 */
.bubwrap>div{min-width:0}
.bubwrap .likerow{flex:0 0 auto}

/* 輸入列：輸入框吃掉剩下的所有寬度，按鈕維持原尺寸。
   原本 textarea.input 是 width:100%，在 flex 列裡會被壓到剩一百多 px。 */
.chatfoot{flex-wrap:nowrap;gap:8px}
.chatfoot textarea.input,.chatfoot input.input{flex:1 1 0;width:auto;min-width:0}
.chatfoot .btn{flex:0 0 auto}

@media(max-width:720px){
  /* 聯絡人列改成一條緊湊的橫向捲動列 */
  .chatwrap{flex-direction:column;min-height:0}
  .contacts{flex:0 0 auto;width:100%;height:auto;max-height:none;
            display:flex;align-items:center;overflow-x:auto;overflow-y:hidden;
            -webkit-overflow-scrolling:touch}
  .contact{flex:0 0 auto;border-bottom:0;border-right:1px solid #d9ceb9;
           white-space:nowrap;padding:8px 12px;align-items:center}
  .chatbody{max-height:58vh;padding:12px}
  .bub{max-width:82%}
  .bubwrap{gap:6px;align-items:flex-end}
}

@media(max-width:560px){
  /* 小螢幕：輸入框自己一整行，按鈕排在下一行，才不會被擠成一小格 */
  .chatfoot{flex-wrap:wrap;gap:6px;padding:8px}
  .chatfoot textarea.input,.chatfoot input.input{flex:1 1 100%;width:100%;order:1}
  .chatfoot .btn{order:2;padding:8px 12px;font-size:13px}
  .chatfoot .btn.primary{margin-left:auto}
}

@media(max-width:480px){
  .brand2{font-size:11px;letter-spacing:.06em;line-height:1.3}
  .who{font-size:11px;line-height:1.25}
  .bub{max-width:86%;font-size:13.5px}
  .chatbody{max-height:54vh;padding:10px}
}

/* ===== 行事曆分類 ===== */
.callegend{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
.calchip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 10px;
         font-size:12px;font-weight:700;cursor:pointer;border:1px solid transparent;line-height:1.5}
.calchip.mini{font-size:10.5px;padding:1px 7px;font-weight:600;cursor:default}
.calchip.off{opacity:.38;text-decoration:line-through}
.cat-sess{background:#ece4d5;border-color:#b1914c;color:#2c446c}
.cat-task{background:#e3ebef;border-color:#3d5c6b;color:#254454}
.cat-pub{background:#e0e8f6;border-color:#5b79ae;color:#263b5f}
.cat-exp{background:#efe1ee;border-color:#8f6394;color:#5b3560}
.cat-grad{background:#f7e3e0;border-color:#b4746c;color:#743b33}
.cell .cev{display:block;margin-top:3px;font-size:10.5px;line-height:1.4;padding:2px 5px;
           border-radius:6px;border-left:3px solid transparent;overflow:hidden;
           display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-all}
.cell .cev.cat-sess{background:#ece4d5;border-left-color:#b1914c;color:#2c446c}
.cell .cev.cat-task{background:#e3ebef;border-left-color:#3d5c6b;color:#254454}
.cell .cev.cat-pub{background:#e0e8f6;border-left-color:#5b79ae;color:#263b5f}
.cell .cev.cat-exp{background:#efe1ee;border-left-color:#8f6394;color:#5b3560}
.cell .cev.cat-grad{background:#f7e3e0;border-left-color:#b4746c;color:#743b33}
.cell .cev.over{background:#fbe6e1;border-left-color:#b4544a;color:#8a2f24;font-weight:700}
.cell .cev.done{opacity:.62}
.cell .cev.more{background:transparent;color:#836e41;font-weight:700}
.cell.today{box-shadow:0 0 0 2px #b1914c inset}
.cell.has{min-height:84px}
@media(max-width:720px){
  .calgrid{gap:4px}
  .cell{min-height:64px;padding:4px;font-size:11px}
  .cell.has{min-height:74px}
  .cell .cev{font-size:9.5px;padding:1px 4px}
  .callegend{gap:4px}
  .calchip{font-size:11px;padding:3px 8px}
}

/*PB-CSS-START*/

/* ===== 表揚榜 ===== */
.pbstage{position:relative;max-width:360px;margin:0 auto 12px;border-radius:14px;overflow:hidden;border:1px solid var(--line);box-shadow:0 8px 26px rgba(23,35,57,.18);background:#0f1b30}
.pbstage canvas{display:block;width:100%;height:auto}
.pbwrap{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start}
.pbwrap .pbstage{flex:0 0 340px;max-width:340px;margin:0}
.pbwrap .pbside{flex:1;min-width:260px;max-width:520px}
.pbhot{position:absolute;left:0;top:0;pointer-events:none}
.pbhot i{position:absolute;pointer-events:auto;cursor:pointer;border-radius:8px;border:1px dashed rgba(184,155,92,.32);transition:background .15s,border-color .15s}
.pbhot i:hover{background:rgba(184,155,92,.18);border-color:var(--gold);border-style:solid}
.pbtools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.pbseg{flex-wrap:wrap}
.pbsave{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:14px;padding:10px 12px;border-radius:12px;border:1px dashed var(--line);background:rgba(184,155,92,.06);font-size:12.5px}
.pbsave.on{border-style:solid;border-color:var(--goldD,#8f763f);background:#f6f3ed}
.pbsave span{flex:1;min-width:140px}
.pblist{margin:0 0 12px;padding-left:20px;font-size:13px;line-height:1.9}
.pbgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;margin-top:10px}
.pbcell{cursor:pointer;text-align:center;font-size:12px;padding:8px 4px;border:1px solid var(--line);border-radius:12px;background:#fefdfc;transition:border-color .15s}
.pbcell:hover{border-color:var(--gold)}
.pbcell.pend{border-color:var(--goldD,#8f763f);background:#f6f3ed}
.pbcell img{width:64px;height:64px;border-radius:50%;object-fit:cover;border:2px solid var(--gold);display:block;margin:0 auto 6px}
.pbcell .av{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;border:2px solid var(--gold);background:var(--navy,#1b2941);color:var(--parch,#eae5dc);margin:0 auto 6px}
.pbcell .badge{display:block;margin-top:4px}
.pbphoto{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-start;margin-bottom:12px}
.pbprev{flex:0 0 auto;border-radius:14px;overflow:hidden;background:#0f1b30;padding:6px}
.pbprev canvas{display:block;width:180px;height:180px}
.listrow.off{opacity:.45}
@media(max-width:720px){.pbwrap .pbstage{flex:1 1 100%;max-width:100%}}
.pbdiff{display:grid;gap:8px;margin:10px 0 14px}
.pbdiff>div{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fefdfc}
.pbdiff label{display:block;font-size:11.5px;color:var(--dim,#4e596d);margin-bottom:4px}
.pbdiff b{font-size:14px;line-height:1.6;word-break:break-all}
.pbdiff b.new{color:var(--caramel,#755f2e)}
.topbar img{cursor:pointer}


/* ═══ 按鈕四色：完成＝黑曜石、可行動＝深藍、未完成＝米白、危險＝紅 ═══ */
.btn.obsid{
  color:#e4dfd6!important;font-weight:700!important;
  background:linear-gradient(158deg,#1d2533 0%,#0d1119 46%,#171e2b 100%)!important;
  border:1.5px solid rgba(184,155,92,.62)!important;
  box-shadow:inset 0 1px 0 rgba(176,196,230,.22),inset 0 -2px 0 rgba(0,0,0,.45),0 3px 10px rgba(4,8,14,.42)!important;
  text-shadow:0 1px 2px rgba(0,0,0,.55)!important}
.btn.obsid:hover{box-shadow:inset 0 1px 0 rgba(176,196,230,.3),0 5px 14px rgba(4,8,14,.5)!important}
.btn.ivory{
  color:#6a5934!important;font-weight:700!important;
  background:linear-gradient(#f8f6f3,#ebe7e1)!important;
  border:1.5px solid rgba(143,118,63,.5)!important;
  box-shadow:inset 0 2px 5px rgba(109,91,53,.16),inset 0 -1px 0 #fefdfc,0 1px 2px rgba(37,57,92,.1)!important;
  text-shadow:none!important}
.btn.ivory[disabled]{opacity:.78}
/* 路線節點：同一套語意 */
.rnode.done{
  background:radial-gradient(circle at 36% 28%,#222c3d,#0c1119 72%)!important;
  box-shadow:0 0 0 1.4px rgba(184,155,92,.7),inset 0 1px 2px rgba(176,196,230,.22),inset 0 -3px 6px rgba(0,0,0,.55),0 3px 9px rgba(4,8,14,.42)!important;
  opacity:1!important}
.rnode.done svg *{stroke:#d2c1a3!important;fill:none!important}
.rnode.done .rchk{background:radial-gradient(circle at 38% 30%,#d6c6a9,#755f2e)!important;color:#0e1522!important}
.rnode.lock{
  background:linear-gradient(#f8f6f3,#e8e3d9)!important;
  box-shadow:0 0 0 1.3px rgba(143,118,63,.5),inset 0 2px 5px rgba(109,91,53,.18)!important;
  opacity:1!important;filter:none!important}
.rnode.lock svg circle{stroke:rgba(123,103,61,.65)!important}
.rnode.lock svg path{fill:rgba(123,103,61,.75)!important;stroke:none!important}
.rlabel.done{color:var(--ink2,#354e78)}
.rlabel.lock{opacity:.75}

/* ═══ 專場進修總覽 ═══ */
.fbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.fcard{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:14px 16px;border-radius:14px;
  border:1px solid var(--line,#b8aa8f);background:linear-gradient(#fefdfc,#ebe6de);margin-bottom:14px}
.fcard .fava img,.fcard .fava .av{width:82px;height:82px;border-radius:50%}
.fmeta{flex:1;min-width:190px}
.fname{font-size:21px;font-weight:800;color:#1f2b41;letter-spacing:.02em}
.fbadges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.fcoin{text-align:right;min-width:130px}
.fcoin label{display:block;font-size:11.5px;color:var(--dim,#4e596d)}
.fcoin b{font-size:22px;display:block;line-height:1.3}
.fcoin .small{display:block}
.fsec{border:1px solid var(--line,#b8aa8f);border-radius:12px;margin-bottom:10px;background:#fefdfc;overflow:hidden}
.fsec-h{display:flex;align-items:center;gap:9px;width:100%;padding:11px 14px;border:0;cursor:pointer;
  background:linear-gradient(#f8f6f1,#ebe6de);font-family:inherit;font-size:14px;color:#21324e;text-align:left}
.fsec-h b{flex:0 0 auto}
.fsec-h .small{flex:1;color:var(--dim,#4e596d)}
.fsec-h .fsec-x{color:var(--caramel,#755f2e);font-size:13px}
.fsec.on .fsec-h{border-bottom:1px solid var(--line,#b8aa8f)}
.fsec-b{padding:12px 14px}

/* 歸零事件簿 */
.tline{position:relative;padding-left:6px}
.tl-row{display:flex;gap:11px;padding:9px 0;border-bottom:1px dashed rgba(143,118,63,.28)}
.tl-row:last-child{border-bottom:0}
.tl-dot{flex:0 0 30px;height:30px;border-radius:50%;display:grid;place-items:center;
  background:linear-gradient(#ebe6de,#ddd4c4);border:1px solid var(--line,#b8aa8f)}
.tl-zero .tl-dot{background:linear-gradient(#f7ddd4,#efc4b7);border-color:#d98b7f}
.tl-clear .tl-dot{background:linear-gradient(#e4ecf0,#cfdce3);border-color:#a9c0cc}
.tl-exempt .tl-dot{background:linear-gradient(#eae1d0,#d4c5aa);border-color:var(--gold,#b89b5c)}
.tl-body{flex:1;min-width:0}
.tl-head{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.tl-when{margin-left:auto;font-size:12px;color:var(--dim,#4e596d)}
.tl-why{font-size:13px;line-height:1.7;color:#2a3e60;margin-top:3px;word-break:break-word}

/* 藏寶金時間軸 */
.zbar{display:flex;gap:11px;align-items:flex-start;padding:11px 13px;border-radius:11px;margin-bottom:10px;
  background:linear-gradient(#fdeee9,#f7ddd4);border:1px solid #d98b7f;color:#6b2419}
.wtl{border-left:2px solid rgba(184,155,92,.45);margin-left:6px;padding-left:12px}
.wtl-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px 0;border-bottom:1px dashed rgba(143,118,63,.25);position:relative}
.wtl-row:last-child{border-bottom:0}
.wtl-row::before{content:'';position:absolute;left:-17px;top:16px;width:8px;height:8px;border-radius:50%;
  background:var(--gold,#b89b5c);box-shadow:0 0 0 2px #fefdfc}
.wtl-row.off{opacity:.62}
.wtl-row.off .wtl-a{text-decoration:line-through}
.wtl-t{flex:0 0 130px;font-size:12px;color:var(--dim,#4e596d);font-variant-numeric:tabular-nums}
.wtl-m{flex:1;min-width:150px;font-size:13.5px}
.wtl-a{margin-left:auto;font-weight:800}

/* 互動紀錄 */
.heat{display:flex;gap:4px;margin-top:6px}
.heat i{flex:1;height:26px;border-radius:5px;background:#e8e4dd;border:1px solid rgba(143,118,63,.28)}
.heat i.lv1{background:#d8cebd}.heat i.lv2{background:#c1b399}
.heat i.lv3{background:#a98c4e}.heat i.lv4{background:#8f763f}
.heat-x{display:flex;justify-content:space-between;font-size:11px;color:var(--dim,#4e596d);margin-top:3px}
.ixwrap{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:10px;margin-top:8px}
.ixcard{padding:11px 12px;border-radius:12px;border:1px solid var(--line,#b8aa8f);background:linear-gradient(#fefdfc,#eeeae2)}
.ixcard.zero{opacity:.6}
.ixh{display:flex;align-items:center;gap:6px;font-size:13px;color:#21324e}
.ixn{font-size:26px;font-weight:800;color:var(--caramel,#755f2e);line-height:1.2}
.ixn span{font-size:12px;font-weight:600;margin-left:3px;color:var(--dim,#4e596d)}
.ixd{font-size:11.5px;color:var(--dim,#4e596d);margin-top:5px}
.ixgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-top:8px}
.ixgrid>div{padding:11px 12px;border-radius:12px;border:1px solid var(--line,#b8aa8f);background:#fefdfc}
.ixgrid label{display:block;font-size:11.5px;color:var(--dim,#4e596d)}
.ixgrid b{font-size:19px;display:block;line-height:1.4;color:#21324e}
.gwrap{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}
.gchip{font-size:11.5px;padding:3px 9px;border-radius:999px;border:1px solid rgba(143,118,63,.4);background:#f1eee9;color:#354e78}
.gchip.ok{background:#dce6eb;border-color:#a9c0cc;color:#2b4d5e}
.gchip.no{background:#f7ddd4;border-color:#d98b7f;color:#7e2015}

/* ═══ 前台表揚榜：堂次標籤與選片 ═══ */
.pbtabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.pbcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-bottom:12px}
.pbpick{cursor:pointer;text-align:left;padding:11px 12px;border-radius:12px;border:1px solid var(--line,#b8aa8f);
  background:linear-gradient(#fefdfc,#ebe6de);font-family:inherit;transition:border-color .15s,transform .12s}
.pbpick:hover{border-color:var(--gold,#b89b5c);transform:translateY(-1px)}
.pbpick.on{border-color:var(--goldD,#8f763f);background:linear-gradient(#f6f3ed,#e5dccb);box-shadow:0 3px 10px rgba(50,77,123,.18)}
.pbpick .pt{font-weight:800;font-size:14px;color:#21324e}
.pbpick .pf{display:flex;gap:-6px;margin:7px 0 5px}
.pbpick .pf img,.pbpick .pf .av{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--gold,#b89b5c);margin-left:-7px}
.pbpick .pf img:first-child,.pbpick .pf .av:first-child{margin-left:0}
.pbpick .pd{font-size:11.5px;color:var(--dim,#4e596d)}

/* 前台標籤上的則數、卡片狀態 */
.pbtabs .btn .pbn{display:inline-block;min-width:18px;margin-left:6px;padding:0 5px;border-radius:999px;
  font-size:11px;line-height:17px;background:rgba(23,35,57,.14);color:inherit;font-weight:700}
.pbtabs .btn.faint{opacity:.55}
.pbpick.off{opacity:.62;border-style:dashed}
.pbpick .pf .pmore{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border-radius:50%;margin-left:-7px;background:#e8e2d5;border:1.5px solid var(--gold,#b89b5c);
  font-size:10.5px;font-weight:800;color:#354e78}
.pbpick .badge{vertical-align:middle}

/*NO-TINT-START*/
/* ══════════════════════════════════════════════════════════════
   米白配色補強
   整批換色只換色相與明度，不動版面。這一段是換色之後仍需要手動
   壓對比、或需要整片翻成米白的地方。夾在 NO-TINT 標記之間，
   換色程序會原樣跳過，所以這裡寫的就是最終顏色。
   ══════════════════════════════════════════════════════════════ */

/* 頁面底色：由深色世界地圖改為米白 */
body{color:#1f2b41;
  background:radial-gradient(1000px 680px at 82% -10%,rgba(154,124,66,.16) 0,transparent 56%),
    radial-gradient(860px 620px at -10% 110%,rgba(90,115,160,.14) 0,transparent 54%),
    linear-gradient(#f7f4ed,#e9e3d6) !important;
  background-attachment:scroll;background-repeat:no-repeat;background-size:100% 100%}
#bg{display:none!important}

/* 分頁標籤：米白底上改成淺色籌碼，選中的才填深藍 */
.tab{background:linear-gradient(#fffdf8,#f1ece1)!important;color:#2a3c5c!important;
  border:1px solid #c3b599!important;text-shadow:none!important;
  box-shadow:0 2px 5px rgba(40,50,70,.1),inset 0 1px 0 #fffdf8!important}
.tab:hover{border-color:#9a7c42!important;box-shadow:0 4px 10px rgba(40,50,70,.14)!important}
.tab.on{background:linear-gradient(#2f4a78,#1b2c4c)!important;color:#f6ecd8!important;
  border:1px solid #9a7c42!important;text-shadow:none!important;
  box-shadow:0 5px 14px rgba(20,30,50,.3),inset 0 1px 0 rgba(255,255,255,.14)!important}
.tab.on::before,.tab.on::after{display:none!important}

/* 頭像與序號圓點：白字要有夠深的底才讀得清楚 */
.av,.av.sm,.av.xl{background:radial-gradient(circle at 38% 30%,#3a557f,#1b2c4c)!important;
  color:#f4f1ea!important;border:1px solid rgba(154,124,66,.55)}
.gn{background:radial-gradient(circle at 36% 30%,#3a557f,#1b2c4c)!important;color:#f4f1ea!important}

/* 其餘逐項壓對比 */
.gnote{color:#5b5138!important}
.arrow,.garr{color:#6b5530!important}
.sec-title{color:#25395c!important}
.bubwrap .sidtag{color:#5e4f2c!important;border-color:#a98f5c!important}

/* 深色面板：裡面的字要走淺色，別被上面的深藍蓋掉 */
.reszone .sec-title,.card.dark .sec-title{color:#e2c98f!important}
.reszone .small,.reszone .mini,.reszone div,.card.dark .small{color:#cdd6e4!important}
.reszone .btn{color:#dfe6f1!important}
.reszone .btn.gold{color:#1f2b41!important}
.bubwrap.me .sidtag{color:#ffffff!important;border-color:rgba(255,255,255,.55)!important}

/* 維護畫面是深色的，標誌要翻成奶油白才看得見 */
.mtlogo{filter:brightness(0) invert(1) sepia(.34) saturate(3.4) hue-rotate(2deg)
  drop-shadow(0 4px 16px rgba(201,169,106,.3))!important}

/* ═══ 開播橫幅與一級按鈕 ═══ */
.lvbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 14px;padding:16px 18px;
  border-radius:16px;border:1px solid #9a7c42;
  background:linear-gradient(100deg,rgba(201,169,106,.26),rgba(201,169,106,.07));
  box-shadow:0 8px 22px rgba(60,48,26,.14)}
.lvbar .tx{flex:1;min-width:210px}
.lvbar .t1{font-family:"Noto Serif TC",serif;font-size:17px;font-weight:700;color:#1b2c4c;letter-spacing:.04em}
.lvbar .t2{font-size:12.5px;color:#3b4557;margin-top:5px;line-height:1.7}
/* 直播中＝紅色。正在進行中的事情要一眼認得出來，
   而且要和「待開播」的金色分得開。 */
.lvbar.on{border-color:#b8574a;
  background:linear-gradient(100deg,rgba(184,87,74,.18),rgba(184,87,74,.04))}
.lvbar.on .t1{color:#77291f}
.lvbar.on .btn.lv1{background:linear-gradient(#8f3b30,#6d2a22)!important;
  border-color:#c07a6c!important;color:#fdf1ec!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 0 0 3px rgba(184,87,74,.14)!important}
/* 只有圓點會呼吸，整行字跟著閃會很吵 */
@keyframes lvpulse{0%,100%{opacity:1}50%{opacity:.3}}
.lvdot{color:#87291d;animation:lvpulse 2.4s ease-in-out infinite;display:inline-block}
@media(prefers-reduced-motion:reduce){.lvdot{animation:none}}
/* 一級按鈕：整個畫面最多一顆，深藍底金邊，比其他按鈕大一號 */
.btn.lv1{background:linear-gradient(#24374f,#13203a)!important;border:1px solid #9a7c42!important;
  color:#f6e7c6!important;font-size:15px!important;font-weight:700!important;letter-spacing:.06em!important;
  padding:14px 26px!important;min-height:0!important;border-radius:11px!important;clip-path:none!important;
  text-shadow:none!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 8px 20px rgba(20,30,50,.34)!important}
.btn.lv1::before{display:none!important}
.btn.lv1:hover{filter:brightness(1.14)}
@media(max-width:640px){
  .lvbar{padding:14px 15px;gap:11px}
  .lvbar .t1{font-size:15.5px}
  .btn.lv1{width:100%;justify-content:center;padding:13px 20px!important}
}

/* ═══ 回饋對話氣泡 ═══ */
.bbthread{border:1px solid #cdbfa2;border-radius:14px;padding:13px 14px 6px;margin-bottom:12px;
  background:linear-gradient(#fffdf8,#f8f4ea)}
.bbthread.isnew{border-color:#9a7c42;box-shadow:0 0 0 1px rgba(154,124,66,.28)}
.bbhead{display:flex;align-items:center;gap:9px;margin-bottom:10px;flex-wrap:wrap}
.bbhead .t{flex:1;min-width:120px}
.bbhead .t b{font-size:13.5px;display:block;color:#1b2c4c}
.bbhead .t .s{font-size:11px;color:#4e596d;margin-top:2px}
.bbav{width:32px;height:32px;border-radius:50%;flex:none;display:flex;align-items:center;
  justify-content:center;font-size:17px;background:rgba(154,124,66,.16);color:#7a6030;
  border:1px solid rgba(154,124,66,.5)}
.bbrow{margin-bottom:9px}
.bbq{font-size:10.5px;letter-spacing:.1em;color:#7a6030;font-weight:700;margin:0 0 4px 3px}
.bbmsg{background:#ffffff;border:1px solid #cdbfa2;border-radius:5px 15px 15px 15px;
  padding:10px 13px;font-size:13.5px;line-height:1.85;color:#22314d;word-break:break-word}
.bbrow.anon .bbmsg{border-style:dashed;background:#fbf8f1}
.bbt{font-size:10.5px;color:#4e596d;margin:5px 0 0 3px}
@media(max-width:640px){.bbmsg{font-size:13px;padding:9px 12px}}

/* ═══ 藏寶金明細 ═══ */
.lgwrap{overflow-x:auto;margin-top:12px;border:1px solid #cdbfa2;border-radius:12px;background:#fffdf8}
.lgtb{width:100%;border-collapse:collapse;font-size:12.5px;min-width:720px}
.lgtb th{text-align:left;font-size:11px;letter-spacing:.08em;color:#4e596d;font-weight:700;
  padding:11px 12px;border-bottom:1px solid #cdbfa2;background:#f6f1e6;white-space:nowrap}
.lgtb td{padding:11px 12px;border-bottom:1px solid #e6ded0;vertical-align:middle;color:#22314d}
.lgtb tr:last-child td{border-bottom:0}
.lgtb tr.lgdead td{opacity:.5}
.lgtb tr.lgdead td b{text-decoration:line-through}
.lgtb .lgt{color:#4e596d;white-space:nowrap;font-variant-numeric:tabular-nums}
.lgtb .lga{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.lgtb .lgop{text-align:right;white-space:nowrap}
.lgwho{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
/* 表格裡每一列都有「作廢」，做成實心紅會整片搶眼；
   四級按鈕本來就該是外框，這裡回到外框。 */
.lgtb .lgop .btn.danger{background:transparent!important;border:1px solid #b8574a!important;
  color:#b8574a!important;box-shadow:none!important;text-shadow:none!important;clip-path:none!important;
  border-radius:9px!important}
.lgtb .lgop .btn.danger::before{display:none!important}
.lgtb .lgop .btn.danger:hover{background:rgba(184,87,74,.1)!important}
.lgtb .lgop .btn{background:#fffdf8;border:1px solid #cdbfa2;color:#22314d;box-shadow:none;
  clip-path:none;border-radius:9px;text-shadow:none}
.kvbox{border:1px solid #cdbfa2;border-radius:12px;padding:10px 13px;margin-bottom:12px;background:#fbf8f1}
.kvbox .kv{display:flex;gap:12px;padding:6px 0;border-top:1px solid #e6ded0;font-size:13px}
.kvbox .kv:first-child{border-top:0}
.kvbox .kv .k{width:44px;flex:none;color:#4e596d;font-size:12px}
.kvbox .kv .v{flex:1}

/* ═══ 後台左側導覽 ═══ */
@media(min-width:961px){
  .wrap.sideon{display:flex;gap:20px;align-items:flex-start;max-width:1280px}
  .wrap.sideon>#view{flex:1;min-width:0}
  .tabs.navside{width:198px;flex:none;display:block;position:sticky;top:70px;
    background:#f3eee2;border:1px solid #cdbfa2;border-radius:14px;padding:11px 9px;
    box-shadow:0 6px 18px rgba(50,42,28,.1);max-height:calc(100vh - 92px);overflow:auto}
  .tabs.navside .navg{margin-bottom:9px}
  .tabs.navside .navg:last-child{margin-bottom:0}
  .tabs.navside .navt{display:flex;align-items:center;gap:7px;padding:6px 9px;
    font-size:11.5px;font-weight:700;letter-spacing:.14em;color:#7a6030}
  .tabs.navside .navt svg{width:14px;height:14px}
  .tabs.navside .navt .gd{width:7px;height:7px;border-radius:50%;background:#9a7c42;
    margin-left:auto;box-shadow:0 0 0 3px rgba(154,124,66,.22)}
  .tabs.navside .navt .gn{margin-left:auto;min-width:18px;text-align:center;font-size:10.5px;
    line-height:17px;border-radius:999px;background:#b8574a;color:#fff;padding:0 5px;letter-spacing:0}
  .tabs.navside .navk{display:block;width:100%;text-align:left;font-family:inherit;
    font-size:13px;color:#2a3c5c;background:transparent;border:0;border-radius:9px;
    padding:8px 11px;cursor:pointer;clip-path:none;box-shadow:none;text-shadow:none;
    font-weight:500;letter-spacing:.02em;transition:background .14s,color .14s}
  .tabs.navside .navk:hover{background:rgba(154,124,66,.12)}
  .tabs.navside .navk.on{background:linear-gradient(#2f4a78,#1b2c4c);color:#f6ecd8;font-weight:700;
    box-shadow:0 3px 9px rgba(20,30,50,.24)}
}
/* 平板寬度（沒有抽屜的時候）：收回上方橫排 */
@media(max-width:960px){
  .tabs.navside:not(.mob){display:flex;flex-wrap:wrap;gap:8px}
  .tabs.navside:not(.mob) .navg{display:contents}
  .tabs.navside:not(.mob) .navt{display:none}
  .tabs.navside:not(.mob) .navk-wrap{display:contents}
  .tabs.navside:not(.mob) .navk{font-family:inherit;font-size:13px;cursor:pointer;
    background:linear-gradient(#fffdf8,#f1ece1);color:#2a3c5c;border:1px solid #c3b599;
    border-radius:11px;padding:8px 14px;box-shadow:0 2px 5px rgba(40,50,70,.1);
    text-shadow:none;clip-path:none;font-weight:700}
  .tabs.navside:not(.mob) .navk.on{background:linear-gradient(#2f4a78,#1b2c4c);color:#f6ecd8;
    border-color:#9a7c42}
}

/* ═══════════════════════════════════════════════════════════
   按鈕：乾淨版
   舊的按鈕是好幾版疊出來的：黑色投影＋兩三層內嵌描邊＋文字陰影，
   再加上鑰匙孔、勾勾、鉸鍊這些裝飾，在米白底上看起來就是髒。
   這裡整組重來：一條細邊、一道內緣高光、一層帶色的柔光。
   要立體靠高光與漸層，不靠黑影；要發光就用金色或深藍的光暈。
   ═══════════════════════════════════════════════════════════ */
.btn,.btn.primary,.btn.gold,.btn.teal,.btn.danger,.btn.ghost,.btn.ivory,.btn.obsid,.btn.ext{
  text-shadow:none!important;clip-path:none!important;-webkit-clip-path:none!important;
  border-radius:10px!important;font-weight:700;letter-spacing:.02em;
  transition:transform .14s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease!important}
/* 裝飾一律拿掉 */
.btn::before,.btn::after,.btn.primary::before,.btn.primary::after,
.btn.teal::after,.btn.gold::after{content:none!important;display:none!important}

/* 三級：淺色，畫面上最多的那種 */
.btn{background:linear-gradient(#fffdf9,#f4efe5)!important;
  border:1px solid #c9bda4!important;color:#22314d!important;
  box-shadow:inset 0 1px 0 #fffefc!important;padding:9px 16px}
.btn:hover{border-color:#9a7c42!important;
  box-shadow:inset 0 1px 0 #fffefc,0 2px 8px rgba(40,56,86,.1)!important;transform:none}
.btn:active{transform:translateY(1px);box-shadow:inset 0 1px 3px rgba(40,56,86,.14)!important}

/* 二級：深藍實心，一般但明確的操作 */
.btn.primary,.btn.obsid,.btn.ext{
  background:linear-gradient(#2f4a78,#1e3357)!important;
  border:1px solid #1a2c4a!important;color:#f3ecdd!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 1px 3px rgba(26,44,74,.22)!important}
.btn.primary:hover,.btn.obsid:hover,.btn.ext:hover{
  filter:none!important;transform:none;
  background:linear-gradient(#35538a,#22395f)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 0 0 3px rgba(47,74,120,.14)!important}
.btn.primary:active{transform:translateY(1px);
  box-shadow:inset 0 2px 4px rgba(10,20,40,.35)!important}

/* 金色：獎勵、發放這類跟藏寶金有關的 */
.btn.gold{background:linear-gradient(#e0cda4,#c3a869)!important;
  border:1px solid #9a7c42!important;color:#2a2113!important;
  box-shadow:inset 0 1px 0 rgba(255,253,247,.65)!important}
.btn.gold:hover{transform:none;background:linear-gradient(#e8d8b5,#cdb377)!important;
  box-shadow:inset 0 1px 0 rgba(255,253,247,.7),0 0 0 3px rgba(154,124,66,.16)!important}

/* 石青：已完成、已通過 */
.btn.teal{background:linear-gradient(#3f6274,#2c4a5c)!important;
  border:1px solid #27414f!important;color:#eef4f7!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.15)!important;padding-left:16px!important}
.btn.teal:hover{transform:none;background:linear-gradient(#496f83,#335567)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 0 0 3px rgba(63,98,116,.16)!important}

/* 四級：危險動作一律外框，不搶視線 */
.btn.danger{background:transparent!important;border:1px solid #b8574a!important;
  color:#a04537!important;box-shadow:none!important}
.btn.danger:hover{transform:none;background:rgba(184,87,74,.08)!important;
  box-shadow:0 0 0 3px rgba(184,87,74,.12)!important}

.btn.ghost,.btn.ivory{background:transparent!important;border:1px solid #c0b193!important;
  color:#5b4f37!important;box-shadow:none!important}
.btn.ghost:hover,.btn.ivory:hover{transform:none;background:rgba(154,124,66,.07)!important;
  box-shadow:0 0 0 3px rgba(154,124,66,.1)!important}

.btn[disabled],.btn:disabled{background:#f1ece2!important;border:1px solid #d8cebb!important;
  color:#5f6878!important;box-shadow:none!important;opacity:1!important;
  filter:none!important;cursor:not-allowed;transform:none!important}

/* ═══ 一級按鈕：兩行式 ═══
   同一個畫面最多一顆。上面是動作，下面一行小字說明按下去會發生什麼，
   校長在當下不用再看旁邊的說明。
   質感靠三件事：深藍漸層、上緣一道高光、外圈一圈金色光暈。
   一律不用黑影——黑影在米白底上會發灰。 */
.btn.lv1{
  display:inline-flex!important;align-items:center;justify-content:flex-start;gap:13px!important;
  background:linear-gradient(#24374f,#14213a)!important;border:0!important;
  color:#f8ebcf!important;padding:14px 28px 14px 18px!important;min-height:64px!important;
  border-radius:14px!important;letter-spacing:0!important;font-size:inherit!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),
    0 0 0 1px rgba(176,143,79,.85),
    0 0 0 5px rgba(176,143,79,.12)!important}
.btn.lv1 .ico{display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:36px;height:36px;border-radius:11px;font-size:14px;
  background:rgba(248,235,207,.13);border:1px solid rgba(248,235,207,.34)}
.btn.lv1 .lab{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25}
.btn.lv1 .lab b{font-size:17px;font-weight:700;letter-spacing:.08em}
.btn.lv1 .lab i{font-style:normal;font-size:11px;font-weight:400;opacity:.72;
  letter-spacing:.04em;margin-top:2px}
.btn.lv1:hover{transform:none;filter:none!important;
  background:linear-gradient(#2c4260,#1a2a47)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),
    0 0 0 1px rgba(201,169,106,1),
    0 0 0 6px rgba(176,143,79,.2),
    0 0 26px rgba(176,143,79,.3)!important}
.btn.lv1:active{transform:translateY(1px)}

/* 直播中：同一顆按鈕換成紅色，光暈也跟著換 */
.lvbar.on .btn.lv1{background:linear-gradient(#8f3b30,#6b2620)!important;color:#fdf1ec!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),
    0 0 0 1px rgba(201,130,111,.9),
    0 0 0 5px rgba(184,87,74,.14)!important}
.lvbar.on .btn.lv1 .ico{background:rgba(253,241,236,.14);border-color:rgba(253,241,236,.36)}
.lvbar.on .btn.lv1:hover{background:linear-gradient(#a2463a,#7d3328)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),
    0 0 0 1px rgba(216,150,131,1),
    0 0 0 6px rgba(184,87,74,.22),
    0 0 26px rgba(184,87,74,.32)!important}

@media(max-width:700px){
  .btn.lv1{width:100%;justify-content:center!important;padding:13px 20px!important}
  .btn.lv1 .lab{align-items:center}
}

/* 卡片與面板的影子也一併收乾淨：帶藍調、範圍大、濃度低 */
.card,.fcard,.parch,.lgwrap,.modal{box-shadow:0 2px 10px rgba(40,56,86,.07)!important}
.topbar{box-shadow:0 1px 0 rgba(26,44,74,.1)!important}

/* ═══ 徽章：六種狀態要一眼分得開 ═══
   換色之後多種徽章擠成同一個米色藥丸，看不出差別，這裡重新定調。 */
.badge,.stbadge{border-radius:999px!important;font-weight:700!important;
  letter-spacing:.03em!important;text-shadow:none!important;box-shadow:none!important;
  padding:3px 10px!important;font-size:11px!important;border:1px solid transparent!important;
  display:inline-flex;align-items:center;gap:4px}
/* 完成、通過、已發放 */
.badge.ok,.stbadge.stb-approved{background:#33556a!important;border-color:#2a4557!important;color:#f0f6f9!important}
/* 待處理、進行中 */
.badge.warn,.stbadge.stb-pending{background:rgba(154,124,66,.14)!important;
  border-color:#9a7c42!important;color:#6f5729!important}
/* 逾時、退回、歸零 */
.badge.bad,.badge.zero,.stbadge.stb-late,.stbadge.stb-rejected{
  background:rgba(184,87,74,.1)!important;border-color:#b8574a!important;color:#8e3a2c!important}
/* 金色：與藏寶金有關的標記 */
.badge.gold{background:linear-gradient(#e2d0a8,#c9ae70)!important;
  border-color:#9a7c42!important;color:#2d2414!important}
/* 中性 */
.badge.mute,.badge{background:#f2ede3;border-color:#cdbfa2;color:#4e596d}
.badge.cat-fb,.badge.cat-task{background:rgba(47,74,120,.1)!important;
  border-color:#2f4a78!important;color:#26405f!important}

/* ═══ 判定當場交流 ═══ */
.tkrow{display:flex;align-items:center;gap:11px;flex-wrap:wrap;
  padding:11px 0;border-top:1px solid #e6ded0}
.tkrow:first-of-type{border-top:0}
.tkrow .who{display:flex;align-items:center;gap:8px;min-width:118px}
.tkrow .who b{font-size:13.5px;color:#1b2c4c}
.tkrow .tg{min-width:74px}
.tkrow .amt{width:118px;flex:none}
.tkrow .amt .input{padding:7px 10px;font-size:13.5px;text-align:right;
  font-variant-numeric:tabular-nums;font-weight:700}
.tkrow .ops{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.tkrow .hint{font-size:10.5px;color:#4e596d;margin-top:3px;text-align:right}
.tkrow .hint.ch{color:#8a6210;font-weight:700}
@media(max-width:640px){
  .tkrow .ops{margin-left:0;width:100%}
  .tkrow .amt{width:104px}
}

/* ═══ 愛心：看得到是誰按的 ═══ */
.likerow{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;position:relative}
.bubwrap.me .likerow{justify-content:flex-end}
/* 誰按的不寫在氣泡框裡，滑過去才展開；手機點一下按鈕也會展開 */
.lkpop{position:absolute;bottom:calc(100% + 7px);left:0;z-index:40;
  display:flex;gap:5px;flex-wrap:wrap;max-width:260px;padding:7px 9px;
  border:1px solid #d8cebb;border-radius:11px;background:#fffdf8;
  box-shadow:0 6px 18px rgba(62,74,96,.16);
  opacity:0;visibility:hidden;transform:translateY(3px);
  transition:opacity .15s ease-out,transform .15s ease-out,visibility .15s}
.bubwrap.me .lkpop{left:auto;right:0}
.likerow:hover .lkpop,.likerow:focus-within .lkpop{opacity:1;visibility:visible;transform:none}
.lkp{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:#31405c;
  background:#f6f1e6;border-radius:999px;padding:2px 8px 2px 2px;white-space:nowrap}
.lkp .av,.lkp .lkav{width:19px;height:19px;border-radius:50%;flex:none}
.lkav.adm{display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(#2f4a78,#1e3357);color:#f3ecdd;font-size:9.5px;font-weight:700}

/* ═══ 關注名單：累計未完成 ═══ */
.wtshut{margin-top:7px;border:1px solid #d8cebb;border-radius:10px;background:#faf7f0}
.wtshut>summary{cursor:pointer;list-style:none;padding:7px 11px;font-size:12px;
  font-weight:700;color:#4e596d;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.wtshut>summary::-webkit-details-marker{display:none}
.wtshut>summary::before{content:"▸";color:#9a7c42;font-size:11px}
.wtshut[open]>summary::before{content:"▾"}
.wtshut>summary .small{font-weight:400;color:#6a748a}
.wtline{display:flex;gap:10px;align-items:baseline;padding:6px 12px;font-size:12px;
  border-top:1px solid #e6ded0;color:#22314d}
.wtline .d{width:88px;flex:none;color:#4e596d;font-variant-numeric:tabular-nums}
.wtline .m{flex:1;min-width:0}
.wtline .n{font-weight:700;color:#9c4335;font-variant-numeric:tabular-nums}

/* ═══ 二級：重要但不到一級 ═══
   確認發放、確認修正、批次發放這一類：比一般按鈕大一階，
   整條滿版時再大一點，和三級的淺色小鈕真正分得開。 */
.btn.primary{padding:12px 24px!important;font-size:14.5px!important;
  min-height:46px!important;border-radius:11px!important;letter-spacing:.04em!important}
.btn.primary.block{width:100%;min-height:52px!important;font-size:15.5px!important;
  padding:15px 24px!important;border-radius:12px!important;letter-spacing:.06em!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),
    0 0 0 1px rgba(30,51,87,.9),0 0 0 4px rgba(47,74,120,.1)!important}
.btn.primary.block:hover{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),
    0 0 0 1px rgba(47,74,120,1),0 0 0 5px rgba(47,74,120,.16),
    0 0 20px rgba(47,74,120,.2)!important}
.btn.danger.block{width:100%;min-height:52px!important;font-size:15.5px!important;
  padding:15px 24px!important;border-radius:12px!important}
/* 三級維持小而安靜 */
.btn.sm{padding:7px 13px!important;font-size:12.5px!important;min-height:0!important;
  border-radius:9px!important}

/* ═══ 導覽收合 ═══ */
.navhd{display:flex;align-items:center;gap:8px;padding:2px 6px 9px;margin-bottom:6px;
  border-bottom:1px solid #ddd3bf}
.navhd .nl{font-size:11px;letter-spacing:.2em;color:#7a6030;font-weight:700;flex:1;min-width:0;
  overflow:hidden;white-space:nowrap}
.navfold{width:26px;height:26px;flex:none;border:1px solid #cdbfa2;background:#fffdf8;
  color:#4e596d;border-radius:8px;cursor:pointer;font-size:12px;line-height:1;
  display:flex;align-items:center;justify-content:center;padding:0}
.navfold:hover{border-color:#9a7c42;color:#22314d}
@media(min-width:961px){
  .wrap.sideon.folded .tabs.navside{width:58px;padding:11px 7px}
  .tabs.navside.folded .navhd{justify-content:center;border-bottom:0;padding-bottom:6px}
  .tabs.navside.folded .navhd .nl{display:none}
  .tabs.navside.folded .navt span{display:none}
  .tabs.navside.folded .navt{justify-content:center;padding:6px 0;gap:0}
  .tabs.navside.folded .navt .gd,.tabs.navside.folded .navt .gn{position:absolute;
    margin:0;transform:translate(13px,-9px)}
  .tabs.navside.folded .navg{position:relative}
  .tabs.navside.folded .navk{font-size:0;padding:9px 0;text-align:center;line-height:0;
    border-radius:8px;position:relative}
  .tabs.navside.folded .navk::before{content:"·";font-size:15px;line-height:1;color:inherit}
  .tabs.navside.folded .navk.on::before{content:"●";font-size:9px}
  .tabs.navside.folded .navk .ni{font-size:14px;line-height:1}
  .tabs.navside.folded .navk .nn{display:none}
}
/* 前台導覽：圖示加文字，收合後只剩圖示 */
.tabs.navside .navk .ni{display:none}
.tabs.navside .navk .ni svg{width:15px;height:15px;vertical-align:-2px}
@media(min-width:961px){
  .tabs.navside.folded .navk .ni{display:inline-flex}
  .tabs.navside.folded .navk::before{content:none}
}
@media(max-width:960px){
  .tabs.navside:not(.mob) .navhd{border-bottom:0;padding:0 0 8px;width:100%}
  .navfold{margin-left:auto}
  .tabs.navside.folded:not(.mob) .navg{display:none}
  .tabs.navside.folded:not(.mob){padding-bottom:0}
}

/* ═══ 場次工作台三區 ═══ */
.wbgrps{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 10px}
.wbgrp{font-family:inherit;font-size:13.5px;font-weight:700;cursor:pointer;
  padding:9px 18px;border-radius:11px;border:1px solid #c9bda4;background:linear-gradient(#fffdf9,#f4efe5);
  color:#22314d;display:inline-flex;align-items:center;gap:7px}
.wbgrp:hover{border-color:#9a7c42}
.wbgrp.on{background:linear-gradient(#2f4a78,#1e3357);border-color:#1a2c4a;color:#f3ecdd}
.wbgrp .cnt{min-width:18px;text-align:center;font-size:10.5px;line-height:17px;border-radius:999px;
  background:#b8574a;color:#fff;padding:0 5px}
.wbgrp.on .cnt{background:#f3ecdd;color:#1e3357}
/* 對比補強：白字的課次小標籤，底色壓深一點才看得清楚 */
.bubwrap.me .sidtag{background:rgba(0,0,0,.30)!important;color:#ffffff!important;
  border-color:rgba(255,255,255,.62)!important}
/* 參與規範最底下的版權字，原本淡到快看不見 */
.parch + .grid2 + .small,
.pv-body .small[style*="text-align:center"],
#view > .small[style*="text-align:center"]{color:#3f4a5c!important}
/* ═══ 感謝視窗 ═══ */
.thx{text-align:center;padding:6px 2px 2px}
.thxseal{width:64px;height:64px;margin:0 auto 10px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:26px;font-weight:700;color:#2a1f0d;
  background:radial-gradient(circle at 36% 32%,#d8b871,#9d7a35);
  box-shadow:0 0 0 4px rgba(244,239,227,.7) inset,0 4px 14px rgba(120,102,72,.28)}
.thx h3{margin:0 0 6px;font-size:20px;color:#25334c}
.thxp{margin:0 0 6px;font-size:15px;color:#8a6a3a;letter-spacing:.04em}

/* ═══ 心得回饋待審 ═══ */
.rfwrap{max-height:50vh;overflow:auto;margin-bottom:10px}
.rfrow{border:1px solid #ddd0b2;border-radius:12px;background:#fbf7ee;padding:11px 13px;margin-bottom:9px}
.rfh{display:flex;align-items:center;gap:7px;font-size:14px;color:#25334c}
.rfh .av{width:22px;height:22px;border-radius:50%;flex:none}
.rfq{margin-top:7px;font-size:12px;color:#8b7c5f}
.rfa{margin-top:6px;font-size:13.5px;line-height:1.75;color:#26303f;
  background:#f2ece0;border-radius:10px;padding:7px 10px;word-break:break-word}
/* ═══ 一封信 ═══ */
.ltr{position:relative;margin:0 0 14px;border-radius:15px;overflow:hidden;
  border:1px solid #ddd0b2;background:linear-gradient(#fbf7ee,#f5efe1);
  box-shadow:0 1px 0 #fffdf8 inset,0 6px 16px rgba(120,102,72,.09)}
.ltr .ltbody{padding:14px 15px 11px;
  max-height:0;opacity:0;overflow:hidden;
  transition:max-height .5s cubic-bezier(.22,.9,.3,1),opacity .34s ease-out .12s,padding .3s}
.ltr.open .ltbody{max-height:3000px;opacity:1}
.ltr.open .ltseal{display:none}

/* 封著的時候：深藍封口＋蠟印 */
.ltseal{display:block;position:relative;width:100%;border:0;cursor:pointer;
  padding:74px 18px 22px;text-align:center;font:inherit;color:#e8dfca;
  background:linear-gradient(#1b2942,#16233c)}
.ltseal .flap{position:absolute;left:0;right:0;top:0;height:64px;
  background:linear-gradient(#22334f,#1b2942);
  clip-path:polygon(0 0,100% 0,50% 100%);
  transform-origin:top center;transition:transform .5s cubic-bezier(.5,-.3,.3,1.3)}
.ltseal::after{content:"";position:absolute;left:0;right:0;top:63px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(196,166,106,.7),transparent)}
.ltseal .wax{position:absolute;left:50%;top:64px;transform:translate(-50%,-50%);
  width:52px;height:52px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:21px;font-weight:700;color:#2a1f0d;
  background:radial-gradient(circle at 36% 32%,#d8b871,#9d7a35);
  box-shadow:0 0 0 3px rgba(232,223,202,.42) inset,0 3px 10px rgba(0,0,0,.3);
  transition:transform .4s ease-in,opacity .4s ease-in}
.ltseal .stx{display:block;font-size:15.5px;letter-spacing:.02em}
.ltseal .stx b{font-size:18px;color:#f2e9d4}
.ltseal .shint{display:block;margin-top:5px;font-size:11.5px;color:rgba(214,196,158,.72)}
.ltseal:hover .wax{transform:translate(-50%,-50%) scale(1.06)}
.ltseal:focus-visible{outline:2px solid #c4a66a;outline-offset:-3px}

/* 拆開的那一下 */
.ltr.opening .ltseal .flap{transform:rotateX(-165deg)}
.ltr.opening .ltseal .wax{transform:translate(-50%,-50%) scale(.3) rotate(22deg);opacity:0}
.ltr.opening .ltseal{opacity:0;transition:opacity .34s ease-out .16s}
.ltr.open .bbrow{animation:ltin .42s cubic-bezier(.22,.9,.3,1) both}
.ltr.open .bbrow:nth-child(3){animation-delay:.07s}
.ltr.open .bbrow:nth-child(4){animation-delay:.14s}
.ltr.open .bbrow:nth-child(5){animation-delay:.21s}
@keyframes ltin{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.ltfoot{display:flex;justify-content:flex-end;margin-top:9px;padding-top:10px;
  border-top:1px dashed #ddd0b2}
.ltshot{max-height:56vh;overflow:auto;border:1px solid #ddd0b2;border-radius:12px;
  background:#f4efe3;padding:8px;margin-bottom:10px}
.ltshot img{width:100%;height:auto;display:block;border-radius:7px}
@media (prefers-reduced-motion:reduce){
  .ltr .ltbody,.ltseal .flap,.ltseal .wax,.ltseal{transition:none}
  .ltr.open .bbrow{animation:none}
}

/* ═══ 手機導覽：窄列＋抽屜 ═══ */
#navbar{display:none}
.navbar{display:flex;align-items:center;gap:11px;
  padding:9px 4px 11px}
.navburger{position:relative;width:42px;height:38px;flex:none;border-radius:11px;
  border:1px solid #d8cebb;background:#fffdf8;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  box-shadow:0 1px 0 #fff inset,0 2px 6px rgba(120,102,72,.09)}
.navburger span{display:block;width:17px;height:2px;border-radius:2px;background:#2b3852}
.navburger .gn{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;
  border-radius:999px;background:#b8574a;color:#fff;font-size:10.5px;font-style:normal;
  line-height:17px;text-align:center;padding:0 4px}
.navnow{font-size:16px;font-weight:700;color:#25334c;letter-spacing:.01em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#navscrim{position:fixed;inset:0;z-index:62;background:rgba(18,26,42,.46);
  opacity:0;transition:opacity .22s ease-out}
#navscrim.on{opacity:1}

@media (max-width:860px){
  #navbar{display:block}
  .wrap.sideon{display:block}
  .tabs.navside.mob{position:fixed;z-index:64;top:0;left:0;bottom:0;width:276px;
    margin:0;padding:16px 14px 22px;border-radius:0 18px 18px 0;overflow-y:auto;
    display:block;flex-wrap:nowrap;
    background:#fbf7ee;border-right:1px solid #ddd0b2;
    box-shadow:14px 0 34px rgba(18,26,42,.22);
    transform:translateX(-104%);transition:transform .26s cubic-bezier(.22,.9,.3,1)}
  body.navopen .tabs.navside.mob{transform:none}
  body.navopen{overflow:hidden}

  .tabs.navside.mob .navhd{display:flex;align-items:center;gap:8px;width:auto;
    padding:0 2px 11px;margin-bottom:10px;border-bottom:1px solid #e4dac4}
  .tabs.navside.mob .navhd .nl{font-size:11px;letter-spacing:.2em;color:#7a6030;font-weight:700;flex:1}
  .tabs.navside.mob .navfold{margin-left:auto;width:30px;height:30px;flex:none;
    border-radius:9px;border:1px solid #d8cebb;background:#fffdf8;color:#4a5568;
    font-size:14px;line-height:1;cursor:pointer}

  .tabs.navside.mob .navg{display:block;margin-bottom:13px}
  .tabs.navside.mob .navg:last-child{margin-bottom:0}
  .tabs.navside.mob .navt{display:flex;align-items:center;gap:7px;
    padding:5px 8px;margin-bottom:5px;
    font-size:11px;letter-spacing:.16em;color:#7a6030;font-weight:700;
    background:rgba(154,124,66,.09);border-radius:8px}
  .tabs.navside.mob .navt svg{width:14px;height:14px}
  .tabs.navside.mob .navt .gd{width:7px;height:7px;border-radius:50%;background:#9a7c42}
  .tabs.navside.mob .navt .gn{margin-left:auto;min-width:18px;text-align:center;
    font-size:10.5px;line-height:17px;border-radius:999px;background:#b8574a;color:#fff;padding:0 5px}

  .tabs.navside.mob .navk-wrap{display:block}
  .tabs.navside.mob .navk{display:flex;align-items:center;gap:8px;
    width:100%;text-align:left;font-family:inherit;font-size:14.5px;font-weight:600;
    cursor:pointer;color:#2a3c5c;background:transparent;border:0;border-radius:10px;
    padding:10px 11px;margin-bottom:2px;box-shadow:none;text-shadow:none;clip-path:none}
  .tabs.navside.mob .navk:hover{background:rgba(154,124,66,.12)}
  .tabs.navside.mob .navk.on{background:linear-gradient(#2f4a78,#1b2c4c);color:#f6ecd8;font-weight:700}
  .tabs.navside.mob .navk .ni{display:inline-flex}
  .tabs.navside.mob .navk .ni svg{width:15px;height:15px}
}
@media (prefers-reduced-motion:reduce){
  .tabs.navside.mob,#navscrim{transition:none}
}
/* ═══ 設定開課：四步 ═══ */
.opsteps{display:flex;gap:6px;list-style:none;margin:2px 0 14px;padding:0;flex-wrap:wrap}
.opstep{flex:1 1 128px;min-width:0}
.opstep>button{display:flex;align-items:center;gap:8px;width:100%;cursor:pointer;
  font-family:inherit;font-size:13px;font-weight:600;
  color:#5b678a;background:#f4efe3;border:1px solid #e0d6c2;
  border-radius:11px;padding:9px 11px;text-align:left}
.opstep>button:hover{background:#efe8d9}
.opstep .opn{width:22px;height:22px;flex:none;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:11.5px;font-weight:700;background:#e0d6c2;color:#6b5a38}
.opstep .opl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opstep.done>button{border-color:#c9b98f}
.opstep.done .opn{background:#7a6031;color:#fffdf8}
.opstep.on>button{background:linear-gradient(#2f4a78,#1b2c4c);border-color:#1a2c4a;color:#f3ecdd}
.opstep.on .opn{background:#f3ecdd;color:#1e3357}
.opwhy{display:flex;align-items:center;gap:7px;margin:0 0 12px;padding:9px 12px;
  border-radius:11px;font-size:13px;color:#7a5b21;
  background:#faf2df;border:1px solid #e3d3a8}
.opwhy svg{width:15px;height:15px;flex:none}
.opmiss{margin:5px 0 4px;padding-left:18px;font-size:12.5px;color:#7a5b21}
.opsum{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:8px;margin-top:11px}
.opsum>div{background:#f6f1e6;border:1px solid #e0d6c2;border-radius:11px;padding:9px 11px}
.opsum .k{display:block;font-size:11px;color:#8b7c5f;margin-bottom:2px}
.opsum b{font-size:15px;color:#25334c}
.opnav{display:flex;justify-content:space-between;gap:10px;margin-top:14px}
@media(max-width:600px){
  .opstep{flex:1 1 calc(50% - 6px)}
}
/* ═══ 當場給分 ═══ */
.gvhead{display:flex;align-items:flex-start;gap:10px;margin:2px 0 14px;padding:11px 13px;
  border-radius:12px;background:#f4efe3;border:1px solid #e0d6c2;color:#3d4a63}
.gvhead svg{width:18px;height:18px;flex:none;margin-top:2px}
.gvhead b{font-size:15px;color:#25334c}
.tkrow .ops{display:flex;gap:5px;flex-wrap:wrap}
/* ═══ 學員端即時預覽 ═══ */
.pvwrap{margin-top:16px;border:1px solid #d8cebb;border-radius:13px;background:#f6f1e6;overflow:hidden}
.pvwrap.open{border-color:#c3a468;box-shadow:0 0 0 3px rgba(195,164,104,.14)}
.pvhd{display:flex;align-items:center;gap:9px;width:100%;border:0;background:transparent;
  padding:11px 13px;text-align:left;cursor:pointer;font:inherit;color:#25334c}
.pvhd:hover{background:rgba(154,124,66,.08)}
.pvcar{color:#6f5723;font-size:12px;width:12px;flex:none}
.pvhd b{font-size:14.5px}
.pvn{margin-left:auto;font-size:12px;color:#5f5643;text-align:right}
.pvbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:0 13px 10px;border-bottom:1px dashed #ddd0b2}
.pvtags{display:flex;gap:6px;flex-wrap:wrap}
.pvtag{border:1px solid #d8cebb;background:#fffdf8;color:#3d4a63;border-radius:999px;
  padding:3px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}
.pvtag:hover{background:#f1ebdd}
.pvtag.on{background:linear-gradient(#2f4a78,#1b2c4c);border-color:#1a2c4a;color:#f3ecdd}
.pvwho{display:flex;align-items:center;gap:6px;margin-left:auto;font-size:12px;color:#5f5643}
.pvsel{width:auto;min-width:92px;padding:4px 8px;font-size:12.5px}
.pvframe{margin:12px 13px;border:1px solid #d8cebb;border-radius:12px;background:#fbf8f1;
  max-height:520px;overflow:auto;position:relative}
.pvframe::after{content:"唯讀預覽";position:sticky;float:right;top:8px;right:8px;z-index:2;
  background:rgba(22,35,60,.82);color:#f3ecdd;font-size:10.5px;letter-spacing:.14em;
  border-radius:999px;padding:2px 10px;margin:8px 8px 0 0}
.pvstage{padding:10px;pointer-events:none;user-select:none;zoom:.84}
.pvstage .card{box-shadow:none}
.pvfoot{margin:0;padding:0 13px 12px;font-size:11.5px;color:#5f5643}
/* ═══ 身分三種 ═══ */
.rc{display:inline-block;border-radius:999px;padding:2px 10px;font-size:11.5px;font-weight:700;
  margin:0 4px 4px 0;white-space:nowrap}
.rc.sharer{background:#2f4a78;color:#f3ecdd}
.rc.giver{background:rgba(164,130,74,.2);color:#6f5723}
.rc.joiner{background:rgba(22,35,60,.1);color:#3d4a63}
.rc.none{background:rgba(22,35,60,.06);color:#49525f;font-weight:500}
.rc.sm{padding:1px 8px;font-size:10.5px}
.rcs{line-height:2}

/* ═══ 進度條 ═══ */
.pgb{min-width:126px}
.pgt{display:flex;align-items:baseline;gap:8px;font-size:11.5px;color:#5f5643;margin-bottom:3px}
.pgt span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pgt b{font-variant-numeric:tabular-nums;color:#25334c;font-size:12.5px}
.pgr{height:7px;border-radius:999px;background:rgba(22,35,60,.1);overflow:hidden}
.pgr>i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#2f4a78,#44608e)}
.pgb.gold .pgr>i{background:linear-gradient(90deg,#a4824a,#c8a869)}
.pggrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:11px 16px;margin-bottom:6px}
.sttb td{vertical-align:middle}
.sttb td:nth-child(2),.sttb td:nth-child(4),.sttb td:nth-child(5){min-width:132px}

/* ═══ 現場即時台 ═══ */
.lvstat{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px;margin:2px 0 12px}
.lvstat>div{background:#f4efe3;border:1px solid #e0d6c2;border-radius:11px;padding:8px 11px}
.lvstat span{display:block;font-size:11px;color:#5f5643}
.lvstat b{font-size:19px;color:#25334c;font-variant-numeric:tabular-nums}
.lvrole{margin-bottom:12px}
.lvrole .small{display:block;margin-top:3px;color:#5f5643}
.lvwarn{margin-top:9px;padding:9px 11px;border-radius:10px;font-size:12.5px;
  background:#fbeeeb;border:1px solid #e0bdb6;color:#8a3226}
.lvwarn svg{width:14px;height:14px;vertical-align:-2px}
.lvtb td{vertical-align:middle}
.lvsel{width:auto;min-width:92px;padding:4px 7px;font-size:12.5px}
.lvamt{width:92px;text-align:right;padding:4px 7px;font-size:12.5px}
.lvtb .small.ch{color:#9e2b1c;font-weight:700}
.lvc{display:inline-block;border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:600;white-space:nowrap}
.lvc.ok{background:rgba(47,74,120,.13);color:#25395c}
.lvc.wait{background:rgba(164,130,74,.2);color:#6f5723;cursor:pointer}
.lvc.no{background:#fbeeeb;color:#8a3226;cursor:pointer}
.lvc.none{background:rgba(22,35,60,.07);color:#5f6878}
.lvc.off{background:transparent;color:#8b7c5f;font-weight:500}
.lvabs{margin-top:11px;border:1px solid #d8cebb;border-radius:11px;background:#faf7f0}
.lvabs>summary{cursor:pointer;list-style:none;padding:8px 12px;font-size:12.5px;
  font-weight:700;color:#3d4a63}
.lvabs>summary::-webkit-details-marker{display:none}
.lvabs>summary::before{content:"▸　";color:#9a7c42}
.lvabs[open]>summary::before{content:"▾　"}
.lvabsrow{display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid #e4dac4;
  font-size:13px;flex-wrap:wrap}
@media(max-width:600px){
  .lvamt{width:74px}
  .lvsel{min-width:78px}
}
/* ═══ 任務屬性標籤 ═══ */
.tchips{display:flex;gap:4px;flex-wrap:wrap;margin:5px 0 2px}
.tch{display:inline-block;border-radius:6px;padding:1px 7px;font-size:10.5px;font-weight:700;
  line-height:1.6;white-space:nowrap}
.tch.fix{background:#2f4a78;color:#f3ecdd}
.tch.opp{background:rgba(164,130,74,.24);color:#6b5220}
.tch.attr{background:rgba(22,35,60,.1);color:#33415c}
.tch.fmt{background:rgba(22,35,60,.05);color:#4a5568;font-weight:500}
.tch.due{background:#faf2df;color:#6f5320;border:1px solid #e3d3a8}
.tch.none{background:rgba(22,35,60,.05);color:#4a5568;font-weight:500}
.tch.auto{background:rgba(47,74,120,.13);color:#25395c}
.tch.man{background:#faeee9;color:#8a3226}
.minicard .tchips{margin:4px 0 6px}

/* ═══ 預覽：維護畫面與現在看的是誰 ═══ */
.pvmt{display:flex;align-items:center;gap:7px;margin:0 0 10px;padding:9px 12px;
  border-radius:10px;font-size:12.5px;background:#faf2df;border:1px solid #e3d3a8;color:#6f5320}
.pvmt svg{width:15px;height:15px;flex:none}
.pvmtwrap{border-radius:12px;overflow:hidden;min-height:260px;position:relative}
.pvmtwrap #mtroot,.pvmtwrap .mtwrap{position:relative!important;min-height:260px}
.pvnow{padding:0 13px 8px;font-size:12px;color:#5f5643}
.pvnow b{color:#25334c}
/* ═══ 上方段落列 ═══ */
.secbar{margin-top:2px}

/* ═══ 資格燈號 ═══ */
.eliggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:10px;margin-top:4px}
.eligcard{border:1px solid #d8cebb;border-radius:12px;background:#faf7f0;padding:10px 12px}
.eligcard .eh{display:flex;align-items:center;gap:7px;font-size:14px;color:#25334c;margin-bottom:8px}
.eligcard .eh .av{width:22px;height:22px;border-radius:50%;flex:none}
.lamps{display:flex;gap:5px;flex-wrap:wrap}
.lamp{flex:1;min-width:0;text-align:center;border-radius:8px;padding:5px 4px;
  font-size:11.5px;font-weight:700;white-space:nowrap}
.lamp.on{background:linear-gradient(#2f4a78,#1b2c4c);color:#f3ecdd}
.lamp.wait{background:rgba(164,130,74,.2);color:#6b5220}
.lamp.off{background:rgba(22,35,60,.07);color:#5f6878}

/* ═══ 時效警示 ═══ */
.tch.due.warm{background:#faecd2;border-color:#d8b87a;color:#7a5410}
.tch.due.hot{background:#fae0cf;border-color:#d79a63;color:#8a4a12;
  box-shadow:0 0 0 2px rgba(215,154,99,.22)}
.tch.due.over{background:#f7dcd6;border-color:#c98a80;color:#8a2a1c;
  box-shadow:0 0 0 2px rgba(201,138,128,.26)}

/* ═══ 自動判定三階段 ═══ */
.phase{margin-top:14px}
.phase .ph{display:flex;align-items:center;gap:7px;margin-bottom:7px;
  font-size:13px;font-weight:700;color:#25334c}
.phase .ph svg{width:16px;height:16px;color:#9a7c42}
.phase .ph .small{margin-left:auto;color:#5f5643;font-weight:500}

/* ═══ 課程總覽與批次新增 ═══ */
.sbqbtn{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.card.sbq{padding-bottom:14px}
.pickrow{display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  padding:9px 11px;border:1px solid #ded5c3;border-radius:11px;
  background:#faf7f0;margin-bottom:7px}
.pickrow b{color:#25334c;font-size:14px}
.pickrow .small{color:#5f5643;max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ═══ 場次選擇列 ═══ */
.wbsess{display:flex;align-items:center;gap:9px;flex-wrap:wrap;width:100%;box-sizing:border-box;
  padding:9px 11px;margin:-4px -4px 10px;border-radius:12px;
  background:#f1ece2;border:1px solid #ddd3c1}
.wbsess .wbsl{font-size:12px;font-weight:700;color:#5f5643}
.wbssel{flex:1 1 320px;min-width:200px;max-width:560px;height:36px;
  padding:5px 10px;font-size:13.5px;text-overflow:ellipsis}
.wbchips{display:flex;gap:6px;flex-wrap:wrap}
.wbchip{border:1px solid #d5cab6;background:#fbf8f2;color:#4a4335;
  border-radius:999px;padding:5px 11px;font-size:12px;font-weight:700;cursor:pointer;
  display:inline-flex;align-items:center;gap:5px}
.wbchip.on{background:#25334c;border-color:#25334c;color:#f5efe2}
.wbchip .cnt{background:rgba(0,0,0,.12);border-radius:999px;padding:0 6px;font-size:11px}
.wbchip.on .cnt{background:rgba(255,255,255,.22)}
.wbhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.wbnav{border:1px solid #e0d7c6;border-radius:12px;padding:9px 10px;margin:10px 0 4px;background:#fdfbf7}
.wbnav .wbl{font-size:11.5px;font-weight:700;color:#6b5f45;margin:2px 0 6px}
.wbnav .wbtabs{margin-top:2px}

/* ═══ 維護中的預覽標示 ═══ */
.pvmt{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pvmt button{margin-left:auto}

/* ═══ 關注名單篩選 ═══ */
.wtbar{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;
  padding:10px 11px;border-radius:12px;background:#f1ece2;border:1px solid #ddd3c1;margin-bottom:10px}
.wtbar label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;font-weight:700;color:#5f5643}
.wtsel{height:34px;padding:5px 9px;font-size:13px;min-width:140px;max-width:260px}
.wtmode{display:flex;gap:6px;margin-left:auto;align-items:center}
.listrow.wtl{border-left:4px solid transparent}
.listrow.wtl.lv3{border-left-color:#a8483c}
.listrow.wtl.lv2{border-left-color:#b28e41}
.listrow.wtl.lv1{border-left-color:#7d8aa0}
.listrow.wtl .mid{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wtall{margin-top:12px;border-top:1px solid #e4dccc;padding-top:8px}
.wtall>summary{cursor:pointer;font-weight:700;color:#25334c;font-size:13.5px}

/* ═══ 學員名冊 ═══ */
.rstb .rsname{padding:4px 8px}
.rstb .rsmail{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ═══ 藏寶金發放收合 ═══ */
.gfold{border:1px solid #ded5c3;border-radius:14px;background:#faf7f0;margin-bottom:12px;overflow:hidden}
.gfold>summary{cursor:pointer;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:12px 14px;font-size:14px;color:#25334c}
.gfold>summary .small{color:#5f5643;margin-left:auto}
.gfold[open]>summary{border-bottom:1px solid #e6ddcc}
.gfold .card{border:0;box-shadow:none;background:transparent;margin:0}

/* ═══ 任務卡 ═══ */
.pcard{border:1px solid #ded5c3;border-radius:13px;background:#faf7f0;margin-bottom:8px;overflow:hidden}
.pcard>summary{cursor:pointer;display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:11px 13px}
.pcard>summary b{color:#25334c;font-size:14px}
.pcard .pi svg{width:17px;height:17px;color:#9a7c42}
.pcard .pamt{color:#7a5410;font-weight:700;font-size:13px}
.pcard .pus{margin-left:auto;color:#5f5643}
.pcard[open]>summary{border-bottom:1px solid #e6ddcc;background:#f5efe4}
.pbody{padding:11px 13px}
.pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.pf label{display:block;font-size:11.5px;font-weight:700;color:#6b5f45;margin-bottom:3px}
.pf div{font-size:13px;color:#33404f;line-height:1.55}
.pgots{display:flex;gap:6px;flex-wrap:wrap}
.pgot{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid #e0d7c6;
  border-radius:999px;padding:3px 9px 3px 3px;font-size:12px;color:#33404f}
.pgot .av{width:20px;height:20px;border-radius:50%}
.pgot b{color:#7a5410}

/* ═══ 學姐端任務卡的進行方式 ═══ */
.thow{display:flex;gap:6px;align-items:flex-start;margin-top:6px;
  font-size:12.5px;line-height:1.5;color:#4a4335}
.thow svg{width:14px;height:14px;flex:none;margin-top:2px;color:#8a6f3c}

/* ═══ 備份分類 ═══ */
.bkg{margin-bottom:10px}
.bkgh{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:#6b5f45;margin-bottom:5px}
.bkgh svg{width:15px;height:15px;color:#9a7c42}
.bkmap{margin:10px 0;border:1px solid #ded5c3;border-radius:12px;background:#faf7f0;padding:10px 12px}
.bkmap>summary{cursor:pointer;font-weight:700;color:#25334c;font-size:13.5px}
.bkmap .lgwrap{margin-top:8px}

/* ═══ 維護中的整頁預覽標示 ═══ */
.mtpvnote{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:9px 12px;margin-bottom:10px;border-radius:11px;
  background:#f3ece0;border:1px solid #ddd0b4;color:#4a4335;font-size:12.5px}
.mtpvnote svg{width:15px;height:15px;flex:none}
.mtpvnote b{color:#25334c}
.mtpvnote button{margin-left:auto}

/* ═══ 上方分頁：未選的也要看得清楚 ═══ */
.wbtab{background:#e7ddc8;border-color:#c4b795;color:#28364e;font-weight:600}
.wbtab:hover{background:#dccfb2}
.wbtab.on{background:linear-gradient(#27364f,#18253d);color:#f4ead4;
  border-color:transparent;font-weight:700}
.wbtab.on .cnt{background:#f0d9a6;color:#3a2a10}
.wbgrp{background:#e7ddc8;border-color:#c4b795;color:#28364e;font-weight:600}
.wbgrp.on{background:linear-gradient(#27364f,#18253d);color:#f4ead4;border-color:transparent}
.wbgrp.on .cnt{background:#f0d9a6;color:#3a2a10}

/* ═══ 信封緞帶與信中回覆 ═══ */
.ltseal .ribbon{position:absolute;left:50%;top:0;bottom:0;width:54px;margin-left:-27px;
  background:linear-gradient(90deg,rgba(150,120,62,.55),rgba(214,182,114,.92),rgba(150,120,62,.55));
  box-shadow:0 0 12px rgba(0,0,0,.22);transition:opacity .34s ease-in}
.ltr.opening .ltseal .ribbon{opacity:0}
.ltrep{margin-top:10px;border-top:1px dashed #ddd0b2;padding-top:10px}
.ltrep .repdone{display:flex;align-items:center;gap:6px;font-size:12.5px;
  font-weight:700;color:#2f6a4f;margin-bottom:7px}
.ltrep .repdone svg{width:15px;height:15px}
.repbox{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.repbox textarea{flex:1;min-width:190px;font-size:13.5px}

/* ═══ 本場題目與回饋場次表 ═══ */
.fbql{margin:4px 0 8px;padding-left:20px;font-size:13.5px;color:#33404f;line-height:1.75}
.fbql .small{color:#6b5f45}
.fbsess{border:1px solid #ded5c3;border-radius:13px;background:#faf7f0;
  padding:10px 12px;margin-bottom:10px}
.fbsh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:14px;font-weight:700;color:#25334c;margin-bottom:7px}
.fbsh svg{width:16px;height:16px;color:#9a7c42}
.fbsh .small{margin-left:auto;font-weight:500;color:#5f5643}

/* ═══ 課程總覽的三段 ═══ */
.sgrp{margin:16px 0 10px;border:1px solid #ddd3c1;border-radius:13px;background:#f6f1e6;overflow:hidden}
.sgrp>summary{cursor:pointer;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:11px 14px;background:linear-gradient(#27364f,#1b2942);color:#f4ead4}
.sgrp>summary::-webkit-details-marker{display:none}
.sgh{display:flex;align-items:center;gap:7px;font-size:15px;font-weight:700}
.sgh svg{width:17px;height:17px;color:#e2c68a}
.sgn{background:rgba(255,255,255,.16);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700}
.sgr{margin-left:auto;font-size:12px;color:rgba(244,234,212,.8)}
.sgb{padding:10px 10px 2px}
.sgb .card{margin-bottom:10px}

/* ═══ 題目的家 ═══ */
.qsess{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}

/* ═══ 表揚榜批次管理 ═══ */
.pbbatch{margin-top:4px}
.pbbh{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;
  font-size:14px;color:#25334c}
.pbbh .small{color:#5f5643}
.pbbtool{display:flex;gap:7px;flex-wrap:wrap;padding:9px 10px;border-radius:11px;
  background:#f1ece2;border:1px solid #ddd3c1;margin-bottom:10px}
.pbrows{display:flex;flex-direction:column;gap:6px}
.pbrow{display:flex;align-items:center;gap:9px;flex-wrap:wrap;cursor:pointer;
  padding:9px 11px;border:1px solid #ded5c3;border-radius:11px;background:#faf7f0}
.pbrow.on{border-color:#9a7c42;background:#f5edde}
.pbrow .pbt{font-weight:700;color:#25334c;font-size:13.5px}
.pbrow .small{color:#5f5643}
.pbrow .badge{margin-left:auto}
.pbrow .badge+.badge{margin-left:6px}

/* ═══ 新版橫幅 ═══ */
.verbar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:9000;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;max-width:94vw;
  padding:11px 15px;border-radius:14px;border:1px solid #c9b48a;
  background:linear-gradient(#27364f,#18253d);color:#f4ead4;
  box-shadow:0 10px 26px rgba(20,30,50,.34)}
.verbar .vt{font-weight:700;font-size:14px}
.verbar .vs{font-size:12px;color:rgba(244,234,212,.82)}
.verbar .btn{margin-left:auto}

/* ═══ 身分定義表 ═══ */
.rtb .rsel{min-width:132px;height:34px;padding:4px 8px;font-size:13px}
.rtb td{vertical-align:middle}

/* ═══ 官方檢視那一封 ═══ */
.fbadm{border:1px solid #ded5c3;border-top:0;border-radius:0 0 12px 12px;
  background:#faf7f0;padding:10px 12px;margin:-6px 0 10px}
.fbadmn{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;
  color:#6b5f45;margin:6px 0}
.fbadmn svg{width:14px;height:14px}
.fbadm .ltr{border:1px solid #e0d7c6;background:#fbf7ee}
.fbitem.on{border-color:#9a7c42;background:#f5efe4}
.fbitem .fbw{display:flex;align-items:center;gap:5px;flex-wrap:wrap}

/* ═══ 麵包屑 ═══ */
.pgcrumb{display:flex;align-items:center;gap:7px;flex-wrap:wrap;
  margin:0 0 10px;padding:7px 12px;border-radius:10px;
  background:#f1ece2;border:1px solid #ddd3c1;font-size:12.5px;color:#4a4335}
.pgcrumb svg{width:15px;height:15px;color:#8a6f3c}
.pgcrumb b{color:#25334c;font-weight:700}
.pgcrumb .c{color:#6b5f45}
.msgsess{margin-bottom:10px}

/* ═══ 場次卡：動作在上，狀態在下 ═══ */
.sesscard{position:relative;border-left:4px solid #d6cab1}
.sesscard.ph-live{border-left-color:#2e637d}
.sesscard.ph-today{border-left-color:#b28e41}
.sesscard.ph-done{border-left-color:#57657b}
.sesscard.ph-nostart{border-left-color:#9e2b1c}
.scact{display:flex;gap:8px;flex-wrap:wrap;align-items:center;
  padding-bottom:9px;margin-bottom:9px;border-bottom:1px solid #e6ddcc}
.scfoot{display:flex;gap:7px;flex-wrap:wrap;align-items:center;
  margin-top:10px;padding-top:9px;border-top:1px solid #e6ddcc}
.badge.live{background:#2e637d;color:#fff}

/* ═══ 課前與當天的落差 ═══ */
.gapt{display:inline-flex;align-items:center;margin-left:6px;
  border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:700}
.gapt.extra{background:#e4efe6;color:#245c3e;border:1px solid #a9ccb5}
.gapt.miss{background:#f6e6de;color:#8a4a23;border:1px solid #d9b49a}

/* ═══ 當場發放那一列 ═══ */
.gvtb .gvn{min-width:170px;height:34px;padding:4px 9px;font-size:13px}
.gvtb .gva{width:110px;height:34px;padding:4px 9px;font-size:13px;text-align:right}
.gvchip{display:inline-flex;align-items:center;gap:5px;background:#f3ece0;
  border:1px solid #ded0b4;border-radius:999px;padding:2px 6px 2px 10px;
  font-size:12px;color:#4a4335;margin:2px 4px 2px 0}
.gvchip .x{border:0;background:transparent;color:#8a4a23;cursor:pointer;
  font-size:12px;padding:0 3px;line-height:1}

/* ═══ 處理階段的顏色 ═══ */
.wbgrp.g-open.on{background:linear-gradient(#2d446d,#1d2f4e)}
.wbgrp.g-live.on{background:linear-gradient(#9a7c42,#775e2c);color:#fff8e8}
.wbgrp.g-check.on{background:linear-gradient(#2f6a4f,#204b38);color:#eef7f1}
.wbnav.g-open{border-color:#b9c6da;background:#f7f9fc}
.wbnav.g-live{border-color:#ddcba4;background:#fdfaf2}
.wbnav.g-check{border-color:#b6d2c2;background:#f6fbf8}
.wbnav.g-open .wbtab.on{background:linear-gradient(#2d446d,#1d2f4e)}
.wbnav.g-live .wbtab.on{background:linear-gradient(#9a7c42,#775e2c);color:#fff8e8}
.wbnav.g-check .wbtab.on{background:linear-gradient(#2f6a4f,#204b38);color:#eef7f1}

/* ═══ 信封：真的是一封信 ═══ */
/* 信封背面有四片封口，交會在正中間，蠟印就壓在那個交會點上。
   上下兩片各自有陰影，所以摺線是壓出來的，不是畫一條線上去。 */
.ltr{max-width:470px;margin-left:auto;margin-right:auto;
  background:
    repeating-linear-gradient(101deg,rgba(150,128,86,.035) 0 1px,transparent 1px 5px),
    linear-gradient(#fcf9f2,#f4eee0)}
.ltr .ltseal{padding:0;text-align:center;position:relative;overflow:hidden;
  aspect-ratio:1.62/1;min-height:206px;
  background:
    repeating-linear-gradient(97deg,rgba(255,255,255,.02) 0 1px,transparent 1px 4px),
    repeating-linear-gradient(6deg,rgba(0,0,0,.035) 0 1px,transparent 1px 5px),
    radial-gradient(130% 96% at 50% -12%,rgba(255,255,255,.07),transparent 62%),
    linear-gradient(#1d2c47,#131e33)}
.ltseal::after{content:none}

/* 左右兩片：把中間讓出來，靠明暗分出摺面 */
.ltseal .sflap{position:absolute;top:0;bottom:0;width:50%;z-index:1;pointer-events:none}
.ltseal .sflap.l{left:0;clip-path:polygon(0 0,50% 50%,0 100%);
  background:linear-gradient(90deg,rgba(255,255,255,.05),rgba(255,255,255,.012))}
.ltseal .sflap.r{right:0;clip-path:polygon(100% 0,50% 50%,100% 100%);
  background:linear-gradient(270deg,rgba(255,255,255,.05),rgba(255,255,255,.012))}

/* 下面那一片壓在最上層，所以看得到它的邊 */
.ltseal .bflap{position:absolute;left:0;right:0;bottom:0;height:50%;z-index:2;pointer-events:none;
  clip-path:polygon(0 100%,100% 100%,50% 0);
  background:linear-gradient(#1a2840,#16233a);
  filter:drop-shadow(0 -3px 4px rgba(0,0,0,.34))}

/* 上面那一片：掀開的就是它 */
.ltseal .flap{position:absolute;left:0;right:0;top:0;height:50%;z-index:3;
  clip-path:polygon(0 0,100% 0,50% 100%);
  background:linear-gradient(#2a3f62,#1e2f4c);
  filter:drop-shadow(0 4px 5px rgba(0,0,0,.42));
  transform-origin:top center;
  transition:transform .62s cubic-bezier(.5,-.28,.28,1.3)}

/* 蠟印壓在四片交會的那一點 */
.ltseal .wax{position:absolute;left:50%;top:50%;z-index:4;
  transform:translate(-50%,-50%) rotate(-5deg);
  border:0;padding:0;color:inherit;
  width:82px;height:82px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 33% 27%,#f2daa2,#c9a659 56%,#8d6c2a);
  box-shadow:0 0 0 3px rgba(255,246,224,.38) inset,0 0 0 1px rgba(88,64,20,.45),
    0 7px 16px rgba(0,0,0,.45),0 1px 0 rgba(255,246,224,.5) inset;
  transition:transform .4s ease-in,opacity .4s ease-in}
.ltseal .wax img{width:58px;height:58px;display:block;
  filter:drop-shadow(0 1px 0 rgba(255,246,224,.38))}
.ltseal:hover .wax{transform:translate(-50%,-50%) rotate(-5deg) scale(1.05)}
.ltseal:focus-visible{outline:2px solid #c4a66a;outline-offset:-3px}

/* 字寫在下面那一片上，不壓到蠟印 */
.ltseal .stx{position:absolute;left:0;right:0;bottom:46px;z-index:5;
  display:block;font-size:16px;padding:0 20px;letter-spacing:.02em}
.ltseal .stx b{font-size:18px;color:#f6efdd}
.ltseal .shint{position:absolute;left:0;right:0;bottom:24px;z-index:5;
  display:block;margin:0;font-size:11.5px;color:rgba(222,206,172,.78)}

/* 拆開的那一下：信封浮在上面淡出，信在底下同時撐開 */
.ltr{position:relative}
.ltr.opening{min-height:206px}
.ltr.opening .ltseal{position:absolute;left:0;right:0;top:0;z-index:5;
  opacity:0;transform:translateY(10px);
  transition:opacity .42s ease-out .22s,transform .42s ease-out .22s}
.ltr.opening .ltseal .flap{transform:rotateX(-168deg)}
.ltr.opening .ltseal .wax{transform:translate(-50%,-50%) rotate(26deg) scale(.26);opacity:0}
.ltr.opening .ltbody{max-height:3000px;opacity:1;
  transition:max-height .54s cubic-bezier(.22,.9,.3,1) .16s,opacity .38s ease-out .3s}
.ltr .ltbody{padding:17px 18px 14px}
@media(prefers-reduced-motion:reduce){
  .ltseal .flap,.ltseal .wax,.ltseal{transition:none}
}
@media(max-width:560px){
  .ltr{max-width:none}
  .ltseal .wax{width:70px;height:70px}
  .ltseal .wax img{width:50px;height:50px}
  .ltseal .stx{font-size:15px;bottom:40px}
  .ltseal .shint{bottom:20px}
  .ltr .ltbody{padding:13px 12px 11px}
}

/* ═══ 落差標記可以點 ═══ */
button.gapt{border-style:solid;cursor:pointer;font-family:inherit}
button.gapt:hover{filter:brightness(.96)}

/* ═══ 換版橫幅：換不過去的時候 ═══ */
.verbar.warn{background:linear-gradient(#f7ecd5,#f1e2c4);color:#5c4a22;border-color:#d9c08a}
.verbar.warn .vs{color:#6b5a31}

/* ═══ 行事曆：先講需要顯示，顏色更明顯 ═══ */
.callegend{align-items:center;gap:7px;margin:8px 0 12px;padding:9px 11px;
  border:1px solid #e0d6bf;border-radius:12px;background:#fbf7ee}
.callegend .cll{font-size:12.5px;font-weight:700;color:#6b5a38;margin-right:2px}
.callegend .cll::after{content:"："}
.calchip{padding:4px 11px;border-width:1.5px;font-size:12.5px;gap:5px}
.calchip .cn{margin-left:4px;padding:0 6px;border-radius:999px;font-size:11px;
  background:rgba(255,255,255,.66);color:inherit}
.calchip.off{background:#efeade;border-color:#d7ccb4;color:#6f6448;opacity:1}
.calchip.off .cn{background:rgba(255,255,255,.5)}
.calchip.all{background:#fff;border-color:#c9b48a;color:#6b5a38}
.cat-sess{background:#f7e3b6;border-color:#a9812f;color:#5c3f08}
.cat-task{background:#dcece4;border-color:#2f5d53;color:#1c473c}
.cat-pub{background:#dbe7f7;border-color:#41689a;color:#1d3552}
.cat-exp{background:#eedcee;border-color:#7d5183;color:#4c2952}
.cat-grad{background:#f9dcd7;border-color:#a55f56;color:#642e26}
.calhead{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.calhead .calnav,.calhead .calsw{display:flex;align-items:center;gap:8px}
.cev{border-left-width:4px}
.cev .ic{width:12px;height:12px;vertical-align:-1px}

/* 每一種任務自己的顏色 */
.t-sign{border-left-color:#8a6a1e}
.t-groom{border-left-color:#7a5aa0}
.t-talk{border-left-color:#2f6d8c}
.t-upload{border-left-color:#2f5d53}
.t-story{border-left-color:#b4772a}
.t-fb{border-left-color:#a1524f}
.t-refl{border-left-color:#4a6b9c}
.t-verify{border-left-color:#7a6320}
.calchip.t-sign,.calchip.t-groom,.calchip.t-talk,.calchip.t-upload,
.calchip.t-story,.calchip.t-fb,.calchip.t-refl,.calchip.t-verify{border-left-width:4px}

/* ═══ 表揚榜：偵測那一區 ═══ */
.pbautos{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:10px;margin:8px 0 4px}
.pbauto{border:1px solid #ded3ba;border-radius:13px;padding:11px 12px;background:#fdfaf3}
.pbauto.on{border-color:#b99a56;background:#fbf4e4}
.pbauto.none{opacity:.62}
.pbauto .pah{display:flex;align-items:center;gap:6px;font-size:14.5px;color:#4a3b22}
.pbauto .pah .ic{width:17px;height:17px}
.pbauto .pan{margin-left:auto;font-size:12px;font-weight:700;color:#6b5a38;
  background:#f0e7d2;border-radius:999px;padding:1px 9px}
.pbauto .pad{font-size:12px;color:#6b5d3f;margin-top:3px}
.pbauto .paf{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.pbauto .pbf{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:#5b4c2e;
  background:#fff;border:1px solid #e6dcc6;border-radius:999px;padding:1px 8px 1px 2px}
.pbauto .pbf.more{padding:1px 8px;color:#6b5d3f}
.pbauto .paa{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:9px}
.pbauto .pbon{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:700;color:#2f6a4f}
.pbauto .pbon .ic{width:15px;height:15px}
.seg.pbmode{margin-bottom:10px}

/* ═══ 投票 ═══ */
.voteov{position:fixed;inset:0;z-index:12000;display:flex;align-items:center;justify-content:center;
  padding:18px;background:rgba(13,20,34,.72);backdrop-filter:blur(3px);overflow:auto}
.voteov .voteovin{width:100%;max-width:540px}
.voteov.pop .votecard{animation:vpop .5s cubic-bezier(.2,1.1,.3,1) both}
@keyframes vpop{from{opacity:0;transform:scale(.88) translateY(14px)}to{opacity:1;transform:none}}
.votecard{border-radius:20px;padding:22px 20px 20px;text-align:center;color:#f4ead4;
  border:1px solid #c9a961;
  background:
    radial-gradient(120% 80% at 50% -10%,rgba(226,198,138,.22),transparent 62%),
    linear-gradient(#1d2c47,#131e33);
  box-shadow:0 22px 50px rgba(8,14,26,.5),0 0 0 1px rgba(255,246,224,.08) inset}
.votecard .vhd{display:flex;align-items:center;justify-content:center;gap:8px;
  font-size:22px;font-weight:800;letter-spacing:.04em;color:#f6e6bd}
.votecard .vhd .ic{width:24px;height:24px}
.votecard .vmeta{margin-top:4px;font-size:12.5px;color:rgba(226,212,182,.8)}
.votecard .vth{margin:12px auto 0;max-width:420px;font-size:16.5px;line-height:1.5;color:#fff8e8;
  padding:9px 14px;border-radius:12px;border:1px solid rgba(201,169,97,.5);
  background:rgba(255,246,224,.07)}
.votecard .vclock{display:inline-flex;align-items:center;gap:6px;margin-top:14px;
  padding:5px 13px;border-radius:999px;font-size:13px;
  background:rgba(255,246,224,.1);border:1px solid rgba(201,169,97,.45)}
.votecard .vclock b{font-size:19px;font-variant-numeric:tabular-nums;color:#f6e6bd}
.votecard .vclock span{color:rgba(226,212,182,.75);font-size:11.5px}
.votecard .vclock.hot{background:rgba(190,70,54,.24);border-color:#c06a58}
.votecard .vclock.hot b{color:#ffd9cd}
.vcands{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:16px 0 4px}
.vcand{position:relative;width:96px;padding:10px 6px 9px;border-radius:14px;cursor:pointer;
  border:1px solid rgba(201,169,97,.4);background:rgba(255,246,224,.06);color:#f2e7cf;
  font:inherit;display:flex;flex-direction:column;align-items:center;gap:6px;
  transition:transform .16s,border-color .16s,background .16s}
.vcand:hover{transform:translateY(-2px);border-color:#d8b871;background:rgba(255,246,224,.12)}
.vcand .vn{font-size:13.5px;font-weight:700}
.vcand .vck{position:absolute;top:6px;right:6px;width:20px;height:20px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;opacity:0;
  background:#c9a961;color:#1b2942}
.vcand .vck .ic{width:13px;height:13px}
.vcand.on{border-color:#e2c68a;background:rgba(226,198,138,.2);
  box-shadow:0 0 0 2px rgba(226,198,138,.35)}
.vcand.on .vck{opacity:1}
.vcand[disabled]{cursor:default;opacity:.85}
.vwhybox{margin-top:12px}
.vwhybox .input{background:rgba(255,253,246,.94)}
.votecard .vsend{margin-top:12px}
.votecard .vhint{margin-top:8px;font-size:11.5px;color:rgba(226,212,182,.7)}
.votecard .vdone{margin-top:16px;font-size:15px;color:#f6e6bd}
.votecard .vdone .ic{width:18px;height:18px;vertical-align:-3px}
.votecard .vwhy{margin-top:6px;font-size:13px;color:rgba(226,212,182,.85)}
.voteov .vlock{margin-top:12px;text-align:center;font-size:12.5px;color:rgba(230,216,186,.85)}
.voteov .vlock .ic{width:14px;height:14px;vertical-align:-2px}
.voteov .vclose{margin-top:12px}
.votepv{border:1px solid #ded3ba;border-radius:14px;padding:10px;background:#efeade;max-height:340px;overflow:auto}
.votepvin{transform:scale(.86);transform-origin:top center}

/* 發放那一段的投票列 */
.votebar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:10px 0;
  padding:11px 13px;border-radius:13px;border:1px solid #d9c79a;background:#fbf4e4}
.votebar.on{border-color:#a9812f;background:#f7ecd5}
.votebar .vbi{display:flex;align-items:center;gap:8px;flex:1;min-width:200px}
.votebar .vbi .ic{width:20px;height:20px}
.votebar .btn.big{font-size:15px;padding:10px 18px}
.votebar .vrank{display:flex;flex-wrap:wrap;gap:6px;width:100%}
.votebar .vrk{display:inline-flex;align-items:center;gap:4px;font-size:12px;
  padding:2px 9px 2px 2px;border-radius:999px;background:#fff;border:1px solid #e3d8bf}
.votebar .vrk b{margin-left:2px;color:#7a5c14}

/* ═══ 驗收登錄 ═══ */
.vhead{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px;
  padding:11px 13px;border-radius:13px;border:1px solid #ded3ba;background:#fbf7ee}
.vhead .ic{width:21px;height:21px;flex:none}
.awrow{border:1px solid #ded3ba;border-radius:13px;padding:11px 13px;margin-bottom:9px;background:#fdfaf3}
.awrow.on{border-color:#b99a56;background:#fbf4e4}
.awrow .awh{display:flex;align-items:center;gap:7px;font-size:15px;color:#4a3b22}
.awrow .awh .ic{width:18px;height:18px}
.awrow .awref{margin-left:auto;font-size:12px;color:#6b5d3f}
.awrow .awpick{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:9px}
.awrow .awpick .input{max-width:190px}
.awrow .awpick .awamt{max-width:120px}
.awrow .awwin{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:9px}
.awlist{display:flex;flex-wrap:wrap;gap:6px}
.awchip{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;padding:3px 10px;
  border-radius:999px;background:#f6efe0;border:1px solid #ddd0b2;color:#5b4c2e}
.awchip .ic{width:14px;height:14px}
.awchip b{color:#7a5c14}

/* ═══ 儀容互評分類 ═══ */
.gmbks{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:10px;margin:8px 0 4px}
.gmbk{border:1px solid #ded3ba;border-radius:13px;padding:10px 12px;background:#fdfaf3}
.gmbk.ok{border-color:#b6d2c2;background:#f6fbf8}
.gmbk.no{border-color:#e0bdb6;background:#fdf5f3}
.gmbk.wait{border-color:#dfd2ae;background:#fbf7ee}
.gmbk .gmbh{display:flex;align-items:center;font-size:13.5px;font-weight:700;color:#4a3b22}
.gmbk .gmn{margin-left:auto;font-size:12px;background:rgba(255,255,255,.75);
  border-radius:999px;padding:1px 9px}
.gmbk .gmbl{margin-top:7px;display:flex;flex-direction:column;gap:6px}
.gmbk .gmbi{font-size:13px;color:#4a3b22}
.gmbk .gmsay{margin-top:3px;display:flex;flex-direction:column;gap:2px;
  font-size:12px;color:#6b5a38}

/* ═══ 簽到總覽與身分說明 ═══ */
.lvstat.big div{min-width:92px}
.lvstat.big b{font-size:19px}
.lvstat.big .warn b{color:#9e2b1c}
.gvrw{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-top:5px}
.rwhy{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;padding:1px 8px;
  border-radius:999px;background:#f1ecdd;border:1px solid #ddd0b2;color:#6b5a38}
.rwhy .ic{width:12px;height:12px}
.rc.award{background:#f6e6c2;border-color:#a9812f;color:#5c3f08}
.rc.rate{background:#e3efe9;border-color:#2f5d53;color:#1c473c}
.auditcard .th{font-size:15.5px}

/* ═══ 戰友回饋兩端的提醒 ═══ */
.fbcalls{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.fbcall{display:flex;gap:12px;align-items:center;padding:13px 15px;border-radius:16px;
  border:1px solid #c9a961;color:#f2e7cf;
  background:
    repeating-linear-gradient(97deg,rgba(255,255,255,.02) 0 1px,transparent 1px 4px),
    radial-gradient(120% 90% at 12% -20%,rgba(226,198,138,.2),transparent 60%),
    linear-gradient(#1d2c47,#131e33);
  box-shadow:0 8px 20px rgba(20,30,50,.22)}
.fbcall .fcseal{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;flex:none;
  background:radial-gradient(circle at 34% 28%,#f2daa2,#c9a659 56%,#8d6c2a);
  box-shadow:0 0 0 2px rgba(255,246,224,.35) inset,0 3px 8px rgba(0,0,0,.35)}
.fbcall .fcseal img{width:32px;height:32px;display:block}
.fbcall .fcb{flex:1;min-width:0}
.fbcall .fct{font-size:15.5px;font-weight:800;color:#f6e6bd;letter-spacing:.03em}
.fbcall .fcl{font-size:13.5px;margin-top:2px}
.fbcall .fcl b{color:#f6e6bd}
.fbcall .fcs{font-size:11.5px;color:rgba(226,212,182,.78);margin-top:3px}
.fbcall .fca{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
.fbcall .fcm{font-size:13px;font-weight:800;color:#f2d79a}
@media(max-width:560px){
  .fbcall{flex-wrap:wrap}
  .fbcall .fca{width:100%;flex-direction:row;justify-content:space-between;align-items:center}
}

/* ═══ 場次裡面的開始上課 ═══ */
.classbar{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;
  margin:10px 0 12px;padding:13px 15px;border-radius:15px;
  border:1px solid #ded3ba;background:#fbf7ee}
.classbar.wait{border-color:#c9a961;background:linear-gradient(#fdf6e6,#f8eed8)}
.classbar.live{border-color:#b45a48;background:linear-gradient(#fdf1ee,#f8e5e0)}
.classbar .cbs{font-size:13px;font-weight:700;color:#6b5a38}
.classbar.live .cbs{color:#9e2b1c}
.classbar .cbdot{color:#c0392b;animation:cbb 1.2s infinite}
@keyframes cbb{0%,100%{opacity:1}50%{opacity:.25}}
.classbar .lvel{font-variant-numeric:tabular-nums}
.classbar .cbt{font-size:17px;font-weight:800;color:#3b2f1f;margin-top:2px}
.classbar .cbmin{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;
  padding-top:11px;border-top:1px dashed #ded3ba}
.classbar .cbmin .field{margin:0;min-width:160px}
.classbar .cbmin .input{max-width:130px}
.classbar .cbsum{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;
  font-size:12.5px;color:#6b5a38;margin-left:auto}
.classbar .cbsum b{font-size:17px;color:#3b2f1f;margin-right:8px;font-variant-numeric:tabular-nums}
.classbar .cbsum b.neg{color:#9e2b1c}
@media(max-width:560px){
  .classbar{grid-template-columns:1fr}
  .classbar .cbsum{margin-left:0}
}

/* ═══ 課程環節：課前設定 ═══ */
.segs{display:flex;flex-direction:column;gap:10px;margin:8px 0}
.segc{border:1px solid #ded3ba;border-radius:14px;background:#fdfaf3;overflow:hidden}
.segc .segh{display:flex;flex-wrap:wrap;gap:7px;align-items:center;padding:10px 12px;
  background:#f4eddd;border-bottom:1px solid #e6dcc6}
.segc .segn{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:13px;font-weight:800;background:#2d446d;color:#f4ead4;flex:none}
.segc .segt{flex:1;min-width:150px;max-width:320px;font-weight:700}
.segc .segest{font-size:12px;color:#6b5a38}
.segc .segb{padding:11px 12px}
.segfns{display:flex;flex-wrap:wrap;gap:6px}
.segfn{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:12.5px;
  padding:5px 11px;border-radius:999px;cursor:pointer;
  border:1.5px solid #ddd0b2;background:#fff;color:#6b5a38}
.segfn .ic{width:14px;height:14px}
.segfn.on{border-color:#2d446d;background:#2d446d;color:#f4ead4}
.segfn:hover{filter:brightness(.97)}
.segpre{display:flex;flex-wrap:wrap;gap:6px}
.segp{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;padding:2px 6px 2px 2px;
  border-radius:999px;background:#fff;border:1px solid #e3d8bf;color:#5b4c2e}
.segp b{width:18px;height:18px;border-radius:50%;background:#e9dfc6;color:#5b4c2e;
  display:flex;align-items:center;justify-content:center;font-size:11px}
.segp .x{border:0;background:none;cursor:pointer;color:#6f6448;font-size:12px;padding:0 2px}
.segsum{margin-top:8px;font-size:13px;color:#5b4c2e}
.segsum .ic{width:15px;height:15px;vertical-align:-2px}
.segover{color:#9e2b1c;font-weight:700}
.segadd{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}

/* ═══ 助教儀表板 ═══ */
.sglist{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.sgl{display:flex;align-items:center;gap:8px;padding:8px 11px;border-radius:11px;
  border:1px solid #e0d6bf;background:#fbf7ee}
.sgl.on{border-color:#a9812f;background:#f7ecd5;box-shadow:0 0 0 2px rgba(169,129,47,.18)}
.sgl.done{opacity:.66}
.sgl .sgn{width:22px;height:22px;border-radius:50%;flex:none;display:flex;
  align-items:center;justify-content:center;font-size:12px;font-weight:800;
  background:#e9dfc6;color:#5b4c2e}
.sgl.on .sgn{background:#2d446d;color:#f4ead4}
.sgl .sgi{flex:1;min-width:0;display:flex;flex-direction:column}
.sgl .sgi .small{font-size:11.5px}
.sgl .sga{display:flex;gap:5px;align-items:center;flex:none}
.sgtools{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.sgnow{border:1px solid #c9a961;border-radius:15px;padding:13px 14px;background:#fdf8ec}
.sgnh{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.sgnh b{font-size:19px;color:#3b2f1f}
.sgstep{font-size:12px;font-weight:700;color:#6b5a38;background:#f0e7d2;
  border-radius:999px;padding:2px 10px}
.sgnh .sgmore{margin-left:auto}
.sgacts{display:flex;flex-wrap:wrap;gap:9px;margin:10px 0}
.sgclock{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:13px;
  border:1px solid #ded3ba;background:#fff;margin-bottom:10px}
.sgclock .sgcw{display:flex;align-items:center;gap:11px}
.sgclock .sgcn{font-size:14px;color:#6b5a38}
.sgclock .sgcv{font-size:30px;font-weight:800;color:#3b2f1f;font-variant-numeric:tabular-nums;
  line-height:1.1}
.sgclock.hot{border-color:#c9a961;background:#fbf4e4}
.sgclock.hot .sgcv{color:#8a6a1e}
.sgclock.over{border-color:#c06a58;background:#fdf1ee}
.sgclock.over .sgcv{color:#9e2b1c}
.sgfs{display:flex;flex-wrap:wrap;gap:7px}
.sgf{display:inline-flex;align-items:center;gap:6px;padding:5px 9px 5px 5px;border-radius:999px;
  border:1px solid #e0d6bf;background:#fff;font-size:13px;color:#4a3b22}
.sgf.cur{border-color:#a9812f;background:#f7ecd5;box-shadow:0 0 0 2px rgba(169,129,47,.2)}
.sgf.done{opacity:.72;background:#f3efe4}
.sgf.hand{border-color:#2f6d8c;background:#eef5f8}
.sgf .sgt{font-size:11.5px;color:#6b5a38;font-variant-numeric:tabular-nums}
.sgf .sgn{width:18px;height:18px;border-radius:50%;background:#2f6d8c;color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.sghand{margin-top:12px}
.sgdraw{margin-top:10px;padding:10px 12px;border-radius:13px;border:1px solid #c9a961;background:#fbf4e4}
.sgdw{display:flex;flex-wrap:wrap;gap:9px;align-items:center}
.sgdw b{font-size:17px;color:#3b2f1f}

/* ═══ 學姐端舞台 ═══ */
body.hasstbar{padding-top:46px}
.stbarwrap{position:fixed;left:0;right:0;top:0;z-index:11000}
.stbarwrap.pv{position:static}
.stbar{display:flex;align-items:center;gap:10px;padding:7px 14px;
  font-size:13px;color:#f2e7cf;border-bottom:1px solid rgba(201,169,97,.5);
  background:linear-gradient(90deg,#16233c,#1d2c47 40%,#16233c);
  box-shadow:0 3px 12px rgba(10,18,32,.28)}
.stbar.mine{background:linear-gradient(90deg,#3d2b12,#6b4a18 40%,#3d2b12)}
.stbar .stb1{display:flex;align-items:center;gap:5px;font-weight:700;color:#f6e6bd}
.stbar .stb1 .ic{width:15px;height:15px}
.stbar .stb2{color:rgba(230,216,186,.9)}
.stbar .stb2 b{color:#f6e6bd}
.stbar .stb3{margin-left:auto;font-weight:700}
.stbar .stbt{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;color:#f6e6bd;
  padding:1px 10px;border-radius:999px;background:rgba(255,246,224,.12)}
.stbar .stbt.hot{background:rgba(226,198,138,.3);animation:stpulse 1s infinite}
.stbar .stbt.over{background:rgba(190,70,54,.4);color:#ffd9cd}
@keyframes stpulse{0%,100%{opacity:1}50%{opacity:.55}}
@media(max-width:560px){
  .stbar{flex-wrap:wrap;gap:6px;font-size:12px;padding:6px 10px}
  .stbar .stb3{margin-left:0}
  body.hasstbar{padding-top:64px}
}

.stov{position:fixed;inset:0;z-index:12000;display:flex;align-items:center;justify-content:center;
  padding:18px;background:rgba(11,17,29,.78);backdrop-filter:blur(4px);overflow:auto}
.stov .stovin{width:100%;max-width:520px;animation:stpop .55s cubic-bezier(.2,1.12,.3,1) both}
@keyframes stpop{from{opacity:0;transform:scale(.9) translateY(16px)}to{opacity:1;transform:none}}
.stbig{border-radius:22px;padding:24px 22px;text-align:center;color:#f4ead4;
  border:1px solid #c9a961;
  background:
    radial-gradient(130% 80% at 50% -14%,rgba(226,198,138,.26),transparent 62%),
    linear-gradient(#1f2f4c,#131e33);
  box-shadow:0 24px 54px rgba(8,14,26,.55),0 0 0 1px rgba(255,246,224,.09) inset}
.stbig.pv{margin-bottom:12px;transform:scale(.9);transform-origin:top center}
.stbig .stmeta{font-size:12px;color:rgba(226,212,182,.8)}
.stbig .sttitle{margin-top:6px;font-size:28px;font-weight:800;letter-spacing:.06em;color:#f6e6bd;
  text-shadow:0 2px 14px rgba(226,198,138,.28)}
.stbig .stwho{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:14px}
.stbig .stwho b{font-size:20px;color:#fff8e8}
.stbig .stbody{margin-top:10px;font-size:14px;line-height:1.6;color:rgba(238,228,204,.9)}
.stclock{margin-top:16px;display:inline-flex;flex-direction:column;align-items:center;
  padding:10px 24px;border-radius:16px;
  border:1px solid rgba(201,169,97,.5);background:rgba(255,246,224,.08)}
.stclock b{font-size:44px;font-weight:800;line-height:1;color:#f6e6bd;font-variant-numeric:tabular-nums}
.stclock span{margin-top:3px;font-size:11.5px;color:rgba(226,212,182,.75)}
.stclock.hot{border-color:#e2c68a;background:rgba(226,198,138,.16)}
.stclock.hot b{font-size:74px;color:#ffe9b5;text-shadow:0 0 26px rgba(226,198,138,.5)}
.stclock.last b{animation:stbeat .95s ease-in-out infinite;color:#ffd9a8}
.stclock.over{border-color:#c06a58;background:rgba(190,70,54,.22)}
.stclock.over b{color:#ffd9cd}
@keyframes stbeat{0%,100%{transform:scale(1)}45%{transform:scale(1.14)}}
.stov .stclose{margin-top:16px}
.stov.draw .stbig .stwho{opacity:0;transform:translateY(8px);transition:opacity .4s,transform .4s}
.stov.draw.showres .stbig .stwho{opacity:1;transform:none}
.stwrap{display:flex;justify-content:center;margin-top:14px}
.stwheel{width:300px;max-width:82vw;height:auto;filter:drop-shadow(0 12px 26px rgba(0,0,0,.45))}
.stpv{border:1px solid #ded3ba;border-radius:14px;padding:12px;background:#efeade;
  max-height:400px;overflow:auto}
.stpvin{display:flex;flex-direction:column}

/* ═══ 賽制與流程的連結線 ═══ */
.seglink{margin-top:9px;padding:7px 10px;border-radius:10px;font-size:12.5px;
  border:1px dashed #c9a961;background:#fbf4e4;color:#5b4c2e}
.seglink .ic{width:14px;height:14px;vertical-align:-2px;margin-right:3px}
.seglink.warn{border-color:#d9a08a;background:#fdf1ee;color:#7a3a2c}

/* ═══ 課後審核的分類列 ═══ */
.chkbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:9px;margin-bottom:12px}
.chkc{text-align:left;font:inherit;cursor:pointer;padding:10px 12px;border-radius:13px;
  border:1px solid #e0d6bf;background:#fbf7ee;color:#4a3b22;display:flex;flex-direction:column;gap:3px}
.chkc .chkh{display:flex;align-items:center;gap:6px;font-size:14px}
.chkc .chkh .ic{width:17px;height:17px}
.chkc .chkn{margin-left:auto;font-size:12px;font-weight:700;padding:1px 9px;border-radius:999px;
  background:#efe9db;color:#6b5a38}
.chkc .chkd{font-size:11.5px;color:#6b5d3f}
.chkc.has{border-color:#c9a961;background:#fbf4e4}
.chkc.has .chkn{background:#8a6a1e;color:#fff8e8}
.chkc.on{border-color:#2d446d;background:#eef2f8;box-shadow:0 0 0 2px rgba(45,68,109,.15)}
.chkc:hover{filter:brightness(.98)}

/* ═══ 本場流程回顧 ═══ */
.rvseg{border:1px solid #e0d6bf;border-radius:12px;padding:10px 12px;margin-bottom:8px;background:#fdfaf3}
.rvseg .rvh{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-bottom:6px}
.rvseg .rvh b{font-size:15px;color:#3b2f1f}
.rvseg .sgn{width:21px;height:21px;border-radius:50%;background:#e9dfc6;color:#5b4c2e;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex:none}
.rvw-wrap{display:flex;flex-wrap:wrap;gap:6px}
.rvw{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;padding:3px 9px 3px 3px;
  border-radius:999px;background:#fff;border:1px solid #e3d8bf;color:#4a3b22}
.rvw b{color:#5b4c2e;font-variant-numeric:tabular-nums}
.rvw i{font-style:normal;font-size:11px;color:#6f6448}
.rvw.over{border-color:#d9a08a;background:#fdf1ee}
.rvw.over b{color:#9e2b1c}

/* ═══ 表揚榜：內容管理 ═══ */
.pbwrap2{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.pbleft{flex:1 1 420px;min-width:0}
.pbright{flex:0 0 352px;max-width:352px;min-width:0}
@media(max-width:860px){.pbright{flex:1 1 100%;max-width:100%}}

.bulkbar{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 10px;padding:8px 9px;
  border:1px dashed #ddd2b8;border-radius:11px;background:#fbf7ee}

.pbrw{display:flex;align-items:flex-start;gap:10px;padding:10px 11px;margin-bottom:7px;
  border:1px solid #e3d8bf;border-radius:12px;background:#fff}
.pbrw:hover{border-color:#c9a961}
.pbck{flex:none;margin:6px 0 0}
.pbck input{width:17px;height:17px}
.pbrt{flex:1 1 220px;min-width:0;display:flex;flex-direction:column;gap:5px}
.pbrt .pbti{font-size:14.5px;font-weight:700;color:#25334c;padding:7px 9px}
.pbrt .pbwi{font-size:12.5px;color:#5f5643;padding:6px 9px}
.pbrt .input:focus{border-color:#8a6a1e;box-shadow:0 0 0 2px rgba(138,106,30,.16)}
.pbrm{flex:0 0 132px;display:flex;flex-direction:column;gap:3px;padding-top:4px}
.pbrm .mcode{display:inline-block;align-self:flex-start;font-size:11.5px;font-weight:800;
  letter-spacing:.4px;padding:2px 8px;border-radius:999px;background:#eef2f8;color:#2d446d}
.pbrm .rg{font-size:11.5px;color:#6b5d3f;font-variant-numeric:tabular-nums}
.pbrs{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:5px;padding-top:4px}
@media(max-width:620px){
  .pbrw{flex-wrap:wrap}
  .pbrm{flex:1 1 100%;flex-direction:row;flex-wrap:wrap;gap:8px;align-items:center;padding-top:0}
  .pbrs{flex:1 1 100%;flex-direction:row;justify-content:flex-start;padding-top:0}
}

.pill{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;
  padding:3px 10px;border-radius:999px;border:1px solid #e0d6bf;background:#fff;
  color:#5b4c2e;cursor:pointer;line-height:1.7}
.pill.show{border-color:#2d446d;background:#eef2f8;color:#2d446d}
.pill.hide{border-color:#d9c7a4;background:#f4efe3;color:#6f6448}
.pill.top{border-color:#c9a961;background:#fbf4e4;color:#7a5c14;cursor:default}

.pbset{border:1px solid #e3d8bf;border-radius:14px;padding:12px;background:#fdfaf3}
.pbset .pbstage{max-width:100%;margin:0 auto 10px}
.pbset .pbf{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.pbset .pbf>label{flex:0 0 74px;font-size:12.5px;font-weight:700;color:#5b4c2e}
.pbset .pbf>span{font-size:11.5px;color:#6b5d3f}
.pbset .pbf .input{flex:0 0 82px;padding:6px 8px;font-size:13px;text-align:right}
.segx{display:inline-flex;border:1px solid #e0d6bf;border-radius:999px;overflow:hidden;background:#fff}
.segx button{border:0;background:transparent;font-size:12px;font-weight:700;color:#6b5d3f;
  padding:5px 12px;cursor:pointer;line-height:1.7}
.segx button+button{border-left:1px solid #ece3cf}
.segx button.on{background:#2d446d;color:#fff8e8}
/* ═══ 即時預覽：試按模式 ═══ */
.pvtry{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:8px 0;
  padding:8px 11px;border:1px dashed #d9c7a4;border-radius:11px;background:#fbf7ee;
  font-size:12.5px;color:#5b4c2e;line-height:1.75}
.pvtry span{flex:1 1 220px;min-width:0}
.pvtry b{color:#7a5c14}
.pvtry .btn{flex:none}
.pvtry.on{border-style:solid;border-color:#2d446d;background:#eef2f8;color:#2d446d}
.pvtry.on b{color:#1f3252}
.pvframe.trying{box-shadow:0 0 0 3px rgba(45,68,109,.28);border-radius:14px}
.pvstage.live{pointer-events:auto}

body.pvtrying #app{pointer-events:none}
body.pvtrying .pvwrap.trying,
body.pvtrying #modal,
body.pvtrying .pvtryfloat,
body.pvtrying .toastwrap,
body.pvtrying .toast{pointer-events:auto}
body.pvtrying #app > *{filter:saturate(.82)}
body.pvtrying .pvwrap.trying{filter:none}
body.pvtrying{padding-bottom:64px}

.pvtryfloat{position:fixed;left:50%;transform:translateX(-50%);bottom:14px;z-index:9400;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;
  max-width:min(94vw,680px);padding:9px 14px;border-radius:999px;
  background:#2d446d;color:#fdf8ec;box-shadow:0 10px 28px rgba(20,30,50,.34)}
.pvtryfloat .t{font-weight:800;font-size:13px}
.pvtryfloat .s{font-size:12px;color:#cfd9e8}
.pvtryfloat .btn{background:#fdf8ec;color:#2d446d;border-color:#fdf8ec}
@media(max-width:520px){.pvtryfloat .s{display:none}}
/* ═══ 進度總覽：欄位公式與總計 ═══ */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:9px;margin:2px 0 14px}
.kpis>div{border:1px solid #e3d8bf;border-radius:12px;padding:9px 12px;background:#fdfaf3}
.kpis span{display:block;font-size:11.5px;color:#6b5d3f}
.kpis b{font-size:23px;color:#2d446d;font-variant-numeric:tabular-nums;line-height:1.3}
.kpis i{font-style:normal;font-size:11.5px;color:#6b5d3f;margin-left:3px}
.sttb th .thf{display:block;font-style:normal;font-weight:400;font-size:10.5px;
  color:#6b5d3f;line-height:1.5;margin-top:2px;max-width:220px;white-space:normal}

/* ═══ 簽到狀況 ═══ */
.lvstat2{margin:2px 0 14px}
.lvrings{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:10px}
.lvring{border:1px solid #e3d8bf;border-radius:14px;padding:12px 10px;background:#fdfaf3;text-align:center}
.lvring .lvr{width:86px;height:86px;margin:0 auto 7px;border-radius:50%;position:relative;
  background:conic-gradient(#2d446d var(--deg),#e9dfc6 0);
  display:flex;align-items:center;justify-content:center}
.lvring .lvr::after{content:"";position:absolute;inset:9px;border-radius:50%;background:#fdfaf3}
.lvring .lvr b{position:relative;z-index:1;font-size:22px;color:#2d446d;font-variant-numeric:tabular-nums}
.lvring .lvr i{position:relative;z-index:1;font-style:normal;font-size:12px;color:#6b5d3f}
.lvring>span{display:block;font-size:12.5px;font-weight:700;color:#4a3b22}
.lvring>em{font-style:normal;font-size:11.5px;color:#6b5d3f}
.lvroles{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.lvchip{display:inline-flex;align-items:baseline;gap:6px;border:1px solid #e0d6bf;border-radius:999px;
  padding:5px 13px;background:#fff}
.lvchip span{font-size:11.5px;color:#6b5d3f}
.lvchip b{font-size:16px;color:#25334c;font-variant-numeric:tabular-nums}
.lvchip.warn{border-color:#d9a08a;background:#fdf1ee}
.lvchip.warn b{color:#9e2b1c}

/* 時數換算 */
.cbsum i{font-style:normal;font-size:11px;color:#6b5d3f;margin-right:10px}
.fhint{font-style:normal;font-weight:400;font-size:11px;color:#6b5d3f;margin-left:6px}

/* ═══ 簽到三步：完成用學院的深藍與金，不要跳出來的綠 ═══ */
.rnode.done{background:linear-gradient(160deg,#22355a,#16233c)!important;
  border:2px solid #c9a961!important;
  box-shadow:0 0 0 3px rgba(201,169,106,.18),0 5px 14px rgba(22,35,60,.22)!important}
.rnode.done svg *{stroke:#f0dcae!important;fill:none!important}
.rnode.done .rchk{background:linear-gradient(160deg,#f0d8a6,#c9a961)!important;
  color:#1a1208!important;box-shadow:0 2px 6px rgba(22,35,60,.3)!important}
.rlabel.done{color:#21324e!important;font-weight:800}
.rline.on{border-top-color:#c9a961!important;border-top-style:solid!important;opacity:1}
/* ═══ 步驟式說明 ═══ */
.stepnote{list-style:none;margin:6px 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:6px;counter-reset:sn}
.stepnote li{counter-increment:sn;display:inline-flex;align-items:baseline;gap:6px;
  font-size:12px;color:#5b4c2e;line-height:1.7;padding:4px 11px 4px 8px;
  border:1px solid #e3d8bf;border-radius:999px;background:#fdfaf3}
.stepnote li::before{content:counter(sn);flex:none;width:17px;height:17px;border-radius:50%;
  background:#2d446d;color:#fdf8ec;font-size:11px;font-weight:800;
  display:inline-flex;align-items:center;justify-content:center;transform:translateY(2px)}
.stepnote li b{color:#25334c;white-space:nowrap}

/* ═══ 偵測卡：頭像可以點 ═══ */
.pbauto .pahint{font-size:11px;color:#6f6448;margin:2px 0 4px}
.pbauto button.pbf{border:1px solid #e3d8bf;background:#fff;cursor:pointer;opacity:.45;
  filter:grayscale(1);transition:opacity .12s,filter .12s,border-color .12s}
.pbauto button.pbf.on{opacity:1;filter:none;border-color:#2d446d;background:#eef2f8;color:#2d446d;font-weight:700}
.pbauto button.pbf:hover{border-color:#c9a961}
.pbauto .paa{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pbauto .paa .btn[disabled]{opacity:.45;cursor:not-allowed}
.pbrw.on{border-color:#2d446d;box-shadow:0 0 0 2px rgba(45,68,109,.14)}
/* ═══ 身分定義：用身分別點名單 ═══ */
.rfls{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0}
.rfl{display:inline-flex;align-items:center;gap:6px;border:1px solid #e0d6bf;background:#fff;
  border-radius:999px;padding:5px 13px;font-size:12.5px;color:#5b4c2e;cursor:pointer;line-height:1.7}
.rfl b{font-size:15px;color:#25334c;font-variant-numeric:tabular-nums}
.rfl.on{border-color:#2d446d;background:#2d446d;color:#fdf8ec}
.rfl.on b{color:#fdf8ec}
.rfl.warn{border-color:#d9a08a;background:#fdf1ee;color:#9e2b1c}
.rfl.warn.on{background:#9e2b1c;border-color:#9e2b1c;color:#fff}
.rfl.warn.on b{color:#fff}
.rnames{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.rname{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:#4a3b22;
  border:1px solid #e3d8bf;border-radius:999px;padding:3px 10px 3px 3px;background:#fff}

/* ═══ 獎項：名次與名稱同一列 ═══ */
.awline{display:flex;gap:7px;align-items:center;margin-bottom:7px;flex-wrap:wrap}
.awline .awr{flex:0 0 74px;text-align:center}
.awline .awn{flex:1 1 180px;min-width:0}
.awline .awm{flex:0 0 108px;text-align:right}

/* ═══ 投票輪次 ═══ */
.vround{border:1px solid #e3d8bf;border-radius:11px;padding:8px 11px;margin-bottom:7px;background:#fdfaf3}
.vround>b{font-size:13.5px;color:#2d446d;margin-right:8px}
.vround .rcs{margin-top:5px}
/* ═══ 表揚榜：自動偵測就是編輯的地方 ═══ */
.pbautos.col{display:flex;flex-direction:column;gap:10px}
.pbautos.col .pbauto{width:auto}
.pbauto.on{border-color:#c9a961;background:#fdfaf3}
.pbauto.cur{border-color:#2d446d;box-shadow:0 0 0 2px rgba(45,68,109,.16)}
.pbauto .pah .fit{font-size:10.5px;font-weight:800;padding:2px 9px;border-radius:999px;
  border:1px solid #e0d6bf;background:#fff;color:#6b5d3f;margin-left:6px}
.pbauto .pah .fit.yes{border-color:#2d446d;background:#eef2f8;color:#2d446d}
.pbauto .pah .fit.no{border-color:#e0d6bf;background:#f4efe3;color:#6f6448}
.pbauto .pah .fit.on{border-color:#7a5c14;background:#fbf4e4;color:#7a5c14}
.pbauto .pah .fit.man{border-color:#3d6b62;background:#eaf3f1;color:#2b5049}
.pbfld{display:flex;align-items:center;gap:8px;margin:7px 0;flex-wrap:wrap}
.pbfld>label{flex:0 0 70px;font-size:12px;font-weight:700;color:#5b4c2e}
.pbfld .input{flex:1 1 180px;min-width:0;padding:7px 9px;font-size:13px}
.pbfld.two .input{flex:0 0 130px;text-align:center}
.pbfld.two>span{color:#6b5d3f}

.fitfs{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0 10px}
.fitf{display:inline-flex;align-items:baseline;gap:6px;border:1px solid #e0d6bf;background:#fff;
  border-radius:999px;padding:5px 13px;font-size:12.5px;color:#5b4c2e;cursor:pointer;line-height:1.7}
.fitf b{font-size:15px;color:#25334c;font-variant-numeric:tabular-nums}
.fitf.on{border-color:#2d446d;background:#2d446d;color:#fdf8ec}
.fitf.on b{color:#fdf8ec}
.fitf.no.on{background:#6f6448;border-color:#6f6448}
.fitf.yes.on{background:#2d446d;border-color:#2d446d}
.fitf.on.on{background:#7a5c14;border-color:#7a5c14}
/* ═══ 彈幕管理：照表揚項目分組 ═══ */
.dmadd{display:flex;gap:8px;margin:10px 0 14px;flex-wrap:wrap}
.dmadd .input{flex:1 1 220px;min-width:0}
.dmgrps{display:flex;flex-direction:column;gap:12px}
.dmgrp{border:1px solid #e3d8bf;border-radius:13px;background:#fdfaf3;overflow:hidden}
.dmgh{display:flex;align-items:center;gap:8px;padding:9px 12px;background:#f4efe3;
  border-bottom:1px solid #e9dfc6}
.dmgh b{font-size:13.5px;color:#3b2f1f}
.dmgh .pan{margin-left:auto;font-size:11.5px;color:#6b5d3f}
.dmrow{display:flex;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid #efe7d6}
.dmrow:first-of-type{border-top:0}
.dmrow .dmt{flex:1 1 200px;min-width:0;font-size:13.5px;color:#25334c;word-break:break-word}
.dmrow .dmm{flex:0 0 auto;font-size:11px;color:#6f6448;font-variant-numeric:tabular-nums}
.dmrow .btn{flex:none}

/* ═══ 手機版：這一輪新加的區塊全部收成單欄 ═══ */
@media(max-width:760px){
  .pbwrap2{flex-direction:column;gap:12px}
  .pbleft,.pbright{flex:1 1 100%;max-width:100%;width:100%}
  .pbright{order:2}
  .pbset{padding:10px}
  .pbset .pbstage{max-width:320px}
  .pbset .pbf{gap:6px}
  .pbset .pbf>label{flex:1 1 100%}
  .pbset .pbf .input{flex:0 0 96px}
  .pbautos.col .pbauto{padding:10px}
  .pbfld{gap:6px}
  .pbfld>label{flex:1 1 100%}
  .pbfld .input{flex:1 1 100%}
  .pbfld.two .input{flex:1 1 42%}
  .pbauto .paf{gap:5px}
  .pbauto .pbf{font-size:11.5px;padding:2px 8px 2px 2px}
  .pbauto .paa{gap:5px}
  .stepnote{flex-direction:column;gap:4px}
  .stepnote li{width:100%}
  .fitfs,.rfls{gap:5px}
  .fitf,.rfl{padding:4px 10px;font-size:11.5px}
  .kpis{grid-template-columns:repeat(2,1fr)}
  .lvrings{grid-template-columns:repeat(2,1fr)}
  .awline{gap:5px}
  .awline .awr{flex:0 0 62px}
  .awline .awn{flex:1 1 100%;order:-1}
  .dmrow{flex-wrap:wrap}
  .dmrow .dmm{flex:1 1 100%;order:3}
  .pbrw{padding:9px}
  .sttb th .thf{max-width:none}
}
@media(max-width:430px){
  .pbset .pbstage{max-width:100%}
  .kpis{grid-template-columns:1fr 1fr}
  .lvrings{grid-template-columns:1fr}
  .pbauto .pah{flex-wrap:wrap}
  .pbauto .pah .pan{margin-left:0}
}
/* ═══ 身分定義：點身分別指派 ═══ */
.rfl.ghost{border-style:dashed;color:#6b5d3f}
.rassign{border:1px solid #2d446d;border-radius:13px;background:#eef2f8;padding:10px;margin-top:4px}
.rah{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:9px;font-size:13px;color:#2d446d}
.rah b{font-size:15px}
.rah .small{color:#5a6b85}
.rah .btn{margin-left:auto}
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:7px}
.rcell{display:flex;align-items:center;gap:6px;padding:5px 9px 5px 5px;border-radius:999px;
  border:1px solid #e0d6bf;background:#fff;cursor:pointer;text-align:left;min-width:0}
.rcell .rn{font-size:12.5px;color:#4a3b22;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rcell .rt{margin-left:auto;font-size:10.5px;color:#6f6448;white-space:nowrap}
.rcell.on{border-color:#2d446d;background:#2d446d}
.rcell.on .rn{color:#fdf8ec;font-weight:700}
.rcell.on .rt{color:#cfd9e8}
.rcell.away{opacity:.62}
.rcell.away .rt,.rcell .rt.away{color:#9e2b1c}
.rgrid.read .rcell{cursor:default;background:#fdfaf3}
.rassign .rgrid .rcell:hover{border-color:#2d446d}

/* 開課捷徑：沒課的樣子 */
.lvbar.off{opacity:.9}
.lvbar.off .lvbtn{opacity:.5;cursor:not-allowed}
.opsum{margin:2px 0 10px;color:#5b4c2e}

@media(max-width:760px){
  .rgrid{grid-template-columns:repeat(auto-fill,minmax(98px,1fr));gap:5px}
  .rcell{padding:4px 7px 4px 4px}
  .rcell .rn{font-size:11.5px}
  .rcell .rt{font-size:10px}
  .rah .btn{margin-left:0}
  /* 清單類在手機一律轉成卡片式，不要硬擠成表格 */
  .lgwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .lgtb{min-width:0}
  .listrow{flex-wrap:wrap;gap:6px}
  .listrow .mid{flex:1 1 100%;min-width:0}
  .signrow{flex-wrap:wrap;gap:6px}
  .signrow>div{flex:1 1 100%;min-width:0}
  .signrow .btn{flex:0 0 auto}
  .subrow .rh{flex-wrap:wrap;gap:6px}
  .subrow .rh .input{flex:1 1 90px}
  .awlist{gap:5px}
  .segadd{flex-wrap:wrap}
  .segadd .btn{flex:1 1 100%}
}
/* ═══ 課程流程範本 ═══ */
.tplbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:6px 0 12px}
.tpls{display:flex;flex-direction:column;gap:9px}
.tpl{border:1px solid #e3d8bf;border-radius:13px;padding:10px 12px;background:#fdfaf3}
.tpl .tn{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:6px}
.tpl .tn b{font-size:14px;color:#3b2f1f}
.tpl .tn .small{color:#6f6448}
.tsegs{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.tseg{display:inline-flex;align-items:center;font-size:11.5px;color:#4a3b22;
  border:1px solid #e3d8bf;border-radius:999px;padding:2px 10px;background:#fff}
.tact{display:flex;gap:6px;flex-wrap:wrap}
@media(max-width:760px){
  .tplbar .btn{flex:1 1 100%}
  .tact .btn{flex:1 1 calc(50% - 3px)}
}
/* ═══ 進度總覽：身分累積與榮譽分開 ═══ */
.stms{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:5px}
.stm{display:inline-flex;align-items:baseline;gap:5px;border-radius:9px;padding:3px 9px;
  border:1px solid #e0d6bf;background:#fff;line-height:1.6}
.stm span{font-size:10.5px;color:#6b5d3f}
.stm b{font-size:15px;color:#25334c;font-variant-numeric:tabular-nums}
.stm.sharer{border-color:#2d446d;background:#eef2f8}
.stm.sharer b{color:#2d446d}
.stm.giver{border-color:#3d6b62;background:#eaf3f1}
.stm.giver b{color:#2b5049}
.stm.extra{border-color:#8a6a1e;background:#fbf4e4}
.stm.extra b{color:#7a5c14}
.stm.none{border-color:#d9c7a4;background:#f4efe3}
.stm.none b{color:#6f6448}
.stms.honor .stm{border-color:#c9a961;background:#fbf4e4}
.stms.honor .stm b{color:#7a5c14}
.stms.honor .stm.rate{border-color:#9a7c42}
.stm.zero{opacity:.52}
.sttb td .btn.sm{margin-top:2px}
@media(max-width:760px){
  .stms{gap:4px}
  .stm{padding:2px 7px}
  .stm b{font-size:13px}
}
/* ═══ 投票議題 ═══ */
.vtcs{display:flex;flex-direction:column;gap:10px;margin:8px 0}
.vtc{border:1px solid #e3d8bf;border-radius:13px;padding:10px 12px;background:#fdfaf3}
.vtc.live{border-color:#2d446d;box-shadow:0 0 0 2px rgba(45,68,109,.14)}
.vtc.done{opacity:.85}
.vtch{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:7px}
.vtch .vtn{flex:1 1 160px;min-width:0;font-weight:700;font-size:14px;padding:6px 9px}
.vtiers{display:flex;flex-direction:column;gap:6px;margin:4px 0 8px}
.vtier{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12.5px;color:#5b4c2e}
.vtier .input{flex:0 0 84px;text-align:center;padding:5px 7px}
.vacts{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0}
.vrounds{display:flex;flex-direction:column;gap:7px;margin-top:8px}
.vaskwrap{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.vaskl{flex:1 1 280px;min-width:0}
.vaskr{flex:0 0 300px;max-width:300px;min-width:0}
.vasklb{display:block;font-size:12px;font-weight:700;color:#5b4c2e;margin-bottom:6px}
@media(max-width:760px){
  .vaskl,.vaskr{flex:1 1 100%;max-width:100%}
  .vtch .vtn{flex:1 1 100%}
  .vtier .input{flex:1 1 70px}
  .vacts .btn{flex:1 1 100%}
}
.pill.live{border-color:#cdbd93;background:#f7f0df;color:#6b5d3f}

/* 課堂即時監控：正在跳的畫面 */
.sgcast{display:flex;align-items:center;gap:8px;margin:8px 0;padding:8px 12px;border-radius:10px;
  background:#f7f0df;border:1px solid #d9c7a4;color:#6b5d3f;font-size:12.5px;font-weight:700}
.sgcast .btn{margin-left:auto}
/* 環節卡片底下的說明與預覽 */
.segpv{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.segpv .small{color:#6b5d3f}
/* 投票議題：標題預覽 */
.vtc .vtn{flex:1;font-size:14px;color:#21324e}
.vtpv{margin:6px 0 10px;padding:10px 12px;border-radius:10px;background:#fbf7ee;border:1px solid #e6dcc6}
.vtt{display:flex;flex-direction:column;gap:2px;margin-bottom:4px}
.vtt b{font-size:15px;color:#21324e}
.vtt span{font-size:12.5px;color:#6b5d3f}
/* 學姐端大畫面：倒數要夠大，正計時另一個樣子 */
.stov .stclock b{font-size:64px;line-height:1.05;letter-spacing:1px}
.stov .stclock.up b{color:#f2daa2}
.stov .stclock.up span{color:#e3d6b4}
.stov .stbig{position:relative;overflow:hidden}
.stfx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.stov .stbig>*:not(.stfx){position:relative;z-index:1}
.stov.hand .sttitle,.stov.call .sttitle{font-size:34px}
.stov.hand .stbody,.stov.call .stbody{font-size:19px;font-weight:800;color:#f2daa2}
@media (max-width:520px){
  .stov .stclock b{font-size:46px}
  .stov.hand .sttitle,.stov.call .sttitle{font-size:26px}
  .stov.hand .stbody,.stov.call .stbody{font-size:16px}
}

/* 我的進修總覽：三個環與錢包 */
.myrings{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin:10px 0 2px}
.mywal{min-width:150px}
.mywal .mywn{font-size:26px;line-height:1.2}
@media (max-width:520px){ .myrings{gap:14px} .mywal .mywn{font-size:22px} }

/* 指定作業 */
.hwcard{display:flex;align-items:center;gap:10px}
.hwcard .mc-ic{font-size:22px}
.hwmain{flex:1;min-width:0}
.hwnm{font-weight:700;color:#21324e}
.hwamt{font-weight:800;color:#6b4f1e;font-variant-numeric:tabular-nums;white-space:nowrap}
.hwsearch{display:flex;align-items:center;gap:8px;border:1px solid var(--line);
  border-radius:10px;padding:6px 10px;background:#fefdfc}
.hwsearch input{border:0;outline:0;background:transparent;flex:1}
/* 我的簽到 */
.mysgs{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.mysg{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;
  padding:4px 11px;border-radius:999px;border:1px solid #e0d6bf;background:#fbf7ee;color:#6b5d3f}
.mysg.ok{border-color:#c9a961;background:#f7f0df;color:#21324e}

/* 待辦：一列一件事 */
.todorows{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.todor{display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;
  border:1px solid #e6dcc6;background:#fdfaf3;border-radius:12px;padding:10px 14px}
.todor:hover{border-color:#c9a961;background:#f9f3e6}
.todor .tn{min-width:42px;text-align:center;font-size:22px;font-weight:800;
  color:#6f6448;font-variant-numeric:tabular-nums}
.todor.on .tn{color:#6b4f1e}
.todor .tl{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.todor .tl b{font-size:14px;color:#21324e}
.todor .tl i{font-style:normal;font-size:12px;color:#6b5d3f;line-height:1.5}
.todor .tg{font-size:12px;font-weight:700;color:#6f6448;white-space:nowrap}
.todor.on{border-color:#c9a961;background:#f7f0df}
.todor.on .tg{color:#6b4f1e}
@media (max-width:520px){
  .todor{padding:9px 11px;gap:9px}
  .todor .tn{min-width:34px;font-size:19px}
  .todor .tg{display:none}
}
/* 審核列 */
.rprows{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.rprow{display:flex;align-items:center;gap:10px;border:1px solid #ece3d0;border-radius:10px;
  padding:8px 12px;background:#fdfaf3;flex-wrap:wrap}
.rpn{display:flex;align-items:center;gap:7px;flex:1;min-width:150px}
.rpn b{color:#21324e}
.rpcfg{display:flex;align-items:center;gap:8px;margin:8px 0}
.rpcfg label{font-size:12px;font-weight:700;color:#6b5d3f}
.rpimg{width:100%;border-radius:10px;border:1px solid #e0d6bf;margin:8px 0}
/* 回饋兩端預覽 */
.fbpvs{display:flex;flex-direction:column;gap:12px}
.fbpv{border:1px solid #e6dcc6;border-radius:12px;background:#fdfaf3;overflow:hidden}
.fbpvh{padding:7px 12px;background:#f4efe3;border-bottom:1px solid #e6dcc6;
  font-size:12.5px;font-weight:800;color:#6b5d3f}
.fbpvb{padding:12px}
.fbto{display:flex;align-items:center;gap:7px;margin-bottom:8px;color:#21324e}
.fbq{margin-bottom:9px}
.fbql{font-size:12.5px;font-weight:700;color:#6b4f1e}
.fbqi{margin-top:3px;border:1px dashed #d9cdb2;border-radius:8px;padding:7px 10px;
  font-size:12px;color:#9a8d72;background:#fffdf8}
.fbsend{margin-top:10px;text-align:center;font-size:12.5px;font-weight:800;color:#f6efdf;
  background:linear-gradient(160deg,#22355a,#16233c);border-radius:999px;padding:8px}
.fbpeek img{width:100%;border-radius:10px;border:1px solid #e0d6bf;display:block}

/* 截止設定 */
.dlbox{margin-top:8px;padding:9px 11px;border:1px dashed #d9c7a4;border-radius:10px;background:#fdfaf3}
.dlbox .small{color:#6b5d3f}
.dlbox .segx{margin:6px 0}
.dlrow{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:6px 0}
.dlrow .sep{color:#6b5d3f;font-weight:800}
/* 開合盒 */
.foldbox{border:1px solid #e6dcc6;border-radius:12px;background:#fdfaf3;margin:8px 0;overflow:hidden}
.foldhd{display:flex;align-items:center;gap:8px;width:100%;text-align:left;cursor:pointer;
  border:0;background:#f4efe3;padding:9px 13px;font-size:13.5px;color:#21324e}
.foldhd b{flex:1;font-weight:800}
.foldhd .fcar{color:#6b5d3f;font-weight:800}
.foldbox.on .foldhd{border-bottom:1px solid #e6dcc6}
.foldbd{padding:11px 13px}

/* 回去改 */
.fixbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:8px 0;
  padding:8px 12px;border:1px solid #e0d6bf;border-radius:10px;background:#fbf7ee;
  font-size:12.5px;color:#6b5d3f}
.fixbar span{flex:1;min-width:180px;line-height:1.6}
.backb{white-space:nowrap}
/* 課堂流程：段名可改、可刪 */
.sgl .sgnm{font-weight:700;color:#21324e;max-width:220px}
.sgl .sga{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.vqrow{display:flex;align-items:stretch;gap:6px;width:100%}
.vqrow .btn.lv1{flex:1}
.vqx{align-self:center}
@media (max-width:520px){ .sgl .sgnm{max-width:none;width:100%} }

/* 手機：左邊的把手 */
.navedge{display:none}
@media (max-width:860px){
  .navedge{display:flex;position:fixed;left:0;top:50%;transform:translateY(-50%);
    z-index:60;flex-direction:column;justify-content:center;gap:4px;align-items:center;
    width:22px;height:74px;padding:0;border:1px solid #c9a961;border-left:0;
    border-radius:0 12px 12px 0;background:linear-gradient(160deg,#22355a,#16233c);
    box-shadow:2px 2px 10px rgba(22,35,60,.28);cursor:pointer}
  .navedge span{display:block;width:11px;height:2px;border-radius:2px;background:#f0dcae}
  .navedge:active{filter:brightness(1.15)}
}
/* 任務屬性 */
.pattr{margin-top:8px;padding-top:8px;border-top:1px dashed #e0d6bf}
/* 學員進度的發言時間 */
.rc.talk{border-color:#cdbd93;background:#f7f0df;color:#6b5d3f}

/* ═══ 參與規範：高級版 ═══ */
.rkwrap{max-width:980px;margin:0 auto}
.rk{position:relative;background:linear-gradient(180deg,#fffdf8,#f7f0e0);border:1px solid #d9c79a;
  border-radius:18px;padding:22px 24px;margin-bottom:18px;
  box-shadow:0 10px 26px rgba(50,40,20,.10),inset 0 0 0 1px #fffaf0,inset 0 0 0 3px #f2e6c9}
.rk::before{content:"";position:absolute;left:18px;right:18px;top:0;height:3px;border-radius:0 0 4px 4px;
  background:linear-gradient(90deg,transparent,#c9a961 25%,#e8cf8e 50%,#c9a961 75%,transparent)}
.rkhd{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.rkic{flex:none;width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(160deg,#2f4a78,#1b2c4c);color:#f3e6c4;box-shadow:0 5px 12px rgba(20,30,50,.28),inset 0 1px 0 rgba(255,255,255,.25)}
.rkic svg{width:22px;height:22px}
.rkk{font-size:11px;letter-spacing:.28em;color:#6b5d3f;font-weight:700;text-transform:uppercase}
.rkt{margin:2px 0 0;font-size:20px;color:#2a1b10;letter-spacing:.06em;line-height:1.2}
.rks{margin-top:4px;font-size:13px;color:#6b5d3f}
.rk-hero{background:linear-gradient(160deg,#1c2b4a 0%,#22365c 55%,#1a2740 100%);border-color:#c9a961;
  box-shadow:0 14px 32px rgba(18,28,50,.34),inset 0 0 0 1px rgba(233,208,150,.35),inset 0 0 0 3px rgba(255,255,255,.04)}
.rk-hero::before{background:linear-gradient(90deg,transparent,#e8cf8e,transparent)}
.rk-hero .rkic{background:linear-gradient(160deg,#e9d39a,#c9a961);color:#1b2741}
.rk-hero .rkk{color:#e8cf8e}
.rk-hero .rkt{color:#fbf3e2}
.rk-hero .rks{color:#d8cfbb}
.rkroute{display:flex;align-items:flex-start;justify-content:space-between;gap:0;margin:8px 0 6px;padding:8px 4px}
.rkstop{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0}
.rkmed{position:relative;width:62px;height:62px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 35% 30%,#f6e6bd,#c9a961 70%,#a07f3f);color:#1b2741;
  box-shadow:0 6px 14px rgba(0,0,0,.35),inset 0 2px 0 rgba(255,255,255,.55),0 0 0 4px rgba(233,208,150,.18)}
.rkmed svg{width:26px;height:26px}
.rkmed i{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;font-style:normal;
  font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center;
  background:#fbf3e2;color:#1b2741;border:2px solid #c9a961;box-shadow:0 2px 4px rgba(0,0,0,.3)}
.rkst{margin-top:10px;font-size:13.5px;font-weight:700;color:#fbf3e2;letter-spacing:.04em;line-height:1.3}
.rkline{position:absolute;top:31px;left:calc(50% + 34px);width:calc(100% - 68px);height:2px;
  background:repeating-linear-gradient(90deg,#e8cf8e 0 6px,transparent 6px 11px);opacity:.75}
.rkline2{margin-top:12px;padding:10px 14px;border-radius:12px;display:flex;align-items:center;gap:8px;
  background:rgba(233,208,150,.12);border:1px solid rgba(233,208,150,.35);color:#f6ecd8;font-size:14px;font-weight:600}
.rkline2 svg{width:16px;height:16px;color:#e8cf8e}
.rkgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rkrule{background:#fffdf8;border:1px solid #e3d6b8;border-radius:14px;padding:14px 16px;
  box-shadow:0 2px 8px rgba(50,40,20,.06)}
.rkrule.wide{grid-column:1 / -1}
.rkrh{display:flex;align-items:center;gap:9px;font-size:15px;color:#2a1b10;margin-bottom:8px;
  padding-bottom:8px;border-bottom:1px dashed #dccaa0}
.rkrh svg{width:18px;height:18px;color:#9a7c42}
.rkrb{font-size:13.5px;line-height:1.75;color:#3b2f1f}
.rkrb p{margin:0 0 6px}
.rkrb p:last-child{margin-bottom:0}
.rknote{margin-top:10px!important;padding:8px 12px;border-radius:10px;background:#f6efdc;border-left:3px solid #c9a961;
  font-size:12.5px;color:#6b5d3f}
.rksub{margin-top:12px;display:flex;align-items:center;gap:7px;font-weight:700;color:#2f4a78;font-size:14px}
.rksub svg{width:16px;height:16px}
.rksteps{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:10px 0 4px}
.rkstep{display:flex;gap:9px;align-items:flex-start;background:linear-gradient(180deg,#fbf6ea,#f3ebd6);
  border:1px solid #e0d2ad;border-radius:12px;padding:10px 11px;min-width:0}
.rkno{flex:none;width:24px;height:24px;border-radius:50%;background:linear-gradient(#2f4a78,#1b2c4c);color:#f6ecd8;
  font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 5px rgba(20,30,50,.3)}
.rkbody{min-width:0}
.rkbody b{display:flex;align-items:center;gap:5px;font-size:13.5px;color:#2a1b10}
.rkbody b svg{width:14px;height:14px;color:#9a7c42;flex:none}
.rkbody span{display:block;font-size:12px;color:#6b5d3f;line-height:1.55;margin-top:2px}
.rklist{list-style:none;margin:0;padding:0}
.rklist li{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid #eee3c9}
.rklist li:last-child{border-bottom:0}
.rkli{flex:none;width:28px;height:28px;border-radius:9px;background:#f1e6cb;color:#8a6a2c;display:flex;align-items:center;justify-content:center}
.rkli svg{width:15px;height:15px}
.rkk2{flex:none;min-width:88px;font-weight:700;color:#2f4a78;font-size:13.5px;padding-top:3px}
.rkv{flex:1;font-size:13.5px;color:#3b2f1f;line-height:1.7}
.rk-chest{background:linear-gradient(180deg,#fdf8ec,#f3e6c6);border-color:#c9a961}
.rkbars{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.rkbar{position:relative;border-radius:14px;padding:16px 14px 14px;text-align:center;
  background:linear-gradient(180deg,#fffdf8,#f7edd3);border:1px solid #dcc48a;
  box-shadow:0 6px 14px rgba(120,90,30,.14),inset 0 1px 0 #fff}
.rkbar>svg{width:30px;height:30px;color:#a07f3f;margin-bottom:6px}
.rkbar b{display:block;font-size:15px;color:#2a1b10;letter-spacing:.06em;margin-bottom:6px}
.rkbar span{display:block;font-size:13px;color:#4a3c28;line-height:1.7}
.rkseal{margin-top:14px;display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:14px;
  background:linear-gradient(135deg,#3b1410,#7a2418 60%,#5a1a12);border:1px solid #c9a961;color:#fbe9d8;
  font-size:14px;line-height:1.7;box-shadow:0 8px 18px rgba(80,20,10,.3),inset 0 1px 0 rgba(255,255,255,.15)}
.rkseal b{color:#f6d68c;letter-spacing:.08em}
.rkwax{flex:none;width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 35% 30%,#d8503d,#9e2b1c 65%,#6f1a10);color:#f6d68c;
  box-shadow:0 4px 10px rgba(0,0,0,.4),inset 0 2px 0 rgba(255,255,255,.25)}
.rkwax svg{width:26px;height:26px}
.rkgrid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.rkgrid2 .rk{margin-bottom:0}
.rkfoot{text-align:center;font-size:12px;color:#4f4735;letter-spacing:.08em;margin:18px 0 6px}
@media(max-width:860px){
  .rk{padding:18px 16px;border-radius:14px}
  .rkroute{flex-wrap:wrap;gap:12px 0}
  .rkstop{flex:0 0 33.33%}
  .rkline{display:none}
  .rkgrid,.rkgrid2,.rkbars{grid-template-columns:1fr}
  .rksteps{grid-template-columns:1fr 1fr}
  .rkk2{min-width:72px}
}

/* ═══ 預覽前台：學姐的選單固定在預覽框裡 ═══ */
.pvshell{display:flex;gap:16px;align-items:flex-start;margin-top:12px}
.pvside{flex:none;width:178px;position:sticky;top:70px;background:linear-gradient(180deg,#fbf6ea,#f1e8d3);
  border:1px solid #d9c79a;border-radius:14px;padding:10px 8px;box-shadow:0 6px 16px rgba(50,40,20,.12)}
.pvsh{display:flex;align-items:center;gap:6px;padding:4px 9px 9px;font-size:11.5px;font-weight:700;
  letter-spacing:.14em;color:#7a6030;border-bottom:1px dashed #dccaa0;margin-bottom:6px}
.pvsh svg{width:14px;height:14px}
.pvside .navk{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font-family:inherit;
  font-size:13px;color:#2a3c5c;background:transparent;border:0;border-radius:9px;padding:8px 10px;
  cursor:pointer;clip-path:none;box-shadow:none;text-shadow:none;font-weight:500;letter-spacing:.02em}
.pvside .navk .ni{display:flex;width:16px;height:16px;flex:none}
.pvside .navk .ni svg{width:16px;height:16px}
.pvside .navk:hover{background:rgba(154,124,66,.12)}
.pvside .navk.on{background:linear-gradient(#2f4a78,#1b2c4c);color:#f6ecd8;font-weight:700;box-shadow:0 3px 9px rgba(20,30,50,.24)}
.pvmain{flex:1;min-width:0}
@media(max-width:860px){
  .pvshell{display:block}
  .pvside{position:static;width:auto;display:flex;flex-wrap:wrap;gap:4px;padding:8px;margin-bottom:12px}
  .pvsh{width:100%;border-bottom:0;margin-bottom:2px;padding-bottom:4px}
  .pvside .navg,.pvside .navk-wrap{display:contents}
  .pvside .navk{width:auto;padding:7px 11px;border:1px solid #d9c79a;background:#fffdf8}
}
/* ═══ 投票：選項、單一候選人、結果 ═══ */
.votecard .vone{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:16px}
.votecard .vone .ava,.votecard .vone .av{width:84px;height:84px;font-size:26px;border:3px solid #e2c68a;
  box-shadow:0 8px 18px rgba(0,0,0,.35)}
.votecard .vone b{font-size:22px;color:#fff8e8;letter-spacing:.06em}
.votecard .vone span{font-size:12.5px;color:rgba(226,212,182,.8)}
.vopts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:16px}
.vopt{min-width:150px;padding:14px 18px;border-radius:14px;font:inherit;font-size:17px;font-weight:800;
  letter-spacing:.06em;cursor:pointer;color:#f2e7cf;border:1.5px solid rgba(201,169,97,.5);
  background:rgba(255,246,224,.07);transition:transform .14s,background .14s,border-color .14s}
.vopt:hover{transform:translateY(-2px);border-color:#d8b871}
.vopt.yes.on{background:linear-gradient(#f0d894,#c9a961);color:#1b2942;border-color:#f6e6bd;
  box-shadow:0 0 0 3px rgba(226,198,138,.35),0 8px 18px rgba(0,0,0,.3)}
.vopt.no.on{background:rgba(255,246,224,.22);color:#fff8e8;border-color:#e2c68a;
  box-shadow:0 0 0 3px rgba(226,198,138,.25)}
.vopt[disabled]{cursor:default;opacity:.85}
.vform{margin-top:12px;display:grid;gap:8px;text-align:left}
.vform .input{background:rgba(255,253,246,.95)}
.vcnt{font-size:11.5px;color:rgba(226,212,182,.75);text-align:right;margin-top:-4px}
.votecard .vedit{margin-top:10px}
.vres{border:1px solid #ded3ba;border-radius:13px;padding:11px 13px;margin-top:10px;background:#fdfaf3}
.vresh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:#2a1b10}
.vresn{display:flex;gap:14px;flex-wrap:wrap;margin:8px 0 4px}
.vresn span{font-size:12.5px;color:#6b5d3f}
.vresn span b{display:block;font-size:20px;color:#2f4a78;font-variant-numeric:tabular-nums}
.vreason{list-style:none;margin:6px 0 0;padding:0}
.vreason li{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:7px 0;border-top:1px dashed #e7dcc2;font-size:13px}
.vreason li b{font-size:12px;padding:2px 9px;border-radius:999px;background:#f1e6cb;color:#6b5a2a}
.vreason li.no b{background:#ece7dc;color:#5f5643}
.vreason li i{font-style:normal;color:#7a5c14;font-weight:700}
.vreason li span{color:#3b2f1f}
/* 課前設定：選項、投票人、獎金 */
.vblk{margin:10px 0 14px;padding:12px 13px;border:1px solid #e3d6b8;border-radius:13px;background:#fffdf8}
.vblk .sec-title{margin-top:0;display:flex;align-items:center;gap:8px}
.vblk .sec-title .small{margin-left:auto;font-weight:400}
.voptrows{display:grid;gap:6px;margin:4px 0 8px}
.voptrow{display:grid;grid-template-columns:1.6fr auto auto 90px 74px auto;gap:8px;align-items:center}
.voptrow.hd span{font-size:11.5px;color:#6b5d3f;letter-spacing:.06em}
.voptrow .chk{white-space:nowrap;margin:0}
.vpickw{margin-top:8px}
.vscope .segx{margin-bottom:4px}
.vpayw{margin:4px 0 0 0;padding-left:4px}
.vaskinfo{margin-top:10px;padding-top:10px;border-top:1px dashed #ddd0b2}
/* 課堂與課後：每一輪、排名 */
.vrankc .th .small{margin-left:auto;font-weight:400}
.vround.rv{border:1px solid #ded3ba;border-radius:13px;padding:11px 13px;margin-top:10px;background:#fdfaf3}
.vroundh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.vroundh .small{margin-left:auto}
.vsug{display:block;width:100%;color:#2f4a78;font-weight:700}
@media(max-width:860px){
  .voptrow{grid-template-columns:1fr 1fr;gap:6px}
  .voptrow.hd{display:none}
  .vopt{min-width:0;flex:1}
}

/* ═══ 三個階段各歸各位 ═══ */
.pubrow{display:flex;align-items:center;gap:12px;padding:11px 14px;margin-bottom:12px;border-radius:13px;
  border:1px solid #d9c79a;background:#fbf4e4}
.pubrow.on{border-color:#9bb59a;background:#eef4ea}
.pubrow>svg{width:22px;height:22px;flex:none;color:#7a6030}
.pubrow>div{flex:1;min-width:0}
.pubrow b{font-size:14.5px;color:#2a1b10}
.repfx{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px}
.repfx>svg{width:20px;height:20px;flex:none;color:#7a6030;margin-top:2px}
.sgset{margin-top:12px;padding:12px 13px;border:1px solid #e0d2ad;border-radius:12px;background:#fbf6ea}
.sgseth{display:flex;align-items:center;gap:7px;font-weight:700;color:#2a1b10;margin-bottom:8px;font-size:14px}
.sgseth svg{width:16px;height:16px;color:#9a7c42}
.sgset .pbfld{margin-top:8px}
.sgset .pbfld>.small{display:block;margin-top:4px}
.sgopts{display:grid;gap:6px;margin-bottom:6px}
.sgopt{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center}
.sgopt .chk{white-space:nowrap;margin:0}
.sgpv{margin-top:12px}
.sgpvh{display:flex;align-items:center;gap:7px;font-weight:700;color:#2a1b10;font-size:13.5px;margin-bottom:6px}
.sgpvh svg{width:16px;height:16px;color:#9a7c42}
.sgpvh .small{margin-left:auto;font-weight:400}
.stbig [contenteditable]{cursor:text;border-radius:8px;outline:1px dashed rgba(233,208,150,.45);outline-offset:3px}
.stbig [contenteditable]:hover{outline-color:#e8cf8e;background:rgba(255,246,224,.06)}
.stbig [contenteditable]:focus{outline:2px solid #e8cf8e;background:rgba(255,246,224,.1)}
.flowwrap{display:flex;gap:14px;align-items:flex-start}
.flowl{flex:1;min-width:0}
.flowr{flex:0 0 320px;max-width:320px;position:sticky;top:70px;border:1px solid #d9c79a;border-radius:14px;
  padding:10px 11px;background:#fbf6ea;box-shadow:0 6px 16px rgba(50,40,20,.1)}
.flowr .stpv{max-height:none;padding:8px}
.flowr .stbig.pv{transform:scale(.82);transform-origin:top center;margin-bottom:-30px}
.flowr .sgpv .stpv{max-height:420px}
.flowr .sgpvh{flex-wrap:wrap}
.flowr .sgpvh .small{margin-left:0;width:100%;padding-left:23px}
.awwin.void{display:flex;align-items:center;gap:10px;margin-top:9px}
@media(max-width:1100px){
  .flowwrap{display:block}
  .flowr{position:static;max-width:none;flex:none;margin-top:12px}
}
/* ═══ 任務框架：屬性晶片、兩塊清單、完成度 ═══ */
.tfc{display:inline-block;font-size:11px;padding:2px 9px;border-radius:999px;border:1px solid #d8cebb;background:#fff;color:#3d4a63;margin:2px 4px 2px 0;white-space:nowrap;vertical-align:middle}
.tfc.fix{background:#2f4a78;color:#f6ecd8;border-color:#2f4a78}.tfc.opp{background:#f1e6cb;color:#6b5a2a;border-color:#dcc48a}
.tfc.role{background:#eef2fb;color:#2f4a78;border-color:#c7d2ea}.tfc.trig.auto{background:#e9f1ea;color:#2f5a3a;border-color:#b9d3bd}
.tfc.trig.audit,.tfc.trig.release{background:#fbeede;color:#8a4a1a;border-color:#e6c5a0}.tfc.trig.manual,.tfc.trig.confirm{background:#ece7dc;color:#5f5643}
.tfc.new{border-color:#c9a961;color:#7a5c14;background:#fbf4e4}.tfc.fmt,.tfc.when{background:#f7f3ea}
.tfn{font-style:normal;font-size:11px;color:#6f6652;margin:0 8px 0 2px}
.tftb td{vertical-align:middle;padding:9px 8px}.tftb td b{font-size:13.5px}.tftb .pi{display:inline-flex;width:24px;height:24px;border-radius:7px;background:#f1e6cb;color:#8a6a2c;align-items:center;justify-content:center;margin-right:7px;vertical-align:middle}.tftb .pi svg{width:14px;height:14px}
.tfamt{font-variant-numeric:tabular-nums;font-weight:700;color:#7a5c14;white-space:nowrap}.dim{color:#6f6652}
.tflegend{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:6px 0 14px}
.tfl{border:1px solid #ded3ba;border-radius:11px;padding:8px 11px;background:#fdfaf3;font-size:12px;line-height:1.5}.tfl b{display:block;color:#2f4a78;font-size:13px}
.tfattr{margin:6px 0 2px;display:flex;flex-wrap:wrap;align-items:center}
.tfblks{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:10px 0}
@media(max-width:860px){.tfblks{grid-template-columns:1fr}}
.tfblk{border:1px solid #ded3ba;border-radius:13px;padding:12px 13px;background:#fdfaf3}
.tfbh{display:flex;align-items:center;gap:8px;font-size:15px}.tfbh .n{font-size:11px;padding:1px 8px;border-radius:999px;background:#2f4a78;color:#f6ecd8}
.tfsr{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid #e7dcc2;border-radius:11px;background:#fff;margin-top:7px}
.tfsr.go{cursor:pointer}.tfsr.go:hover{border-color:#c9a961}
.tfi{width:30px;height:30px;border-radius:9px;background:#f1e6cb;color:#8a6a2c;display:flex;align-items:center;justify-content:center;flex:none}.tfi svg{width:15px;height:15px}
.tft{flex:1;min-width:0}.tft b{display:block;font-size:13.5px}.tft i{display:block;font-style:normal;font-size:11.5px;color:#6b5d3f;margin-top:2px}
.tfst{font-size:11.5px;padding:3px 9px;border-radius:999px;white-space:nowrap}
.tfst.ok{background:#e9f1ea;color:#2f5a3a}.tfst.wait{background:#fbeede;color:#8a4a1a}.tfst.no{background:#f3e9e7;color:#8e3a2c}.tfst.todo{background:#eef2fb;color:#2f4a78}.tfst.off{background:#ece7dc;color:#5f5749}
.tfkpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 0}
.tfkp{border:1px solid #ded3ba;border-radius:12px;padding:10px 12px;background:#fff;text-align:center}.tfkp b{display:block;font-size:22px;color:#2f4a78;font-variant-numeric:tabular-nums}.tfkp span{font-size:11.5px;color:#6b5d3f}

/* 表揚榜：更新鈕與名次行 */
.pbtop{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:6px 0 10px}
.pbrank{margin:6px 0 2px;color:#5a4a22;line-height:1.9}
.pbrank .sep{color:#7a6f5a;margin:0 4px}

/* 聊天視窗：回到最上／最新 */
.chatmain{position:relative}
.chatjump{position:absolute;right:10px;top:52px;display:flex;gap:6px;z-index:3}
.chatjump button{display:flex;align-items:center;gap:4px;padding:4px 9px;border-radius:999px;border:1px solid #d6c39a;background:rgba(253,248,236,.94);color:#5a4a22;font-size:11.5px;cursor:pointer;box-shadow:0 2px 6px rgba(40,30,10,.12)}
.chatjump button:hover{background:#f3e7cc}
.chatjump button .ic{width:13px;height:13px}
.chatjump button:first-child .ic{transform:none}

/* 課後審核段落：待審數字像未讀 */
.chkc .chkn.unread{background:#b3432c;color:#fff;min-width:20px;text-align:center}

/* 學姐端：我的任務 */
.todo-old{display:none !important}
.mytseg{margin:8px 0 10px}
.mytseg button .n{display:inline-block;margin-left:6px;min-width:18px;padding:0 6px;border-radius:999px;background:#b3432c;color:#fff;font-size:11px;line-height:18px;text-align:center}
.myt .duehd{margin-top:10px}
.myt .tfsr.late .tft b{color:#8e3a2c}

/* ═══ 簽到三步：奶油白 → 學院深藍徽章 ═══ */
.route-steps .rnode{width:56px!important;height:56px!important;border:1.5px solid #d9c9a3!important;
  background:linear-gradient(160deg,#fffaf0,#efe4cc)!important;
  box-shadow:inset 0 1px 0 #fffdf6,inset 0 -2px 4px rgba(122,96,58,.14),0 2px 6px rgba(74,51,32,.12)!important;
  opacity:1!important;filter:none!important;transition:transform .18s,box-shadow .25s,background .25s}
.route-steps.sm .rnode{width:46px!important;height:46px!important}
.route-steps .rnode svg{width:28px;height:28px}
.route-steps .rnode.lock{cursor:not-allowed;opacity:.72!important}
.route-steps .rnode.lock svg circle{stroke:#c9b48a!important}
.route-steps .rnode.lock svg path{fill:#d6c7a3!important;stroke:none!important}
.route-steps .rnode.now{border-color:#c9a961!important;cursor:pointer;animation:nodeready 2.2s ease-in-out infinite}
.route-steps .rnode.now:hover{transform:scale(1.05)}
@keyframes nodeready{0%,100%{box-shadow:inset 0 1px 0 #fffdf6,0 0 0 0 rgba(201,169,106,.35),0 2px 6px rgba(74,51,32,.12)}50%{box-shadow:inset 0 1px 0 #fffdf6,0 0 0 6px rgba(201,169,106,.16),0 0 14px rgba(201,169,106,.45)}}
.route-steps .rnode.done{background:radial-gradient(circle at 36% 28%,#2b4470,#16233c 72%)!important;border:2px solid #c9a961!important;
  box-shadow:0 0 0 3px rgba(201,169,106,.18),0 0 16px rgba(34,53,90,.35),inset 0 1px 0 rgba(240,220,174,.35)!important}
.route-steps .rnode.done svg *{stroke:#f0dcae!important}
.route-steps .rnode.done svg path{fill:#f0dcae!important;stroke:none!important}
.route-steps .rnode.done .rchk{background:linear-gradient(160deg,#f0d8a6,#c9a961)!important;color:#1a1208!important;
  width:20px;height:20px;font-size:12px;box-shadow:0 2px 6px rgba(22,35,60,.35)!important}
.route-steps .rnode.pop{animation:nodepop 1.1s ease-out 1}
@keyframes nodepop{0%{transform:scale(.92);box-shadow:0 0 0 0 rgba(201,169,106,.7),0 0 0 rgba(34,53,90,0)}35%{transform:scale(1.12);box-shadow:0 0 0 10px rgba(201,169,106,.28),0 0 28px rgba(201,169,106,.75)}100%{transform:scale(1);box-shadow:0 0 0 3px rgba(201,169,106,.18),0 0 16px rgba(34,53,90,.35)}}
.rlabel{font-size:12.5px}.rlabel.lock{color:#6b5d3f;opacity:1}.rlabel.now{color:#8a5f2b}.rlabel.done{color:#21324e!important;font-weight:800}
.rline{border-top:2px dashed #c9b48a;opacity:.9;margin-top:27px}.route-steps.sm .rline{margin-top:22px}
.rline.on{border-top-color:#c9a961!important;border-top-style:solid!important}

/* 簽到三步的格子不是身分格：把白底拿掉 */
.route-steps .rcell{background:none!important;border:0!important;padding:0!important;border-radius:0!important;cursor:default;flex-direction:column;gap:6px}

/* 參與規範：階段字樣取代數字圈 */
.rkmed i{display:none}
.rkph{font-size:11px;letter-spacing:.22em;color:#e8cf8e;font-weight:600;margin-bottom:8px;opacity:.9}
.rkline{top:calc(31px + 27px)}
/* 課後審核項目：待審數在項目上 */
.wbtab{position:relative}
.wbtab .chkn{margin-left:6px;min-width:18px;padding:0 6px;border-radius:999px;font-size:11px;font-weight:700;line-height:18px;text-align:center;display:inline-block}
.wbtab .chkn.unread{background:#b3432c;color:#fff}

/* 我的任務：依課次收合 */
.myts{border:1px solid #e3d7bd;border-radius:14px;background:linear-gradient(180deg,#fdfaf3,#f6efe0);margin:10px 0;overflow:hidden}
.myts.term{border-color:#d9c9a3;background:linear-gradient(180deg,#fbf6ea,#f3ebd6)}
.mytsh{display:flex;align-items:center;gap:10px;width:100%;padding:11px 14px;border:0;background:transparent;font:inherit;text-align:left;cursor:pointer;color:#3b2f1f}
.mytsh.static{cursor:default}
.mytsd{font-size:12px;letter-spacing:.06em;color:#8a5f2b;font-weight:700;white-space:nowrap}
.mytsn{font-size:14.5px;font-weight:800;color:#21324e;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mytsk{margin-left:auto;font-size:11.5px;color:#6b5d3f;white-space:nowrap}
.mytsc{font-size:11.5px;color:#8a5f2b;border:1px solid #d9c9a3;border-radius:999px;padding:2px 9px;background:#fff9ec;white-space:nowrap}
.myts.open .mytsc{background:#21324e;color:#f6ecd8;border-color:#21324e}
.mytsb{padding:2px 12px 12px;border-top:1px dashed #e3d7bd}
.mytg{margin-top:8px}
.mytgh{font-size:12.5px;font-weight:800;color:#5a4a22;margin:8px 0 4px;display:flex;align-items:center;gap:6px}
.mytgh .n{font-weight:600;color:#6b5d3f;font-size:11px}
.tfsr.myr .tfattr{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.tfsr.myr .tft{display:flex;flex-direction:column;gap:2px;min-width:0}
@media (max-width:640px){
  .mytsh{flex-wrap:wrap;gap:6px 10px}
  .mytsk{margin-left:0;width:100%;order:3}
  .mytsc{margin-left:auto}
}
/* 藏寶金依據視窗 */
.lgev .k{flex:0 0 96px}
.lgev .v .badge{vertical-align:middle}
.lgfb{border:1px solid #d9c9a3;border-radius:12px;padding:10px 12px;margin:8px 0;background:rgba(255,255,255,.55)}
.lgfbh{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.lgfbh b{font-size:15px}
.lgfbh .badge{margin-left:auto}
.lgfbq{padding:6px 0;border-top:1px dashed #d9c9a3}
.lgfbq:first-of-type{border-top:0}
.lgfbq>.small{display:block;color:#8a6a3a;margin-bottom:2px}
.lgfbq>div{white-space:pre-wrap;word-break:break-word;line-height:1.55}
@media (max-width:640px){.lgev .k{flex:0 0 76px}.lgfbh b{font-size:14px}}
/* 寫回饋的信紙 */
.ltwlist{margin-bottom:12px}
.ltw{position:relative;max-width:470px;margin:0 auto 14px;perspective:1100px}
.ltwfold{display:block;position:relative;width:100%;border:0;padding:0;cursor:pointer;font:inherit;color:#26324a;text-align:center;
  border-radius:15px;overflow:hidden;min-height:200px;
  background:
    repeating-linear-gradient(180deg,transparent 0 27px,rgba(38,50,74,.10) 27px 28px),
    repeating-linear-gradient(101deg,rgba(150,128,86,.035) 0 1px,transparent 1px 5px),
    linear-gradient(#fdfaf3,#f2ebdb);
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 8px 22px rgba(38,50,74,.14);
  transition:transform .35s ease,box-shadow .35s ease,opacity .32s ease}
.ltwfold:hover{transform:translateY(-2px);box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 12px 26px rgba(38,50,74,.2)}
.ltwfold::before{content:"";position:absolute;left:0;right:0;top:64%;height:1px;background:linear-gradient(90deg,transparent,rgba(38,50,74,.28),transparent);
  box-shadow:0 -6px 12px rgba(38,50,74,.10)}
.ltwsheet{position:absolute;inset:14px 18px;border:1px solid rgba(38,50,74,.16);border-radius:10px;pointer-events:none}
.ltwsheet .ltwline{display:none}
.ltwwax{position:absolute;left:50%;top:39%;z-index:3;transform:translate(-50%,-50%) rotate(-6deg);
  width:66px;height:66px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 33% 27%,#3c5580,#21324e 58%,#131e33);
  box-shadow:0 0 0 3px rgba(255,246,224,.55) inset,0 0 0 1px rgba(19,30,51,.5),0 7px 16px rgba(19,30,51,.35);
  transition:transform .4s ease}
.ltwwax img{width:46px;height:46px;display:block;filter:brightness(0) invert(1) opacity(.92)}
.ltwfold:hover .ltwwax{transform:translate(-50%,-50%) rotate(-2deg) scale(1.05)}
.ltwtx{position:absolute;left:0;right:0;bottom:46px;z-index:4;display:flex;align-items:center;justify-content:center;gap:8px;font-size:15.5px}
.ltwtx b{font-size:18px;color:#1d2c47}
.ltwhint{position:absolute;left:0;right:0;bottom:22px;z-index:4;font-size:11.5px;color:#8a6a3a;letter-spacing:.06em}
/* 攤開 */
.ltw.open .ltwfold{position:absolute;left:0;right:0;top:0;z-index:2;opacity:0;pointer-events:none;transform:translateY(-8px) scale(.98)}
.ltwbody{position:relative;border-radius:15px;padding:18px 20px 16px;color:#26324a;
  background:
    repeating-linear-gradient(180deg,transparent 0 31px,rgba(38,50,74,.09) 31px 32px),
    repeating-linear-gradient(101deg,rgba(150,128,86,.035) 0 1px,transparent 1px 5px),
    linear-gradient(#fdfaf3,#f4eee0);
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 10px 26px rgba(38,50,74,.16);
  transform-origin:top center;transform:rotateX(-84deg);opacity:0;
  transition:transform .62s cubic-bezier(.22,.9,.3,1.08),opacity .3s ease}
.ltw.open.unfold .ltwbody{transform:none;opacity:1}
.ltwhead{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap;padding-bottom:8px;border-bottom:2px solid #21324e;margin-bottom:8px}
.ltwto{display:flex;align-items:center;gap:8px}.ltwto b{font-size:19px;color:#1d2c47;letter-spacing:.02em}
.ltwmeta{font-size:12.5px;color:#6b5d3f}
.ltwnote{font-size:12.5px;color:#6b5d3f;margin:0 0 6px}
.ltwq{margin:8px 0 10px}
.ltwq label{display:block;font-weight:700;color:#3b2f1f;font-size:14px;margin-bottom:4px;line-height:32px}
.ltwq .req{color:#9e2b1c;font-style:normal}
.ltwin{width:100%;border:0;border-bottom:1.5px solid rgba(38,50,74,.35);background:transparent;padding:6px 2px;font:inherit;font-size:15px;color:#1d2c47;line-height:32px;outline:0;border-radius:0;resize:vertical}
.ltwin:focus{border-bottom-color:#21324e;box-shadow:0 1.5px 0 #21324e}
select.ltwin{line-height:normal;padding:6px 2px}
.ltwopts{display:flex;flex-wrap:wrap;gap:8px}
.ltwopt{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border:1px solid #d9c9a3;border-radius:999px;background:rgba(255,255,255,.55);cursor:pointer;font-size:14px}
.ltwopt input{accent-color:#21324e}
.ltwfoot{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;position:relative;z-index:2}
.ltwstamp{position:absolute;left:50%;top:38%;z-index:5;pointer-events:none;
  width:96px;height:96px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 33% 27%,#3c5580,#21324e 58%,#131e33);
  box-shadow:0 0 0 4px rgba(255,246,224,.55) inset,0 0 0 1px rgba(19,30,51,.5),0 12px 26px rgba(19,30,51,.4);
  transform:translate(-50%,-50%) scale(2.4);opacity:0}
.ltwstamp img{width:66px;height:66px;filter:brightness(0) invert(1) opacity(.92)}
/* 封起送出：信紙摺回去，蠟印蓋下來 */
.ltw.sealing .ltwbody{transform:rotateX(-84deg);opacity:0;transition:transform .55s cubic-bezier(.5,-.2,.6,1) .25s,opacity .3s ease .5s}
.ltw.sealing .ltwstamp{animation:ltwstamp .5s cubic-bezier(.2,1.2,.4,1) both}
@keyframes ltwstamp{0%{transform:translate(-50%,-50%) scale(2.4);opacity:0}60%{transform:translate(-50%,-50%) scale(.92);opacity:1}100%{transform:translate(-50%,-50%) scale(1);opacity:1}}
@media(prefers-reduced-motion:reduce){.ltwbody,.ltwfold,.ltwwax{transition:none}.ltw.sealing .ltwstamp{animation:none;opacity:1;transform:translate(-50%,-50%)}}
@media(max-width:560px){.ltw{max-width:none}.ltwbody{padding:16px 14px 14px}.ltwfoot{flex-wrap:wrap}.ltwfoot .btn.primary{flex:1}}
/* 依課次收合：戰友回饋 */
.myts.fbf .mytsn .unread{margin-left:8px;vertical-align:middle}
.myts.fbf .mytsb .catcard{margin-top:10px}
.myts.fbf .mytsb .fbsess{margin-top:8px}
/* 藏寶金進度點得進去 */
.golink{cursor:pointer;transition:transform .18s ease,box-shadow .18s ease}
.golink:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(38,50,74,.14)}
.golink:focus-visible{outline:2px solid #c4a66a;outline-offset:2px}
.golink-hint{display:inline-block;font-size:12px;color:#7a5326;margin-top:4px;letter-spacing:.04em}
.ringwrap.golink{flex-wrap:wrap}
.ringwrap.golink .golink-hint{display:block;width:100%;color:#e2c483;margin-top:2px}
.card.flash{animation:cardflash 1.3s ease-out}
@keyframes cardflash{0%{box-shadow:0 0 0 3px rgba(196,166,106,.85)}100%{box-shadow:0 0 0 3px rgba(196,166,106,0)}}
/* 明細整列可點 */
.lgtb tr.lgrow{cursor:pointer}
.lgtb tr.lgrow:hover td{background:rgba(196,166,106,.12)}
.lgtb tr.lgrow td.lgop{cursor:default}
/* 操作紀錄表 */
.audtb{min-width:560px}
.audtb th{white-space:nowrap}
.audtb td{vertical-align:top}
.audtb td.lgt{white-space:nowrap}
.audtb .audside{white-space:nowrap}
@media(max-width:640px){.audtb td,.audtb th{font-size:12px;padding:6px 6px}}
/* 視窗關閉鈕釘在上面 */
.modalBox{position:relative}
.modalBox .mclose{position:sticky;top:0;z-index:30;text-align:right;margin:-20px -20px 4px;padding:10px 12px 4px;
  background:linear-gradient(180deg,#fdf8ec 0,#fdf8ec 70%,rgba(253,248,236,0) 100%)}
.modalBox .mclose .btn{box-shadow:0 2px 8px rgba(40,56,86,.16)}
/* 出席定案 */
.attbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 4px;padding:10px 12px;border:1px solid #d9c9a3;border-radius:12px;background:#fff9ec}
.attbar .small{flex:1;min-width:200px}
.attbar.done{background:#eef4ea;border-color:#9fb894}
.attbar .btn{margin-left:auto}
/* 身分定義：預設參與者 */
.rcell .rt.dim{opacity:.55}
/* 感謝視窗的蠟印只放標誌 */
.thxseal img{width:46px;height:46px;display:block;filter:drop-shadow(0 1px 0 rgba(255,246,224,.4))}
/* 沒資格的任務列 */
.tfsr.inelig{opacity:.58;cursor:default}
/* 開始上課只在當天 */
.lvwait{display:flex;flex-direction:column;gap:4px;padding:10px 14px;border:1px dashed #cdb480;border-radius:12px;background:#fff9ec;min-width:220px}
.lvwait b{color:#3b2f1f}
.wbtaskgo{margin-left:auto}

/*NO-TINT-END*/
/* ─── 表揚榜：黑曜石卷軸標籤 ─── */
.pbtabs.obsid{display:flex;flex-wrap:wrap;gap:10px 10px;padding:6px 0 14px;overflow:visible}
.pbtag{position:relative;border:1px solid #9c7b33;border-radius:999px;padding:0;background:linear-gradient(135deg,#0c1016 0%,#1b2330 45%,#2a3445 55%,#0c1016 100%);color:#cebc99;cursor:pointer;font:inherit;overflow:visible;box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 -1px 0 rgba(0,0,0,.6) inset,0 4px 12px rgba(10,14,20,.35);transition:transform .18s,box-shadow .18s}
.pbtag .pbtag-in{position:relative;display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;overflow:hidden;z-index:1}
.pbtag .pbtag-t{font-size:14px;font-weight:600;letter-spacing:.08em;text-shadow:0 1px 0 rgba(0,0,0,.6)}
.pbtag .pbn{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:rgba(206,188,153,.14);border:1px solid rgba(206,188,153,.45);color:#e4d8c4;font-size:11.5px}
.pbtag .pbtag-in:before{content:'';position:absolute;top:-40%;bottom:-40%;left:-60%;width:38%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(244,239,229,.55) 50%,rgba(255,255,255,0) 100%);transform:skewX(-18deg);opacity:0;pointer-events:none}
.pbtag:hover .pbtag-in:before,.pbtag:focus-visible .pbtag-in:before{animation:pbsheen .95s ease-out 1}
@keyframes pbsheen{0%{left:-60%;opacity:0}12%{opacity:1}100%{left:130%;opacity:0}}
.pbtag:hover,.pbtag:focus-visible{z-index:60;transform:translateY(-1px);box-shadow:0 1px 0 rgba(255,255,255,.1) inset,0 -1px 0 rgba(0,0,0,.6) inset,0 6px 16px rgba(10,14,20,.4),0 0 0 1px rgba(206,188,153,.25)}
.pbtag.on{background:linear-gradient(135deg,#0e1522 0%,#1b2941 45%,#273c60 55%,#0e1522 100%);border-color:#cebc99;color:#f2ece0;box-shadow:0 1px 0 rgba(242,231,212,.25) inset,0 -1px 0 rgba(0,0,0,.6) inset,0 4px 14px rgba(39,60,96,.45)}
.pbtag.on .pbn{background:rgba(242,236,224,.18);border-color:rgba(242,236,224,.6);color:#f9f6f0}
/* 卷軸 */
.pbtag .pbscroll{position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%) scaleY(0);transform-origin:top center;width:236px;z-index:40;opacity:0;pointer-events:none;transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .2s;display:flex;flex-direction:column;align-items:stretch;filter:drop-shadow(0 8px 16px rgba(12,18,30,.35))}
.pbtag:hover .pbscroll,.pbtag:focus-visible .pbscroll{transform:translateX(-50%) scaleY(1);opacity:1}
.pbtag .pbscroll-roll{display:block;height:10px;border-radius:6px;background:linear-gradient(180deg,#324d7b,#a58a51 40%,#2b4168);box-shadow:0 1px 2px rgba(0,0,0,.4)}
.pbtag .pbscroll-roll.top{margin:0 -6px -3px}
.pbtag .pbscroll-roll.bot{margin:-3px -6px 0}
.pbtag .pbscroll-in{display:flex;flex-direction:column;gap:4px;padding:12px 14px 12px;background:linear-gradient(180deg,#f0ede6,#e7e0d3);border-left:1px solid #bcad93;border-right:1px solid #bcad93;color:#1d2c47;text-align:left;font-size:12.5px;line-height:1.55}
.pbtag .pbscroll-in b{font-size:14px;letter-spacing:.08em;color:#1f2d46}
.pbtag .pbscroll-in i{font-style:normal;color:#384761}
.pbtag .pbscroll-in em{font-style:normal;font-size:11.5px;color:#7c683d}
@media (hover:none){ .pbtag .pbscroll{display:none} }
@media (max-width:600px){ .pbtag .pbtag-in{padding:7px 12px} .pbtag .pbtag-t{font-size:13px} }

/* ─── 對話串裡的信 ─── */
.ltrow{margin:6px 0;border:1px solid #cdc5b5;border-radius:12px;background:#f7f5f2;overflow:hidden}
.ltrow.gave{background:#f3f2f0;border-color:#d7d4cd}
.ltrow .ltrbtn{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;padding:8px 12px;cursor:pointer;color:#2b2a27;font:inherit}
.ltrow .ltrenv{width:34px;height:26px;border-radius:5px;background:#dbd2c1;border:1px solid #b89854;display:flex;align-items:center;justify-content:center;flex:none;position:relative}
.ltrow .ltrenv:before{content:'';position:absolute;left:4px;right:4px;top:3px;height:9px;border-left:1px solid #9c7b33;border-right:1px solid #9c7b33;border-bottom:1px solid #9c7b33;transform:skewY(0);border-radius:0 0 2px 2px;opacity:.7}
.ltrow .ltrenv img{width:14px;height:14px;position:relative}
.ltrow.gave .ltrenv{background:#e5e2de;border-color:#b5b1a9}
.ltrow .ltrtx{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}
.ltrow .ltrtx b{font-size:14px}
.ltrow .ltrtx .small{font-size:11.5px;color:#424c5d}
.ltrow .ltrdot{width:9px;height:9px;border-radius:50%;background:#b8322e;flex:none}
.ltrow .ltrarrow{font-size:12px;color:#7c683d;flex:none}
.ltrow.open .ltrarrow{color:#384761}
.ltrow .ltrbody{padding:0 10px 10px}
.ltrow .ltrin .ltr{margin:0}

/* ─── 表揚榜：最近更新 ─── */
.pbupd{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#384761;background:#ebe6de;border:1px solid #cdc5b5;border-radius:999px;padding:3px 12px;margin:2px 0 10px}
.pbupd .small{color:#424c5d}

/* ─── 統一發言畫面 ─── */
.stov.watch .sttitle{font-size:24px;color:#ddd3c1}
.stov.watch .stbig .stwho b{font-size:30px;letter-spacing:.08em}
.stov.watch .stbody{font-size:15px;color:#cbc6bc}
.stbig .sttag{display:inline-block;font-size:12px;letter-spacing:.2em;color:#c8baa1;border:1px solid rgba(200,186,161,.5);border-radius:999px;padding:1px 10px;margin-top:8px}
.stuchk.dim{opacity:.55}
@media (max-width:600px){ .stov.watch .stbig .stwho b{font-size:24px} }

/* ─── 前台區塊維護 ─── */
.mmcard{background:linear-gradient(160deg,#1f2d46 0%,#2b3e5e 60%,#1a2538 100%)!important;border:1px solid #b89854!important;color:#f1efec;text-align:center;padding:34px 20px}
.mmcard .mmin{max-width:420px;margin:0 auto}
.mmcard .mmlogo{width:120px;max-width:50%;display:block;margin:0 auto 14px;filter:brightness(0) invert(1) sepia(.5) saturate(4) hue-rotate(2deg) drop-shadow(0 4px 12px rgba(0,0,0,.35))}
.mmcard .mmt{font-size:24px;font-weight:700;letter-spacing:.12em;color:#cebc99;margin-bottom:8px}
.mmcard .mmmsg{font-size:16px;line-height:1.7;color:#f1efec}
.mmcard .mmsub{font-size:12px;color:#c6c3bd;margin-top:10px}
.mmcard .btn{margin-top:16px}
.mmcard.mini{padding:20px 16px}
.mmcard.mini .mmlogo{width:64px;margin-bottom:8px}
.mmcard.mini .mmt{font-size:17px;margin-bottom:4px}
.mmcard.mini .mmmsg{font-size:13px}
.mmlist{display:flex;flex-direction:column;gap:8px}
.mmrow{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #d7d4cd;border-radius:10px;background:#fefefd}
.mmrow.on{border-color:#9c7b33;background:#f4f0ea}
.mmrow .mmi{flex:1;display:flex;flex-direction:column;gap:2px}
.mmrow .pill{display:inline-block;font-size:11px;padding:1px 8px;border-radius:999px;background:#ebe6de;color:#384761}
.mmrow .pill.hide{background:#7a2e2e;color:#ffffff}
.mmrow .pill.live{background:#3d5c6b;color:#ffffff}
.mmnote{border-left-color:#7a2e2e}


/* ─── 逾期補交 ─── */
.tfst.late{background:#1b2941;color:#e4d8c4;border:1px solid #9c7b33}
.tfamt.late{color:#8e3a2c;opacity:.8}
.myts.latebox{border-color:#9c7b33;background:linear-gradient(180deg,#f4f0ea,#ebe4d7)}
.myts.latebox .mytsd{color:#8e3a2c}
.myts.latebox .mytsk{color:#2e4771}
.latenote{display:flex;align-items:flex-start;gap:8px;margin:8px 0 6px;padding:10px 12px;border-radius:10px;background:#f9f6f0;border:1px solid #c1ad89;color:#263a5d;font-size:13px;line-height:1.6}
.latenote img,.latenote svg{width:16px;height:16px;flex:none;margin-top:3px}
.latenote.hold{background:#f7e6e1;border-color:#c9776a;color:#7a2e2e}

/* ─── 卷軸裡的上榜學姊 ─── */
.pbtag .pbscroll-faces{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.obring{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;padding:2px;background:linear-gradient(135deg,#0c1016,#2a3445 50%,#0c1016);box-shadow:0 0 0 1px #9c7b33,0 2px 5px rgba(10,14,20,.35)}
.obring img,.obring .av{width:22px!important;height:22px!important;border-radius:50%;font-size:9px;line-height:22px;display:flex;align-items:center;justify-content:center;object-fit:cover}
.obmore{display:inline-flex;align-items:center;justify-content:center;height:28px;padding:0 8px;border-radius:999px;background:#1b2330;color:#cebc99;font-size:11px;box-shadow:0 0 0 1px #9c7b33}

/* ─── 等待學姊們解鎖 ─── */
.pblocked{margin-top:18px;padding:14px 16px 6px;border-radius:14px;background:linear-gradient(160deg,#141922 0%,#1f2736 60%,#141922 100%)!important;border:1px solid #324d7b;box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 6px 18px rgba(10,14,20,.3)}
.pblocked-h{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.pblocked-t{font-size:16px;font-weight:700;letter-spacing:.16em;color:#cebc99;text-shadow:0 1px 0 rgba(0,0,0,.6)}
.pblocked-h .small{color:#b4afa5}
.pbtabs.obsid.locked{padding-bottom:10px}
.pbtag.locked{border-color:#2e4670;color:#62718a;background:linear-gradient(135deg,#0c1016 0%,#171c26 45%,#202a3a 55%,#0c1016 100%);box-shadow:0 1px 0 rgba(255,255,255,.05) inset,0 -1px 0 rgba(0,0,0,.6) inset,0 3px 8px rgba(0,0,0,.35)}
.pbtag.locked .pbtag-t{color:#b2a998}
.pbtag.locked .pbn.lock{min-width:20px;background:rgba(255,255,255,.06);border-color:rgba(186,174,151,.35)}
.pbtag.locked .pbn.lock img,.pbtag.locked .pbn.lock svg{width:11px;height:11px;opacity:.85}
.pbtag.locked:hover,.pbtag.locked.open{border-color:#9c7b33;color:#cebc99}
.pbtag.locked.open{z-index:60}
.pbtag.locked .pbscroll{top:auto;bottom:calc(100% + 8px);transform-origin:bottom center}
.pbtag.locked.open .pbscroll{transform:translateX(-50%) scaleY(1);opacity:1}
@media (hover:none){ .pbtag.locked.open .pbscroll{display:flex} }
.pbtag.locked:hover .pbtag-t{color:#cebc99}
@media (max-width:600px){ .pblocked{padding:12px 12px 4px} .pblocked-t{font-size:15px}
  .pbtabs.obsid.locked{position:relative} .pbtag.locked,.pbtag.locked:hover,.pbtag.locked:focus-visible{position:static;transform:none}
  .pbtag.locked .pbscroll{left:0;right:0;width:auto;transform:translateX(0) scaleY(0)} .pbtag.locked.open .pbscroll,.pbtag.locked:focus-visible .pbscroll{transform:translateX(0) scaleY(1)} }

/* ─── 彈幕卷軸 ─── */
.dmscroll{position:relative;margin:18px 0 6px;display:flex;flex-direction:column}
.dmscroll .dms-roll{display:block;height:16px;border-radius:9px;background:linear-gradient(180deg,#2a3445 0%,#0c1016 45%,#1b2330 70%,#0c1016 100%);box-shadow:0 1px 0 rgba(255,255,255,.12) inset,0 3px 8px rgba(0,0,0,.45);position:relative;z-index:2}
.dmscroll .dms-roll:before,.dmscroll .dms-roll:after{content:'';position:absolute;top:-2px;width:22px;height:20px;border-radius:10px;background:linear-gradient(180deg,#cebc99,#755e2d 55%,#b89854);box-shadow:0 1px 3px rgba(0,0,0,.5)}
.dmscroll .dms-roll:before{left:-6px}.dmscroll .dms-roll:after{right:-6px}
.dmscroll .dms-roll.top{margin:0 6px -6px}
.dmscroll .dms-roll.bot{margin:-6px 6px 0}
.dmscroll .dms-body{position:relative;z-index:1;margin:0 14px;padding:16px 16px 12px;background:linear-gradient(160deg,#141922 0%,#1f2736 55%,#141922 100%)!important;border-left:1px solid #324d7b;border-right:1px solid #324d7b;box-shadow:0 8px 20px rgba(10,14,20,.35)}
.dmscroll .dms-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:15px;font-weight:700;letter-spacing:.12em;color:#cebc99;text-shadow:0 1px 0 rgba(0,0,0,.6);margin-bottom:10px}
.dmscroll .dms-title img,.dmscroll .dms-title svg{width:16px;height:16px;filter:brightness(0) invert(1) sepia(.6) saturate(3) hue-rotate(2deg)}
.dmscroll .dms-for{font-weight:400;letter-spacing:.04em;font-size:13px;color:#cbc6bc}
.dmscroll .dms-page{display:flex;align-items:stretch;gap:10px;padding:12px;border-radius:8px;background:linear-gradient(180deg,#f0ede6,#e7e0d3);box-shadow:0 0 0 1px #bcad93,0 1px 0 rgba(255,255,255,.6) inset,0 6px 14px rgba(0,0,0,.35)}
.dmscroll .dms-in{flex:1;min-width:0;min-height:56px;resize:none;border:0;border-bottom:1px dashed #9c7b33;background:transparent;color:#1d2c47;font:inherit;font-size:14.5px;line-height:1.6;padding:4px 6px;outline:none}
.dmscroll .dms-in::placeholder{color:#9a814c}
.dmscroll .dms-in:focus{border-bottom-color:#2b4168}
.dmscroll .dms-pen{position:relative;display:flex;align-items:center;flex:none;align-self:center;border:0;background:transparent;padding:0;cursor:pointer;font:inherit;filter:drop-shadow(0 3px 5px rgba(0,0,0,.35));transition:transform .18s}
.dmscroll .dms-pen:hover{transform:translateX(3px)}
.dmscroll .dms-pen:active{transform:translateX(5px) scale(.98)}
.dmscroll .dms-pen .pen-cap{display:block;width:18px;height:22px;border-radius:11px 3px 3px 11px;background:linear-gradient(180deg,#e4d8c4,#9c7b33 55%,#cebc99);box-shadow:0 1px 0 rgba(255,255,255,.4) inset}
.dmscroll .dms-pen .pen-body{display:flex;align-items:center;justify-content:center;height:22px;min-width:72px;padding:0 12px 0 10px;background:linear-gradient(180deg,#2a3445 0%,#0c1016 50%,#1b2330 100%);color:#cebc99;font-size:13px;font-weight:700;letter-spacing:.2em;text-shadow:0 1px 0 rgba(0,0,0,.6);box-shadow:0 1px 0 rgba(255,255,255,.12) inset}
.dmscroll .dms-pen .pen-nib{display:block;width:0;height:0;border-top:11px solid transparent;border-bottom:11px solid transparent;border-left:18px solid #b89854;position:relative}
.dmscroll .dms-pen .pen-nib:after{content:'';position:absolute;left:-18px;top:-2px;width:0;height:0;border-top:2px solid transparent;border-bottom:2px solid transparent;border-left:8px solid #1b2941}
.dmscroll .dms-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.dmscroll .dms-foot .small{color:#b4afa5}
.dmscroll .dms-foot .seg{background:#1b2330;border-color:#324d7b}
.dmscroll .dms-foot .seg.sm button{background:rgba(255,255,255,.06);color:#cbc6bc;border-color:#2e4670}
.dmscroll .dms-foot .seg.sm button.on{background:#cebc99;color:#1b2330;border-color:#cebc99}
@media (max-width:600px){ .dmscroll .dms-body{margin:0 10px;padding:12px 10px 10px} .dmscroll .dms-page{flex-direction:column} .dmscroll .dms-pen{align-self:flex-end} }

/* ─── 卷軸：游標移上去會停留、黑曜石邊框 ─── */
.pbtag .pbscroll{transition:transform .32s cubic-bezier(.2,.8,.2,1) .22s,opacity .2s .22s}
.pbtag:hover .pbscroll,.pbtag:focus-visible .pbscroll,.pbtag.locked.open .pbscroll{pointer-events:auto;transition-delay:0s}
.pbtag .pbscroll:before{content:'';position:absolute;left:-10px;right:-10px;top:-12px;height:14px}
.pbtag.locked .pbscroll:before{top:auto;bottom:-12px}
.pbtag .pbscroll-roll{background:linear-gradient(180deg,#2a3445 0%,#0c1016 45%,#1b2330 70%,#0c1016 100%);box-shadow:0 1px 0 rgba(255,255,255,.12) inset,0 2px 5px rgba(0,0,0,.45);position:relative;height:12px;border-radius:7px}
.pbtag .pbscroll-roll:before,.pbtag .pbscroll-roll:after{content:'';position:absolute;top:-1px;width:16px;height:14px;border-radius:7px;background:linear-gradient(180deg,#cebc99,#755e2d 55%,#b89854);box-shadow:0 1px 2px rgba(0,0,0,.5)}
.pbtag .pbscroll-roll:before{left:-4px}.pbtag .pbscroll-roll:after{right:-4px}
.pbtag .pbscroll-in{border-left:2px solid #0c1016;border-right:2px solid #0c1016;box-shadow:inset 1px 0 0 #9c7b33,inset -1px 0 0 #9c7b33;cursor:default}

/* ─── 後台表揚榜：分頁與篩選同前台黑曜石 ─── */
.seg.pbseg{border-color:#324d7b;background:#0c1016;box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 4px 12px rgba(10,14,20,.35)}
.seg.pbseg button{position:relative;overflow:hidden;background:linear-gradient(135deg,#0c1016 0%,#1b2330 45%,#2a3445 55%,#0c1016 100%);color:#cebc99;letter-spacing:.06em;font-weight:600;text-shadow:0 1px 0 rgba(0,0,0,.6);border-right:1px solid rgba(206,188,153,.18)}
.seg.pbseg button:last-child{border-right:0}
.seg.pbseg button.on{background:linear-gradient(180deg,#e4d8c4 0%,#b89854 55%,#cebc99 100%);color:#1b2330;font-weight:700;text-shadow:0 1px 0 rgba(255,255,255,.4)}
.seg.pbseg button.on svg,.seg.pbseg button.on img{filter:none}
.seg.pbseg button svg,.seg.pbseg button img{filter:brightness(0) invert(1) sepia(.6) saturate(3) hue-rotate(2deg)}
.seg.pbseg button:before,.fitf:before{content:'';position:absolute;top:-40%;bottom:-40%;left:-60%;width:38%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(244,239,229,.5) 50%,rgba(255,255,255,0) 100%);transform:skewX(-18deg);opacity:0;pointer-events:none}
.seg.pbseg button:hover:before,.fitf:hover:before{animation:pbsheen .95s ease-out 1}
.fitf{position:relative;overflow:hidden;border:1px solid #324d7b;background:linear-gradient(135deg,#0c1016 0%,#1b2330 45%,#2a3445 55%,#0c1016 100%);color:#cebc99;box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 -1px 0 rgba(0,0,0,.6) inset,0 3px 9px rgba(10,14,20,.3)}
.fitf b{color:#e4d8c4}
.fitf.on,.fitf.no.on,.fitf.yes.on,.fitf.on.on{border-color:#cebc99;background:linear-gradient(180deg,#e4d8c4 0%,#b89854 55%,#cebc99 100%);color:#1b2330;box-shadow:0 1px 0 rgba(255,255,255,.5) inset,0 3px 9px rgba(39,60,96,.35)}
.fitf.on b{color:#1b2330}

/* ─── 彈幕管理：誰留的 ─── */
.dmrow .dmm{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.dmwho{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#25334c;font-weight:600}
.dmwho img,.dmwho .av{width:20px;height:20px;border-radius:50%}
.dmwho.official{color:#755f2e}
.dmwho svg{width:13px;height:13px}
.dmrec{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:#324d7b;background:#ece8e1;border:1px solid #cfc6b5;border-radius:999px;padding:1px 8px}
.dmrec svg{width:11px;height:11px}
.dmrec.none{color:#8e3a2c;background:#f7e6e1;border-color:#c9776a}

/* ─── 課後審核裡的那一條 ─── */
.classbar.after{margin-top:12px}

/* ─── 預覽前台：手機版 ─── */
.pvdev{margin-right:6px;vertical-align:middle}
.pvdev button svg{width:13px;height:13px;margin-right:3px;vertical-align:-2px}
.pvphonewrap{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 0 6px}
.pvphone{position:relative;width:390px;max-width:100%;height:800px;max-height:calc(100vh - 150px);min-height:520px;border:12px solid #141922;border-radius:44px;background:#000000;box-shadow:0 20px 50px rgba(10,14,20,.45),0 0 0 1px #324d7b;overflow:hidden}
.pvphone .pvnotch{position:absolute;left:50%;top:0;transform:translateX(-50%);width:120px;height:22px;background:#141922;border-radius:0 0 16px 16px;z-index:2}
.pvphone .pvframe{display:block;width:100%;height:100%;border:0;background:#ffffff}
@media (max-width:600px){ .pvphone{height:calc(100vh - 140px);border-width:8px;border-radius:30px} }
body.pvframe .pvbar{font-size:12px;padding:6px 10px}
body.pvframe .pvbar .btn{padding:4px 8px;font-size:12px}
body.pvframe .pvshell{display:block;margin-top:6px}
body.pvframe .pvmain{width:100%}

/* ─── 關注名單 ─── */
.wtkpis{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 12px}
.wtkp{display:flex;align-items:baseline;gap:6px;padding:6px 12px;border:1px solid #d7d4cd;border-radius:10px;background:#fefefd}
.wtkp b{font-size:18px;color:#25334c;font-variant-numeric:tabular-nums}
.wtkp span{font-size:12px;color:#3f506f}
.wtkp.zero b{color:#8e3a2c}.wtkp.late b{color:#755f2e}.wtkp.wait b{color:#2f4a78}
.watchrow.wt2{align-items:flex-start}
.watchrow.wt2 .wtmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.watchrow.wt2 .wthead{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.watchrow.wt2 .wthead b{font-size:16px}
.watchrow.wt2 .wthead .ratepills{margin:0}
.wtbadges{display:flex;flex-wrap:wrap;gap:6px}
.wtbadges .badge{font-size:11.5px}
.badge.late{background:#f4f0ea;color:#755f2e;border:1px solid #c1ad89}
.wtsec{display:flex;gap:8px;align-items:baseline;font-size:12.5px;line-height:1.55}
.wtsec .wtk{flex:none;display:inline-flex;align-items:center;gap:5px;font-weight:700;color:#384761;white-space:nowrap}
.wtsec .wtk b{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#ebe6de;font-size:11px;color:#384761}
.wtsec.late .wtk{color:#755f2e}.wtsec.late .wtk b{background:#f4f0ea;color:#755f2e}
.wtsec.wait .wtk{color:#2f4a78}.wtsec.wait .wtk b{background:#eff3fa;color:#2f4a78}
.wtsec .wtv{color:#384761;min-width:0}
.watchrow.wt2 .wtact{display:flex;flex-direction:column;gap:6px;flex:none}
.watchrow.wt2 .wtact .btn{white-space:nowrap}
.listrow.wtl .wtbadges{margin:0 8px}
.wtlegend{margin-top:10px}
@media (max-width:700px){ .watchrow.wt2{flex-wrap:wrap} .watchrow.wt2 .wtact{flex-direction:row;width:100%;justify-content:flex-end} .wtsec{flex-direction:column;gap:2px} }

/* ─── 任務總覽：展開列與可點名稱 ─── */
.tftb2 td:first-child{white-space:nowrap}
.tfx{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border:0;background:transparent;color:#856f41;font-size:12px;cursor:pointer;margin-right:4px;vertical-align:middle}
.tfname{display:inline-flex;align-items:center;border:0;background:transparent;padding:2px 6px 2px 2px;border-radius:8px;cursor:pointer;font:inherit;color:#25334c;text-align:left}
.tfname:hover{background:#ece8e1}
.tfname b{text-decoration:underline dotted #9c7b33;text-underline-offset:3px}
.tfrow.open td{background:#f7f5f2}
.tfdetail td{background:#f7f5f2;padding:0 12px 12px 40px}
.tfsub{width:100%;border-collapse:collapse;font-size:12.5px;background:#fefefd;border:1px solid #ddd7cb;border-radius:10px;overflow:hidden}
.tfsub th{font-weight:700;color:#3f506f;text-align:left;padding:6px 10px;border-bottom:1px solid #ddd7cb;background:#f1eee9}
.tfsub td{padding:6px 10px;border-bottom:1px solid #e9e6e0}
.tfsub tr.dim td{color:#606e87}
.tfsub tr.tot td{font-weight:700;color:#25334c;background:#f1eee9;border-bottom:0}
.dlrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media (max-width:700px){ .tfdetail td{padding-left:12px} .tftb2 td:first-child{white-space:normal} }

/* ─── 課堂即時監控：計時控制、暫停 ─── */
.sgclock{flex-wrap:wrap}
.sgclock .sgctl{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.sgclock.paused{border-color:#9c7b33;background:#f4f0ea}
.sgclock.paused .sgcv{color:#755f2e}
.stclock.paused{opacity:.75}
.stbt.paused{background:#1b2941;color:#e4d8c4}
.stpause{display:inline-block;margin:6px auto 0;padding:3px 14px;border-radius:999px;background:#cebc99;color:#1b2330;font-weight:700;letter-spacing:.2em;font-size:13px}
.stov .stpause{position:relative;z-index:3}
.sgcancel{margin-left:4px}
/* 右側預覽 */
.flowr .sgpvh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.flowr .pvdev2{margin-left:auto}
.flowr .pvwho{margin:6px 0 8px;display:inline-flex}
.flowr .stpv.empty{padding:16px;text-align:center;color:#424c5d}
.flowr .stpv.nowpv{position:relative}
.flowr .stpv.nowpv .stpause{position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:5}
.flowr .stpv.nowpv.paused .stbig{filter:saturate(.6) brightness(.85)}
.sgpvmore{margin-top:10px;border:1px solid #cdc2ae;border-radius:10px;background:#f9f7f5}
.sgpvmore>summary{cursor:pointer;list-style:none;padding:8px 11px;font-size:12.5px;font-weight:700;color:#384761;display:flex;align-items:center;gap:6px}
.sgpvmore>summary::-webkit-details-marker{display:none}
.sgpvmore>summary::before{content:"▸";color:#856f41}
.sgpvmore[open]>summary::before{content:"▾"}
.sgpvmore .stpv{max-height:420px;overflow:auto}
.flowr.pvpc{flex-basis:520px;max-width:520px}
.flowr.pvpc .stpv .stbig.pv{transform:none;margin-bottom:0;width:100%;max-width:none;padding:22px 26px}
.flowr.pvpc .stpv .stbig.pv .stwho b{font-size:26px}
@media (max-width:1100px){ .flowr.pvpc{flex-basis:100%;max-width:100%} }
/* 處理階段 */
.wbnav.wbnav2{border:0;padding:0;background:transparent;margin:14px 0 6px}
.wbnav2 .wbgrps{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:0;border-radius:14px 14px 0 0;overflow:hidden;border:1px solid #bcb3a4;border-bottom:0}
.wbnav2 .wbgrp{border:0;border-radius:0;padding:14px 10px;font-size:15px;letter-spacing:.1em;text-align:center;border-right:1px solid #bcb3a4;background:#e8e4dd;color:#3f506f}
.wbnav2 .wbgrp:last-child{border-right:0}
.wbnav2 .wbgrp.on{position:relative;color:#f9f7f2}
.wbnav2 .wbgrp.on:after{content:'';position:absolute;left:50%;bottom:-1px;transform:translateX(-50%);border:8px solid transparent;border-bottom-color:#fdfcfb;border-top:0}
.wbnav2 .wbpanel{border:1px solid #bcb3a4;border-top:0;border-radius:0 0 14px 14px;padding:12px 14px;background:#fdfcfb}
.wbnav2 .wbpanel .wbl{margin:0 0 8px;font-size:12px;color:#3c4554;letter-spacing:.06em}
.wbnav2 .wbpanel.g-open{border-color:#b9c5da;background:#f7f9fc}
.wbnav2 .wbpanel.g-live{border-color:#cdc2ae;background:#f9f6f2}
.wbnav2 .wbpanel.g-check{border-color:#b7c8d0;background:#f4f7f9}
.wbnav2 .wbgrps:has(.wbgrp.g-open.on){border-color:#b9c5da}
.wbnav2 .wbgrps:has(.wbgrp.g-live.on){border-color:#cdc2ae}
.wbnav2 .wbgrps:has(.wbgrp.g-check.on){border-color:#b7c8d0}
@media (max-width:600px){ .wbnav2 .wbgrp{padding:11px 4px;font-size:13.5px;letter-spacing:.02em} }

/* ─── 儀表板：待辦卷軸 ─── */
.card.todoscroll{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;position:relative;margin:14px 0}
.todoscroll .tds-roll{display:block;height:18px;border-radius:10px;background:linear-gradient(180deg,#2a3445 0%,#0c1016 45%,#1b2330 70%,#0c1016 100%);box-shadow:0 1px 0 rgba(255,255,255,.12) inset,0 4px 10px rgba(0,0,0,.45);position:relative;z-index:2}
.todoscroll .tds-roll:before,.todoscroll .tds-roll:after{content:'';position:absolute;top:-3px;width:26px;height:24px;border-radius:12px;background:linear-gradient(180deg,#cebc99,#755e2d 55%,#b89854);box-shadow:0 1px 3px rgba(0,0,0,.5)}
.todoscroll .tds-roll:before{left:-8px}.todoscroll .tds-roll:after{right:-8px}
.todoscroll .tds-roll.top{margin:0 8px -7px}
.todoscroll .tds-roll.bot{margin:-7px 8px 0}
.todoscroll .tds-body{position:relative;z-index:1;margin:0 18px;padding:18px 18px 14px;background:linear-gradient(160deg,#141922 0%,#1f2736 55%,#141922 100%)!important;border-left:2px solid #324d7b;border-right:2px solid #324d7b;box-shadow:0 10px 24px rgba(10,14,20,.35)}
.todoscroll .tds-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.todoscroll .tds-title{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:999px;font-size:16px;font-weight:700;letter-spacing:.14em;color:#1b2330;background:linear-gradient(180deg,#e4d8c4 0%,#b89854 55%,#cebc99 100%);box-shadow:0 1px 0 rgba(255,255,255,.5) inset,0 4px 12px rgba(39,60,96,.45);position:relative;overflow:hidden}
.todoscroll .tds-title svg{width:16px;height:16px}
.todoscroll .tds-title .unread{margin-left:2px}
.todoscroll .tds-title:before{content:'';position:absolute;top:-40%;bottom:-40%;left:-60%;width:38%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.7) 50%,rgba(255,255,255,0) 100%);transform:skewX(-18deg);animation:pbsheen 3.2s ease-out infinite}
.todoscroll .tds-sub{font-size:12.5px;color:#cbc6bc}
.todoscroll .tds-page{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:8px;background:linear-gradient(180deg,#f0ede6,#e7e0d3);box-shadow:0 0 0 1px #bcad93,0 1px 0 rgba(255,255,255,.6) inset,0 6px 14px rgba(0,0,0,.35)}
.todor2{display:flex;align-items:center;gap:14px;width:100%;text-align:left;cursor:pointer;border:1px solid #cfc6b5;border-radius:10px;background:#fefefd;padding:10px 12px;font:inherit;color:#25334c;transition:transform .15s,box-shadow .15s}
.todor2:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(37,57,92,.18);border-color:#9c7b33}
.todor2 .tn{min-width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:20px;font-weight:800;color:#cebc99;background:linear-gradient(135deg,#0c1016 0%,#1b2330 45%,#2a3445 55%,#0c1016 100%);box-shadow:0 0 0 1px #9c7b33,0 3px 8px rgba(10,14,20,.35)}
.todor2 .tl{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.todor2 .tl b{font-size:15px}
.todor2 .tl i{font-style:normal;font-size:12px;color:#424c5d}
.todor2 .tg{display:inline-flex;align-items:center;gap:4px;padding:7px 14px;border-radius:999px;font-weight:700;letter-spacing:.08em;color:#1b2330;background:linear-gradient(180deg,#e4d8c4 0%,#b89854 55%,#cebc99 100%);box-shadow:0 1px 0 rgba(255,255,255,.5) inset,0 3px 8px rgba(39,60,96,.35);white-space:nowrap}
.todor2 .tg svg{width:13px;height:13px}
.todoempty{padding:14px;text-align:center;color:#384761;font-size:14px;display:flex;align-items:center;justify-content:center;gap:6px}
@media (max-width:600px){ .todoscroll .tds-body{margin:0 10px;padding:12px 10px 10px} .todor2{flex-wrap:wrap} .todor2 .tg{margin-left:auto} }
/* 進行中任務 */
.athead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 10px}
.atrows{display:flex;flex-direction:column;gap:8px}
.atrow2{display:grid;grid-template-columns:120px 1fr 190px 70px;gap:12px;align-items:center;padding:10px 14px;border:1px solid #ddd9d1;border-radius:12px;background:#fefefd;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.atrow2:hover{border-color:#9c7b33;box-shadow:0 3px 10px rgba(37,57,92,.12)}
.atrow2.soon{border-left:4px solid #b48e3a}
.atrow2.rej{border-left:4px solid #9e2b1c}
.atrow2 .ats{display:flex;flex-direction:column;gap:2px}
.atrow2 .ats b{font-size:14px;color:#25334c;font-variant-numeric:tabular-nums}
.atrow2 .ats i{font-style:normal;font-size:11.5px;color:#424c5d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atrow2 .atm{min-width:0}
.atrow2 .att{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:14px}
.atrow2 .att svg{width:15px;height:15px}
.atc{display:inline-block;font-size:11px;padding:1px 8px;border-radius:999px;background:#ebe6de;color:#384761}
.atc.wait{background:#f4f0e9;color:#324d7b}.atc.rej{background:#f3e9e7;color:#8e3a2c}
.atrow2 .atd{display:flex;flex-direction:column;gap:2px;text-align:right}
.atrow2 .atd b{font-size:13px;color:#25334c;font-variant-numeric:tabular-nums}
.atrow2 .atd i{font-style:normal;font-size:11.5px;color:#424c5d}
.atrow2 .atd.soon b,.atrow2 .atd.soon i{color:#8e3a2c}
.atrow2 .atn{text-align:right;font-size:13px;color:#424c5d}
.atrow2 .atn b{font-size:18px;color:#25334c}
@media (max-width:760px){ .atrow2{grid-template-columns:1fr 1fr;gap:6px 10px} .atrow2 .atm{grid-column:1/3} .atrow2 .atd{text-align:left} }
/* 學院總覽時數 */
.hourbox{margin:8px 0 4px}
.hourkpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}
.hk{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border:1px solid #d7d4cd;border-radius:12px;background:#fefefd}
.hk span{font-size:12px;color:#3f506f}
.hk b{font-size:24px;color:#25334c;font-variant-numeric:tabular-nums}
.hk i{font-style:normal;font-size:11.5px;color:#424c5d}
.hk.used b{color:#755f2e}.hk.left b{color:#2f566a}.hk.left.neg b{color:#8e3a2c}
.hourbar{position:relative;height:18px;border-radius:999px;background:#d9ceb9;border:1px solid #ba9a56;overflow:hidden}
.hourbar i{display:block;height:100%;background:linear-gradient(90deg,#967b41,#cebd9f)}
.hourbar span{position:absolute;left:50%;top:0;transform:translateX(-50%);font-size:11px;line-height:18px;color:#21324e;font-weight:700}
@media (max-width:600px){ .hourkpis{grid-template-columns:1fr} }

/* ─── 學姐端：藏寶金明細、表揚榜未讀、頭像名字 ─── */
.trlink{cursor:pointer}
.card.trdet.hidden{display:none}
.card.trdet h3 .trclose{margin-left:auto}
.card.trdet h3{display:flex;align-items:center;gap:10px}
.gn.pbnew{margin-left:6px;font-size:10.5px;padding:0 7px;line-height:17px;border-radius:999px}
.obring{position:relative}
.obring[data-n]:hover::after{content:attr(data-n);position:absolute;left:50%;bottom:calc(100% + 4px);transform:translateX(-50%);white-space:nowrap;font-size:11px;padding:2px 8px;border-radius:999px;background:#1b2330;color:#cebc99;box-shadow:0 0 0 1px #9c7b33;z-index:5;pointer-events:none}

/* ─── 後台表揚榜：播放與特效收進呈現設定 ─── */
.pbmore{margin-top:10px;border:1px solid #cdc2ae;border-radius:10px;background:#f9f7f5}
.pbmore>summary{cursor:pointer;list-style:none;padding:8px 11px;font-size:13px;font-weight:700;color:#384761;display:flex;align-items:center;gap:6px}
.pbmore>summary::-webkit-details-marker{display:none}
.pbmore>summary::before{content:"▸";color:#856f41}
.pbmore[open]>summary::before{content:"▾"}
.pbmore .pbmorein{padding:4px 11px 10px}
/* 本場任務鈕進面板；暫停標籤 */
.wbnav2 .wbpanel .wbtaskgo{margin-top:10px}
.flowr .stpv.nowpv .stpause{left:auto;right:14px;transform:none;top:10px;font-size:11px;padding:2px 10px}
/* ─── 發放藏寶金：層次 ─── */
.sect{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:700;letter-spacing:.06em;color:#25334c;margin:18px 0 10px;padding:8px 12px;border-left:5px solid #9c7b33;background:linear-gradient(90deg,#f1eee9,transparent)}
.tkrow{border:1px solid #e4e1da!important;border-radius:12px;padding:10px 12px!important;margin-bottom:8px;background:#fefefd}
.tkrow .who b{font-size:15px}
.tkrow .ops .btn.teal,.tkrow .ops .btn.teal:hover{background:linear-gradient(180deg,#e4d8c4 0%,#b89854 55%,#cebc99 100%)!important;color:#1b2330!important;border-color:#9c7b33!important;font-weight:700;padding:9px 16px;font-size:13.5px;box-shadow:0 1px 0 rgba(255,255,255,.5) inset,0 3px 8px rgba(39,60,96,.35)!important}
.tkrow .ops .btn.danger{padding:9px 16px}
.tkrow .ops .btn:not(.teal):not(.danger):not(.gold){background:transparent;border:1px dashed #bcb3a4;color:#3f506f;box-shadow:none}
.tkrow .ops .btn.gold{padding:9px 14px}
.gvhead{padding:12px 14px;border-radius:12px;background:#f1eee9;border:1px solid #ddd7cb}
/* ─── 課程總覽：任務標籤 ─── */
.sesscard .pill{border:0;background:#ece8e1;color:#21324e;box-shadow:0 0 0 1px #cfc6b5 inset;cursor:default;padding:4px 12px 4px 4px;gap:6px;margin:3px 6px 3px 0}
.sesscard .pill .badge{padding:1px 8px;border-radius:999px;font-size:10.5px}
.sesscard .pill svg{width:13px;height:13px;color:#755f2e}

/* ─── 訊息中心：對話裡的信不被壓扁 ─── */
.chatbody .ltrow{flex:0 0 auto}

/* ─── 我的任務：已解鎖的數字不是紅點 ─── */
.mytseg .ncnt{margin-left:6px;font-size:11px;color:#424c5d;font-weight:400}

/* ─── 我的訊息：信箱 ─── */
.card.mailbox{padding:0!important;overflow:visible;background:transparent!important;border:0!important;box-shadow:none!important;margin-top:44px}
.mailbox .mbtop{position:relative;height:0}
.mailbox .mbflag{position:absolute;right:26px;top:-34px;width:6px;height:40px;border-radius:3px;background:linear-gradient(180deg,#cebc99,#755e2d);box-shadow:0 1px 3px rgba(0,0,0,.4);transform-origin:bottom center;transform:rotate(90deg);transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.mailbox .mbflag:before{content:'';position:absolute;left:5px;top:0;width:22px;height:14px;background:linear-gradient(135deg,#9e2b1c,#c74a38);clip-path:polygon(0 0,100% 0,80% 50%,100% 100%,0 100%);box-shadow:0 1px 2px rgba(0,0,0,.3)}
.mailbox .mbflag.up{transform:rotate(0deg)}
.mailbox .dino{position:absolute;top:-38px;left:8%;width:46px;height:27px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.35));animation:dinowalk 14s ease-in-out infinite;z-index:3}
.mailbox .dino .legs.front{transform-origin:44px 40px;animation:dinoleg .55s ease-in-out infinite}
.mailbox .dino .legs.back{transform-origin:43px 38px;animation:dinoleg .55s ease-in-out infinite reverse}
.mailbox .dino .sheen{opacity:0;animation:dinosheen 6s ease-in-out infinite}
@keyframes dinowalk{0%{left:8%;transform:scaleX(1)}46%{left:calc(88% - 46px);transform:scaleX(1)}50%{left:calc(88% - 46px);transform:scaleX(-1)}96%{left:8%;transform:scaleX(-1)}100%{left:8%;transform:scaleX(1)}}
@keyframes dinoleg{0%,100%{transform:rotate(-14deg)}50%{transform:rotate(14deg)}}
@keyframes dinosheen{0%,70%,100%{opacity:0}85%{opacity:1}}
.mailbox .mbbox{position:relative;border-radius:18px 18px 14px 14px;padding:14px 14px 14px;background:linear-gradient(160deg,#141922 0%,#1f2736 55%,#141922 100%)!important;border:1px solid #324d7b;box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 -3px 0 rgba(0,0,0,.35) inset,0 12px 26px rgba(10,14,20,.4)}
.mailbox .mbbox:before{content:'';position:absolute;left:0;right:0;top:0;height:16px;border-radius:18px 18px 0 0;background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0))}
.mailbox .mbhead{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.mailbox .mbtitle{display:inline-flex;align-items:center;gap:8px;padding:6px 16px;border-radius:999px;font-size:15px;font-weight:700;letter-spacing:.14em;color:#1b2330;background:linear-gradient(180deg,#e4d8c4 0%,#b89854 55%,#cebc99 100%);box-shadow:0 1px 0 rgba(255,255,255,.5) inset,0 3px 10px rgba(39,60,96,.45)}
.mailbox .mbtitle svg{width:15px;height:15px}
.mailbox .mbsub{font-size:12px;color:#cbc6bc}
.mailbox .mbslot{height:8px;margin:0 20px 10px;border-radius:4px;background:#05080c;box-shadow:0 1px 0 rgba(255,255,255,.12),inset 0 2px 4px rgba(0,0,0,.8)}
.mailbox .mbrows{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:8px;background:linear-gradient(180deg,#f0ede6,#e7e0d3);box-shadow:0 0 0 1px #bcad93,0 1px 0 rgba(255,255,255,.6) inset,0 6px 14px rgba(0,0,0,.35)}
.mbrow{display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;border:1px solid #cfc6b5;border-radius:10px;background:#fefefd;padding:9px 12px;font:inherit;color:#25334c;transition:transform .15s,box-shadow .15s}
.mbrow:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(37,57,92,.18);border-color:#9c7b33}
.mbrow.hot{border-color:#9c7b33;background:#f9f7f2}
.mbrow .mbi{display:inline-flex;width:32px;height:32px;border-radius:50%;align-items:center;justify-content:center;background:linear-gradient(135deg,#0c1016,#2a3445);box-shadow:0 0 0 1px #9c7b33;color:#cebc99;flex:none}
.mbrow .mbi svg{width:15px;height:15px}
.mbrow .mbt{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}
.mbrow .mbt b{font-size:14.5px}
.mbrow .mbt i{font-style:normal;font-size:11.5px;color:#424c5d}
.mbrow .mbread{font-size:11.5px;color:#424c5d}
.mbrow .mbgo{color:#755f2e;font-size:18px}
.mailbox .mbopen{margin-top:10px;background:transparent;border:1px solid #324d7b;color:#cebc99}
.mailbox .mbopen:hover{background:rgba(206,188,153,.1)}
@media (prefers-reduced-motion:reduce){ .mailbox .dino,.mailbox .dino .legs{animation:none} }

/* ─── 課程回放：一本書 ─── */
.repbook h3{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rpbadge{display:inline-block;font-size:11.5px;padding:2px 10px;border-radius:999px;background:#1b2941;color:#e4d8c4;border:1px solid #9c7b33;font-weight:600}
.rpbadge.up{background:#eff3fa;color:#2f4a78;border-color:#b9c5da}
.rprules{display:flex;flex-wrap:wrap;gap:6px 14px;margin:6px 0 12px;font-size:12.5px;color:#384761}
.rprules span{display:inline-flex;align-items:center;gap:5px}
.rprules svg{width:13px;height:13px;color:#755f2e}
.rpbook{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid #b8a98f;border-radius:12px;background:linear-gradient(90deg,#f1eee9 0%,#e9e3d8 49%,#d8cfbf 50%,#e9e3d8 51%,#f1eee9 100%);box-shadow:0 10px 24px rgba(37,57,92,.18),0 1px 0 rgba(255,255,255,.7) inset;padding:14px 0;overflow:hidden}
.rpbook:before{content:'';position:absolute;left:0;top:0;bottom:0;width:10px;background:linear-gradient(90deg,#755e2d,#b89854);border-radius:12px 0 0 12px}
.rpspine{position:absolute;left:50%;top:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent,#9c7b33 15%,#9c7b33 85%,transparent);transform:translateX(-50%)}
.rppage{padding:12px 18px 14px 22px;display:flex;flex-direction:column;gap:8px;border-bottom:1px dashed #cfc6b5}
.rppage.r{padding-left:26px}
.rppage .rph{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rppage .rph b{font-size:14.5px;color:#25334c}
.rpsts{display:flex;flex-wrap:wrap;gap:6px}
.rpst{display:inline-block;font-size:11.5px;padding:2px 10px;border-radius:999px;background:#ebe6de;color:#384761}
.rpst.ok{background:#e9eef1;color:#2f4c5a}.rpst.no{background:#f3e9e7;color:#8e3a2c}.rpst.wait{background:#f4f0e9;color:#324d7b}.rpst.todo{background:#1b2941;color:#e4d8c4}
.rpacts{display:flex;flex-wrap:wrap;gap:6px}
.dflag{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:#25334c;font-variant-numeric:tabular-nums}
.dflag svg{width:20px;height:14px;fill:#c74a38;transform-origin:left center;animation:flagwave 1.8s ease-in-out infinite;filter:drop-shadow(0 1px 1px rgba(0,0,0,.25))}
.dflag:before{content:'';display:inline-block;width:2px;height:20px;background:#755e2d;border-radius:1px;margin-right:-6px}
@keyframes flagwave{0%,100%{transform:skewY(0deg) scaleX(1)}25%{transform:skewY(-6deg) scaleX(.96)}50%{transform:skewY(0deg) scaleX(1)}75%{transform:skewY(5deg) scaleX(.97)}}
@media (max-width:700px){ .rpbook{grid-template-columns:1fr;background:#f1eee9} .rpspine{display:none} .rppage.r{padding-left:22px} }

/* ─── 上傳按鈕（校長指定 #ccc0a8，不換算） ─── */
/*NO-TINT-START*/
.btn.upl,.btn.upl.gold,.btn.upl.primary{background:linear-gradient(180deg,#ece0b9 0%,#DBCB92 55%,#e6d8a8 100%)!important;color:#2b2416!important;border:1px solid #c4b477!important;font-weight:700;position:relative;overflow:hidden;box-shadow:0 1px 0 rgba(255,255,255,.6) inset,0 -1px 0 rgba(0,0,0,.08) inset,0 4px 10px rgba(120,100,50,.28)!important}
.btn.upl:before{content:'';position:absolute;top:-40%;bottom:-40%;left:-60%;width:38%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.75) 50%,rgba(255,255,255,0) 100%);transform:skewX(-18deg);opacity:0;pointer-events:none}
.btn.upl:hover:before{animation:pbsheen .95s ease-out 1}
.btn.upl:disabled{opacity:.55}
/*NO-TINT-END*/
/* 左側即時資訊的待辦數 */
.navk .gn.todon{margin-left:6px;min-width:18px;text-align:center;font-size:10.5px;padding:0 6px;line-height:17px;border-radius:999px;background:#9e2b1c!important;color:#ffffff!important}

/* ═══ 校長 2026.09.25：課前四步、段落列名單、常用快選捷徑列車 ═══ */
.opsteps.op4 .opstep{flex:1 1 110px}
.sgwhos{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px;align-items:center}
.sgwho{font-size:11.5px;padding:1px 8px;border-radius:999px;background:#eae6de;color:#2b426a;border:1px solid #cfc6b5}
.sgwho.in{background:#e3ebef;color:#2f4c5a;border-color:#a9c0cc}
.sgwho.in:before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:#2f6c8a;margin-right:5px;vertical-align:1px}
.sgwho.out{background:#f1e6e3;color:#8e3a2c;border-color:#d9b3aa;text-decoration:line-through}
.sgl.skipped{opacity:.55}
.sgwhos .badge{font-size:10.5px}
.note.sgmiss{display:flex;gap:10px;align-items:flex-start;margin:10px 0;border-color:#b89854}
.sgmissl{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
/* 列車 */
.card.train{background:linear-gradient(160deg,#141922 0%,#1c2433 55%,#0e1219 100%)!important;border:1px solid #324d7b!important;box-shadow:0 10px 26px rgba(10,14,20,.35),0 1px 0 rgba(255,255,255,.06) inset!important;color:#ece7dd;overflow:hidden;position:relative}
.card.train h3{color:#e4d8c4}
.card.train h3 svg{color:#cebc99}
.trainrow{display:flex;align-items:flex-end;gap:0;overflow-x:auto;padding:14px 6px 6px;scrollbar-width:thin;position:relative;z-index:2}
.trainrow::-webkit-scrollbar{height:6px}.trainrow::-webkit-scrollbar-thumb{background:#3b4b66;border-radius:3px}
.tloco{width:104px;height:56px;flex:none;filter:drop-shadow(0 6px 8px rgba(0,0,0,.5))}
.tloco .tlsheen{animation:tlsheen 3.4s ease-in-out infinite}
@keyframes tlsheen{0%,55%{transform:translateX(-120px)}100%{transform:translateX(130px)}}
.tcar{flex:none;position:relative;display:flex;flex-direction:column;align-items:center;margin-left:12px;background:none;border:0;padding:0;cursor:pointer;font:inherit;color:#ece7dd}
.tcar:before{content:'';position:absolute;left:-12px;top:24px;width:12px;height:6px;background:linear-gradient(180deg,#cebc99,#755e2d);border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.6)}
.tcw{display:flex;align-items:center;gap:7px;padding:11px 13px;border-radius:12px 12px 8px 8px;background:linear-gradient(180deg,#3b4b66 0%,#1b2537 38%,#0b1018 100%);border:1px solid #b89854;box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 -2px 0 rgba(0,0,0,.4) inset,0 8px 16px rgba(0,0,0,.45);position:relative;overflow:hidden;white-space:nowrap;transition:transform .16s,box-shadow .16s}
.tcw:before{content:'';position:absolute;left:8px;right:8px;top:6px;height:7px;border-radius:4px;background:linear-gradient(180deg,rgba(255,255,255,.28),rgba(255,255,255,0));pointer-events:none}
.tcw:after{content:'';position:absolute;top:-40%;bottom:-40%;left:-60%;width:38%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.35) 50%,rgba(255,255,255,0) 100%);transform:skewX(-18deg);opacity:0;pointer-events:none}
.tcar:hover .tcw{transform:translateY(-3px);box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 -2px 0 rgba(0,0,0,.4) inset,0 14px 22px rgba(0,0,0,.55),0 0 0 1px #cebc99}
.tcar:hover .tcw:after{animation:pbsheen .9s ease-out 1}
.tcar:active .tcw{transform:translateY(0)}
.tci{width:23px;height:23px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#e4d8c4,#b89854 60%,#755e2d);color:#1b2330;box-shadow:0 1px 3px rgba(0,0,0,.5)}
.tci svg{width:14px;height:14px}
.tcw b{font-size:13.5px;letter-spacing:.04em}
.tcwheels{display:flex;justify-content:space-between;width:70%;margin-top:-3px}
.tcwheels i{width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#b89854 0 3px,#0b1018 3.5px 5.5px,#b89854 6px 7px);box-shadow:0 2px 3px rgba(0,0,0,.6)}
.trail{height:10px;margin:-2px 0 0;border-top:2px solid #9c7b33;background:repeating-linear-gradient(90deg,#27354e 0 14px,transparent 14px 26px);opacity:.9;position:relative;z-index:1}
.card.train:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 20% 0%,rgba(206,188,153,.16),transparent 55%);pointer-events:none}
@media (max-width:600px){ .tloco{width:86px;height:46px} .tcw{padding:10px 12px} .tcw b{font-size:13px} .tcar{margin-left:10px} .tcar:before{left:-10px;width:10px;top:20px} }

/* ═══ 我的任務：車票 ═══ */
.card.myt.ticket{background:linear-gradient(180deg,#f7f5f2 0%,#ede9e3 100%)!important;border:1px solid #b9ac92!important;border-radius:16px;padding:0!important;overflow:visible;position:relative;box-shadow:0 8px 20px rgba(37,57,92,.16),0 1px 0 rgba(255,255,255,.7) inset!important}
.ticket .tkhead{display:flex;align-items:center;gap:14px;padding:12px 18px;border-radius:15px 15px 0 0;background:linear-gradient(135deg,#0c1016 0%,#1b2330 45%,#2a3445 55%,#0c1016 100%);color:#ece7dd;border-bottom:2px dashed #b89854;position:relative}
.ticket .tkhead:before,.ticket .tkhead:after{content:'';position:absolute;bottom:-9px;width:16px;height:16px;border-radius:50%;background:var(--bg,#eae7e2);z-index:2}
.ticket .tkhead:before{left:-9px}.ticket .tkhead:after{right:-9px}
.ticket .tkbrand{display:flex;flex-direction:column;line-height:1.15;padding-right:14px;border-right:1px solid rgba(206,188,153,.45)}
.ticket .tkbrand i{font-style:normal;font-size:10.5px;letter-spacing:.3em;color:#cbc6bc}
.ticket .tkbrand b{font-size:15px;letter-spacing:.2em;color:#e4d8c4}
.ticket .tkhead h3{margin:0;color:#ece7dd;font-size:17px;flex:1;display:flex;align-items:center;gap:8px}
.ticket .tkhead h3 svg{color:#cebc99}
.ticket .tkright{display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.ticket .tkbar{display:inline-flex;gap:2px;height:22px;align-items:stretch}
.ticket .tkbar i{display:block;background:#ece7dd;opacity:.85}
.ticket .tkno{font-style:normal;font-size:10px;letter-spacing:.16em;color:#cbc6bc;font-variant-numeric:tabular-nums}
.ticket .mytseg.tkstubs{margin:12px 16px 4px;display:inline-flex;gap:0;background:transparent;border:0;padding:0;box-shadow:none}
.ticket .mytseg.tkstubs button{border:1px dashed #a38950;border-radius:10px 10px 0 0;background:#ebe6dd;color:#2b426a;padding:7px 16px;font-weight:700;letter-spacing:.06em;margin-right:6px;position:relative;box-shadow:none}
.ticket .mytseg.tkstubs button.on{background:linear-gradient(180deg,#2a3445,#0c1016);color:#e4d8c4;border-color:#b89854;border-style:solid}
.ticket .mytseg.tkstubs button .ncnt{margin-left:6px;font-size:11px;color:inherit;opacity:.8}
.ticket .myts.tkseg{margin:10px 16px;border:1px solid #cfc6b5;border-radius:12px;background:linear-gradient(180deg,#fefefd,#f3f0ea);position:relative;box-shadow:0 2px 6px rgba(37,57,92,.08)}
.ticket .myts.tkseg:before,.ticket .myts.tkseg:after{content:'';position:absolute;top:50%;width:14px;height:14px;border-radius:50%;background:#ede9e3;border:1px solid #cfc6b5;transform:translateY(-50%);z-index:1}
.ticket .myts.tkseg:before{left:-8px;border-right-color:transparent}.ticket .myts.tkseg:after{right:-8px;border-left-color:transparent}
.ticket .myts.tkseg .mytsh{border-bottom:1px dashed #b9ac92}
.ticket .myts.tkseg.latebox{border-color:#b89854;background:linear-gradient(180deg,#f9f6f2,#ede8df)}
.ticket .tfsr.myr{border:0;border-bottom:1px dashed #c2b8a5;border-radius:0;background:transparent;margin-top:0;padding:10px 6px}
.ticket .mytg .tfsr.myr:last-child{border-bottom:0}
.ticket .tfsr.myr.go:hover{background:rgba(184,152,84,.1)}
.ticket .tfst.stamp{border:2px double currentColor;border-radius:6px;padding:3px 9px;font-weight:800;letter-spacing:.12em;transform:rotate(-6deg);background:transparent;text-transform:uppercase;font-size:11px;position:relative;box-shadow:0 0 0 1px rgba(255,255,255,.5) inset}
.ticket .tfst.stamp.ok{color:#25395c;background:linear-gradient(180deg,#e4d8c4 0%,#b89854 55%,#cebc99 100%);border-color:#755e2d;overflow:hidden;box-shadow:0 1px 0 rgba(255,255,255,.55) inset,0 3px 8px rgba(39,60,96,.35)}
.ticket .tfst.stamp.ok:before{content:'';position:absolute;top:-40%;bottom:-40%;left:-60%;width:38%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.75) 50%,rgba(255,255,255,0) 100%);transform:skewX(-18deg);animation:pbsheen 3.6s ease-out infinite}
.ticket .tfst.stamp.todo{color:#2f4a78}
.ticket .tfst.stamp.wait{color:#324d7b}
.ticket .tfst.stamp.no,.ticket .tfst.stamp.late{color:#8e3a2c;background:transparent}
.ticket .tfst.stamp.off{color:#4b566a;border-style:dashed;transform:none;font-weight:600;letter-spacing:.04em}
.ticket .myts.tkseg .tfst.stamp.late{transform:rotate(-4deg)}
.ticket > p.small{margin:6px 18px 14px;color:#384f75}
.ticket .tkseg .mytsb{padding:0 12px 8px}
@media (max-width:600px){ .ticket .tkhead{padding:10px 12px;gap:10px} .ticket .tkbrand{display:none} .ticket .tkright{display:none} .ticket .mytseg.tkstubs{margin:10px 10px 2px} .ticket .myts.tkseg{margin:8px 10px} .ticket .tfst.stamp{transform:rotate(-3deg);font-size:10.5px} }

/* ═══ 我的進修總覽：黑曜石卷軸、銀軸桿 ═══ */
.card.statscroll{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;position:relative;margin:14px 0}
.statscroll .ss-rod{display:block;height:22px;border-radius:10px;position:relative;z-index:2;background:linear-gradient(180deg,#f4f5f7 0%,#b9bec7 32%,#6f7681 52%,#d7dbe1 78%,#8b919b 100%);box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 4px 10px rgba(0,0,0,.45),0 0 14px rgba(220,226,235,.55);animation:rodglow 3.2s ease-in-out infinite}
.statscroll .ss-rod:before,.statscroll .ss-rod:after{content:'';position:absolute;top:-4px;width:30px;height:28px;border-radius:14px;background:radial-gradient(circle at 40% 35%,#ffffff 0%,#c9ced6 40%,#5f6672 100%);box-shadow:0 1px 3px rgba(0,0,0,.55),0 0 12px rgba(230,236,245,.7)}
.statscroll .ss-rod:before{left:-10px}.statscroll .ss-rod:after{right:-10px}
.statscroll .ss-rod.top{margin:0 10px -8px}
.statscroll .ss-rod.bot{margin:-8px 10px 0}
@keyframes rodglow{0%,100%{box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 4px 10px rgba(0,0,0,.45),0 0 10px rgba(220,226,235,.4)}50%{box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 4px 10px rgba(0,0,0,.45),0 0 24px rgba(240,244,250,.95)}}
.statscroll .ss-body{position:relative;z-index:1;margin:0 20px;padding:22px 20px 18px;border-left:3px solid #0c1016;border-right:3px solid #0c1016;background:linear-gradient(180deg,#f7f5f2,#ede9e3);box-shadow:0 0 0 1px #b89854 inset,0 10px 24px rgba(10,14,20,.35)}
.statscroll .ss-body:before,.statscroll .ss-body:after{content:'';position:absolute;top:0;bottom:0;width:10px;background:linear-gradient(90deg,#2a3445,#0c1016 60%,#1b2330);z-index:2}
.statscroll .ss-body:before{left:-3px}.statscroll .ss-body:after{right:-3px;background:linear-gradient(270deg,#2a3445,#0c1016 60%,#1b2330)}
.statscroll .ss-body h3{margin-top:0}
.statscroll .tfkpis{gap:12px}
.statscroll .tfkp{border:0;background:transparent;padding:6px 4px;display:flex;flex-direction:column;align-items:center;gap:8px}
.statscroll .tfkp b.coin{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:64px;padding:0 10px;border-radius:50%;font-size:17px;font-weight:800;color:#25395c;background:radial-gradient(circle at 35% 30%,#f2ece0 0%,#cebc99 30%,#b89854 62%,#755e2d 100%);box-shadow:0 0 0 3px #9c7b33 inset,0 0 0 5px #e4d8c4 inset,0 4px 10px rgba(39,60,96,.4),0 1px 0 rgba(255,255,255,.6);text-shadow:0 1px 0 rgba(255,255,255,.5);letter-spacing:.02em;position:relative;overflow:hidden;font-variant-numeric:tabular-nums}
.statscroll .tfkp b.coin.wide{border-radius:999px;min-width:120px;height:52px;font-size:15px}
.statscroll .tfkp b.coin:after{content:'';position:absolute;top:-40%;bottom:-40%;left:-60%;width:38%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.7) 50%,rgba(255,255,255,0) 100%);transform:skewX(-18deg);animation:pbsheen 4.2s ease-out infinite}
.statscroll .tfkp span{font-size:11.5px;color:#2b426a;text-align:center}
@media (max-width:600px){ .statscroll .ss-body{margin:0 12px;padding:16px 10px 12px} .statscroll .tfkpis{grid-template-columns:repeat(3,1fr);gap:6px} .statscroll .tfkp b.coin{min-width:54px;height:54px;font-size:14px} .statscroll .tfkp b.coin.wide{min-width:0;width:100%;height:44px;font-size:12.5px;padding:0 4px} .statscroll .tfkp span{font-size:10.5px} }

/* ═══ 可挑戰任務：一道門、每項一扇窗 ═══ */
.card.door{background:linear-gradient(180deg,#1b2330 0%,#0c1016 100%)!important;border:0!important;padding:0 0 18px!important;border-radius:120px 120px 16px 16px;box-shadow:0 0 0 6px #172439,0 0 0 8px #b89854,0 0 0 14px #131a27,0 18px 40px rgba(10,14,20,.5)!important;position:relative;overflow:hidden;color:#ece7dd;margin:22px 8px 18px}
.card.door:before{content:'';position:absolute;inset:14px;border-radius:108px 108px 10px 10px;border:1px solid rgba(206,188,153,.35);pointer-events:none}
.doorarch{position:relative;padding:46px 24px 14px;text-align:center;background:radial-gradient(ellipse at 50% 0%,rgba(206,188,153,.22),transparent 60%)}
.doorarch .keystone{position:absolute;top:8px;left:50%;transform:translateX(-50%);width:24px;height:26px;background:linear-gradient(180deg,#e4d8c4,#b89854 55%,#755e2d);clip-path:polygon(15% 0,85% 0,100% 100%,0 100%);box-shadow:0 2px 4px rgba(0,0,0,.5)}
.doorarch h3{margin:0;justify-content:center;color:#e4d8c4;font-size:18px;letter-spacing:.14em;display:flex;align-items:center;gap:8px}
.doorarch h3 svg{color:#cebc99}
.card.door > .filterbar{margin:0 18px 8px;background:rgba(247,245,242,.08);border:1px solid rgba(206,188,153,.35);border-radius:12px;padding:10px 12px}
.card.door .filterbar .lbl{color:#cbc6bc}
.card.door .fchip{background:rgba(247,245,242,.08);border-color:rgba(206,188,153,.4);color:#ece7dd}
.card.door .fchip.on{background:linear-gradient(180deg,#e4d8c4,#b89854);color:#1b2330;border-color:#cebc99}
.card.door .filterbar select.input{background:#f7f5f2;color:#2b2a27}
.card.door .chgroup{margin:12px 18px}
.card.door .chgroup > .gh.lintel{border-bottom:2px solid #b89854;padding:8px 10px;background:linear-gradient(180deg,#2a3445,#1b2330);border-radius:8px 8px 0 0;box-shadow:0 2px 0 #755e2d}
.card.door .gh .gt{color:#e4d8c4}.card.door .gh .gd,.card.door .gh .gc{color:#cbc6bc}.card.door .gh svg{color:#cebc99}
.card.door > p.small,.card.door .chgroup > p.small{color:#cbc6bc;margin:6px 18px}
.card.door .chcard.win{padding:0 0 12px;overflow:hidden;border:2px solid #324d7b;border-radius:14px 14px 10px 10px;background:linear-gradient(180deg,#f7f5f2,#eae4d9);box-shadow:0 0 0 1px #172439,0 8px 18px rgba(0,0,0,.45);gap:6px}
.card.door .chcard.win > .ct,.card.door .chcard.win > .camt,.card.door .chcard.win > .cmeta,.card.door .chcard.win > div{margin:0 12px}
.card.door .chcard.win > .ct{margin-top:6px}
.wpane{position:relative;height:104px;margin:0!important;background:radial-gradient(ellipse at 50% 120%,#3b4b66,#0c1016 70%);overflow:hidden;perspective:700px;border-bottom:3px solid #755e2d}
.wpane .wsky{position:absolute;inset:6px 10px 0;border-radius:60px 60px 0 0;background:linear-gradient(180deg,#f4efe6 0%,#e4d8c4 40%,#c1ad89 100%);box-shadow:0 0 0 2px #b89854,0 0 0 5px #1b2330,0 0 24px rgba(228,216,196,.35) inset}
.wpane .wsky:before{content:'';position:absolute;left:50%;top:38%;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.95),rgba(255,255,255,0) 62%)}
.wpane .wsky:after{content:'';position:absolute;inset:0;border-radius:60px 60px 0 0;background:linear-gradient(90deg,transparent 0 calc(50% - 1px),#8f7233 calc(50% - 1px) calc(50% + 1px),transparent calc(50% + 1px)),linear-gradient(180deg,transparent 0 44%,#8f7233 44% calc(44% + 2px),transparent calc(44% + 2px));opacity:.9}
.wpane .sh{position:absolute;top:6px;bottom:0;width:calc(50% - 10px);background:linear-gradient(90deg,#2a3445 0%,#171e2b 45%,#0c1016 100%);border:1px solid #b89854;box-shadow:0 0 0 1px rgba(0,0,0,.6) inset,0 6px 14px rgba(0,0,0,.5);transition:transform .55s cubic-bezier(.4,0,.2,1);backface-visibility:hidden;overflow:hidden}
.wpane .sh:before{content:'';position:absolute;inset:8px 9px 8px;border:1px solid rgba(206,188,153,.6);border-radius:40px 40px 3px 3px;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,0) 40%,rgba(0,0,0,.25))}
.wpane .sh:after{content:'';position:absolute;top:50%;width:8px;height:8px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f2ece0,#b89854 55%,#755e2d);box-shadow:0 1px 2px rgba(0,0,0,.6);transform:translateY(-50%)}
.wpane .sh.l{left:10px;transform-origin:left center;border-radius:40px 0 0 0}
.wpane .sh.l:after{right:6px}
.wpane .sh.r{right:10px;transform-origin:right center;border-radius:0 40px 0 0;background:linear-gradient(270deg,#2a3445 0%,#171e2b 45%,#0c1016 100%)}
.wpane .sh.r:after{left:6px}
.wpane .sh i{position:absolute;left:14px;right:14px;height:1px;background:rgba(206,188,153,.35)}
.wpane .sh i:nth-child(1){top:30%}.wpane .sh i:nth-child(2){top:48%}.wpane .sh i:nth-child(3){top:66%}
.wpane .wsill{position:absolute;left:0;right:0;bottom:0;height:9px;background:linear-gradient(180deg,#b89854,#755e2d 55%,#324d7b);box-shadow:0 -1px 0 rgba(255,255,255,.35) inset;z-index:4}
.wpane .wstamp{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%) rotate(-10deg);padding:4px 12px;border:2px double #25395c;border-radius:6px;color:#25395c;font-weight:800;letter-spacing:.16em;background:rgba(247,243,236,.88);box-shadow:0 2px 6px rgba(0,0,0,.35);z-index:5;white-space:nowrap}
.wpane .wstamp.wait{color:#324d7b;border-color:#324d7b}
.wpane .wglow{position:absolute;left:50%;top:6px;bottom:0;width:6px;margin-left:-3px;background:linear-gradient(180deg,rgba(242,231,212,.0),rgba(242,231,212,.9),rgba(242,231,212,.0));filter:blur(3px);opacity:0;transition:opacity .4s;z-index:2}
.wpane .wlock{position:absolute;left:50%;top:44%;width:22px;height:26px;margin:-13px 0 0 -11px;z-index:5;display:none}
.wpane .wlock:before{content:'';position:absolute;left:4px;top:0;width:14px;height:12px;border:3px solid #b89854;border-bottom:0;border-radius:8px 8px 0 0;box-sizing:border-box}
.wpane .wlock:after{content:'';position:absolute;left:0;top:10px;width:22px;height:16px;border-radius:4px;background:linear-gradient(180deg,#e4d8c4,#b89854 60%,#755e2d);box-shadow:0 2px 4px rgba(0,0,0,.5)}
.wpane .wcoins{position:absolute;inset:0;pointer-events:none;z-index:4;display:none}
.wpane .wcoins i{position:absolute;left:50%;bottom:14px;width:12px;height:12px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f2ece0,#cebc99 45%,#8f7233);box-shadow:0 0 0 1px #755e2d inset,0 1px 3px rgba(0,0,0,.4);opacity:0;animation:coinpop 2.6s ease-out infinite}
.wpane .wcoins i:nth-child(1){animation-delay:0s;--dx:-34px}.wpane .wcoins i:nth-child(2){animation-delay:.35s;--dx:-12px}.wpane .wcoins i:nth-child(3){animation-delay:.7s;--dx:12px}.wpane .wcoins i:nth-child(4){animation-delay:1.05s;--dx:34px}.wpane .wcoins i:nth-child(5){animation-delay:1.4s;--dx:0px}
@keyframes coinpop{0%{transform:translate(-50%,0) scale(.6);opacity:0}12%{opacity:1}45%{transform:translate(calc(-50% + var(--dx)),-52px) scale(1);opacity:1}80%{transform:translate(calc(-50% + var(--dx)*1.3),-6px) scale(.95);opacity:1}100%{transform:translate(calc(-50% + var(--dx)*1.3),0) scale(.9);opacity:0}}
.chcard.w-open .wpane .sh.l{transform:rotateY(-152deg)}
.chcard.w-open .wpane .sh.r{transform:rotateY(152deg)}
.chcard.w-open .wpane .wcoins{display:block}
.chcard.w-ajar .wpane .sh.l{transform:rotateY(-42deg)}
.chcard.w-ajar .wpane .sh.r{transform:rotateY(42deg)}
.chcard.w-closed .wpane .wglow{opacity:.85;animation:wglow 2.4s ease-in-out infinite}
@keyframes wglow{0%,100%{opacity:.45}50%{opacity:1}}
.chcard.w-closed.actionable:hover .wpane .sh.l{transform:rotateY(-30deg)}
.chcard.w-closed.actionable:hover .wpane .sh.r{transform:rotateY(30deg)}
.chcard.w-shut .wpane .sh{filter:brightness(.7) saturate(.5)}
.chcard.w-shut .wpane .wlock{display:block}
.chcard.w-shut.w-late .wpane .sh{filter:brightness(.5) saturate(.3)}
.card.door .chcard.locked{opacity:.88}
.card.door .chcard.done{background:linear-gradient(180deg,#f7f5f2,#eae4d9);border-color:#b89854}
.card.door .chcard.late{border-color:#8e3a2c;background:linear-gradient(180deg,#f7f5f2,#eae4d9)}
@media (max-width:600px){ .card.door{border-radius:70px 70px 14px 14px;margin:16px 2px 14px;box-shadow:0 0 0 4px #172439,0 0 0 6px #b89854,0 0 0 10px #131a27,0 14px 30px rgba(10,14,20,.5)!important} .card.door:before{inset:10px;border-radius:62px 62px 8px 8px} .doorarch{padding:40px 14px 10px} .card.door > .filterbar,.card.door .chgroup{margin-left:10px;margin-right:10px} .wpane{height:92px} }
@media (max-width:600px){ .ticket .tfsr.myr{flex-wrap:wrap;gap:6px 10px} .ticket .tfsr.myr .tft{flex:1 1 70%} .ticket .tfsr.myr .tfamt{margin-left:auto} .ticket .tfst.stamp{margin-left:auto;transform:rotate(-2deg)} }

/* ═══ 校長 2026.09.25（二）：信箱場景、滑板恐龍、仙人掌、大門、寶箱、淺色軌道 ═══ */
.card.mailbox.mb2{margin-top:14px}
.mb2 .mbscene{position:relative;height:172px;margin:0 6px -14px;overflow:hidden;border-radius:16px 16px 0 0;background:linear-gradient(180deg,#0c1016 0%,#1b2330 55%,#2a3445 100%);box-shadow:0 0 0 1px #324d7b inset}
.mb2 .mbsky{position:absolute;inset:0;background:radial-gradient(ellipse at 70% 10%,rgba(206,188,153,.22),transparent 55%),radial-gradient(circle at 18% 22%,rgba(228,216,196,.9) 0 1px,transparent 2px),radial-gradient(circle at 42% 12%,rgba(228,216,196,.7) 0 1px,transparent 2px),radial-gradient(circle at 86% 30%,rgba(228,216,196,.8) 0 1px,transparent 2px),radial-gradient(circle at 60% 26%,rgba(228,216,196,.6) 0 1px,transparent 2px)}
.mb2 .mbground{position:absolute;left:0;right:0;bottom:0;height:22px;background:linear-gradient(180deg,#755e2d,#324d7b);border-top:2px solid #b89854}
.mb2 .mbground:before{content:'';position:absolute;left:0;right:0;top:8px;height:1px;background:repeating-linear-gradient(90deg,rgba(228,216,196,.35) 0 18px,transparent 18px 34px)}
.mb2 .mbcactus{position:absolute;bottom:20px;width:40px;height:60px}
.mb2 .mbcactus.l{left:22px}.mb2 .mbcactus.r{right:22px;width:30px;height:46px;opacity:.9}
.mb2 .mbcactus .cactus{width:100%;height:100%;filter:drop-shadow(0 3px 4px rgba(0,0,0,.45))}
.mb2 .mbpost{position:absolute;right:22%;bottom:18px;width:110px;height:126px}
.mb2 .mbsvg{width:100%;height:100%;filter:drop-shadow(0 8px 12px rgba(0,0,0,.5))}
.mb2 .mbdoor{transform-origin:20px 96px;transition:transform .6s}
.mb2 .mbletters{opacity:0;transform:translate(6px,10px);transition:opacity .5s,transform .5s}
.mb2.hot .mbdoor{transform:rotateX(0) rotate(-70deg)}
.mb2.hot .mbletters{opacity:1;transform:translate(0,0)}
.mb2 .mbflag{position:absolute;right:-6px;top:6px;width:26px;height:40px;transform-origin:19px 36px;transform:rotate(90deg);transition:transform .6s cubic-bezier(.34,1.4,.64,1)}
.mb2 .mbflag.up{transform:rotate(0deg)}
.mb2 .mbflag svg{width:100%;height:100%;filter:drop-shadow(0 2px 3px rgba(0,0,0,.5))}
.mb2 .mbflag.up .fl{animation:flagwave 1.6s ease-in-out infinite;transform-origin:21px 8px}
.mb2 .dinoride{position:absolute;bottom:14px;left:74px;width:112px;height:82px;animation:skate 11s ease-in-out infinite;will-change:transform}
.mb2 .dinoride .dino{width:100%;height:100%;filter:drop-shadow(0 4px 5px rgba(0,0,0,.5))}
.mb2 .dinoride .dbody{transform-origin:70px 80px;animation:dinobob 1.1s ease-in-out infinite}
.mb2 .dinoride .dwheel{transform-box:fill-box;transform-origin:center;animation:wheelspin .7s linear infinite}
.mb2 .dinoride .dleg.f{transform-origin:82px 70px;animation:dinokick 2.2s ease-in-out infinite}
@keyframes skate{0%{transform:translateX(0) scaleX(1)}44%{transform:translateX(var(--run,420px)) scaleX(1)}50%{transform:translateX(var(--run,420px)) scaleX(-1)}94%{transform:translateX(0) scaleX(-1)}100%{transform:translateX(0) scaleX(1)}}
@keyframes dinobob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-1.5px) rotate(-1.2deg)}}
@keyframes wheelspin{to{transform:rotate(360deg)}}
@keyframes dinokick{0%,70%,100%{transform:rotate(0)}80%{transform:rotate(-28deg) translateX(3px)}90%{transform:rotate(12deg)}}
.mb2 .mbbox{margin-top:0;border-radius:0 0 14px 14px}
.mb2 .mbbox:before{display:none}
@media (max-width:600px){ .mb2 .mbscene{height:150px} .mb2 .mbpost{width:92px;height:106px;right:14%} .mb2 .mbcactus.l{left:8px;width:32px;height:48px} .mb2 .mbcactus.r{right:6px;width:24px;height:36px} .mb2 .dinoride{width:84px;height:62px;left:44px} }
@media (prefers-reduced-motion:reduce){ .mb2 .dinoride,.mb2 .dinoride *{animation:none!important} }

/* 本場簽到：大門 */
.hero .card.signcard.gate{background:linear-gradient(180deg,#1b2330 0%,#0c1016 100%)!important;border:0!important;padding:0!important;border-radius:130px 130px 18px 18px;box-shadow:0 0 0 5px #172439,0 0 0 7px #b89854,0 0 0 12px #131a27,0 16px 36px rgba(10,14,20,.45)!important;position:relative;overflow:hidden;margin:16px 6px 0}
.signcard.gate:before{content:'';position:absolute;inset:12px;border-radius:118px 118px 10px 10px;border:1px solid rgba(206,188,153,.4);pointer-events:none;z-index:1}
.signcard.gate .gatetop{position:relative;height:74px}
.signcard.gate .fanlight{position:absolute;left:50%;top:14px;width:150px;height:75px;margin-left:-75px;border-radius:150px 150px 0 0;background:repeating-conic-gradient(from 180deg at 50% 100%,#e4d8c4 0 4deg,#8f7233 4deg 6deg,transparent 6deg 24deg);border:2px solid #b89854;border-bottom:0;box-shadow:0 0 22px rgba(228,216,196,.35),0 0 0 3px #0c1016 inset;background-color:#2a3445}
.signcard.gate .fanlight:after{content:'';position:absolute;left:50%;bottom:0;width:36px;height:18px;margin-left:-18px;border-radius:36px 36px 0 0;background:radial-gradient(circle at 50% 100%,#f2ece0,#cebc99 70%)}
.signcard.gate .keystone{position:absolute;left:50%;top:0;width:26px;height:22px;transform:translateX(-50%);background:linear-gradient(180deg,#e4d8c4,#b89854 55%,#755e2d);clip-path:polygon(15% 0,85% 0,100% 100%,0 100%);box-shadow:0 2px 4px rgba(0,0,0,.5);z-index:2}
.signcard.gate .lamp{position:absolute;top:40px;width:14px;height:22px;border-radius:7px 7px 3px 3px;background:linear-gradient(180deg,#f2ece0,#cebc99 60%,#755e2d);box-shadow:0 0 16px 4px rgba(228,216,196,.55);animation:lampglow 2.8s ease-in-out infinite}
.signcard.gate .lamp.l{left:26px}.signcard.gate .lamp.r{right:26px;animation-delay:1.4s}
.signcard.gate .lamp:before{content:'';position:absolute;left:50%;top:-8px;width:2px;height:8px;margin-left:-1px;background:#b89854}
@keyframes lampglow{0%,100%{box-shadow:0 0 12px 3px rgba(228,216,196,.45)}50%{box-shadow:0 0 22px 7px rgba(228,216,196,.8)}}
.signcard.gate .gatein{position:relative;margin:0 22px 22px;padding:16px 18px 18px;border-radius:70px 70px 10px 10px;background:linear-gradient(180deg,#f7f5f2,#ece8e1);box-shadow:0 0 0 2px #b89854,0 0 0 6px #0c1016,0 0 0 7px #324d7b,0 10px 24px rgba(0,0,0,.45);z-index:1}
.signcard.gate .gatein:before{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:linear-gradient(180deg,transparent,rgba(143,114,51,.35) 20%,rgba(143,114,51,.35) 80%,transparent);pointer-events:none}
.signcard.gate .gatein > h3.gateh{justify-content:center;text-align:center;margin-top:6px;letter-spacing:.14em}
.signcard.gate .gatein > .desc{text-align:center}
@media (max-width:600px){ .hero .card.signcard.gate{border-radius:90px 90px 14px 14px;margin:12px 2px 0;box-shadow:0 0 0 4px #172439,0 0 0 6px #b89854,0 0 0 10px #131a27,0 14px 30px rgba(10,14,20,.45)!important} .signcard.gate:before{inset:9px;border-radius:82px 82px 8px 8px} .signcard.gate .gatetop{height:64px} .signcard.gate .fanlight{width:120px;height:60px;margin-left:-60px} .signcard.gate .gatein{margin:0 12px 14px;padding:12px 10px 14px;border-radius:50px 50px 8px 8px} .signcard.gate .lamp.l{left:12px}.signcard.gate .lamp.r{right:12px} }

/* 寶箱 */
.statscroll .mywal.chestbox{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:170px;text-align:center}
.statscroll .chestwrap{width:128px;height:102px;flex:none;margin-bottom:-6px}
.statscroll .chest{width:100%;height:100%;filter:drop-shadow(0 6px 10px rgba(0,0,0,.35))}
.statscroll .chest .chglow{animation:chestglow 2.6s ease-in-out infinite;transform-origin:70px 62px}
.statscroll .chest .chlid{transform:none}
.statscroll .chest .chspark path{animation:sparkle 2.2s ease-in-out infinite}
.statscroll .chest .chspark path:nth-child(2){animation-delay:.7s}.statscroll .chest .chspark path:nth-child(3){animation-delay:1.3s}
@keyframes chestglow{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}
@keyframes sparkle{0%,100%{opacity:.2;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
@media (max-width:600px){ .statscroll .chestwrap{width:96px;height:76px} .statscroll .mywal.chestbox{min-width:0;width:100%} }

/* 常用快選捷徑：淺色軌道 */
.trail{border-top:2px solid #cebc99;background:repeating-linear-gradient(90deg,#e4d8c4 0 14px,transparent 14px 26px);opacity:.85}
.tcwheels i{background:radial-gradient(circle at 50% 50%,#e4d8c4 0 3px,#1b2330 3.5px 5.5px,#cebc99 6px 7px)}

/* ═══ 校長 2026.09.25（三）：Zoom 鈕、金庫看板、使用紀錄、下單截圖一顆鈕 ═══ */
/*NO-TINT-START*/
.btn.zoomb,.btn.zoomb.gold,.btn.zoomb.ext,a.btn.zoomb{background:linear-gradient(180deg,#3f7bd6 0%,#1f4fa8 55%,#173d86 100%)!important;color:#fff!important;border:2px solid #ffffff!important;box-shadow:0 0 0 1px #1a3f80,0 1px 0 rgba(255,255,255,.55) inset,0 -2px 0 rgba(0,0,0,.18) inset,0 6px 14px rgba(23,61,134,.38)!important;font-weight:700;letter-spacing:.04em;position:relative;overflow:hidden;text-shadow:0 1px 0 rgba(0,0,0,.25)}
.btn.zoomb:before{content:'';position:absolute;left:6px;right:6px;top:3px;height:42%;border-radius:8px 8px 40% 40%;background:linear-gradient(180deg,rgba(255,255,255,.42),rgba(255,255,255,.04));pointer-events:none}
.btn.zoomb:after{content:'';position:absolute;top:-40%;bottom:-40%;left:-60%;width:38%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.55) 50%,rgba(255,255,255,0) 100%);transform:skewX(-18deg);opacity:0;pointer-events:none}
.btn.zoomb:hover:after{animation:pbsheen .9s ease-out 1}
.btn.zoomb:hover{filter:brightness(1.06)}
.btn.zoomb svg{color:#fff}
/*NO-TINT-END*/
.btn.upl.waitb,.btn.upl.okb{opacity:1!important;filter:none;cursor:default}
.btn.upl.waitb{background:linear-gradient(180deg,#ebe6dc,#d2cbbd)!important;color:#2b426a!important;border-color:#b49c67!important}
.btn.upl.okb{background:linear-gradient(180deg,#e6edf0,#cfdbe1)!important;color:#2f4c5a!important;border-color:#a9c0cc!important}
.rpbadge.wait{background:#ebe6dc;color:#2b426a;border-color:#b49c67}
.resacts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
/* 金庫看板 */
.lgvault{display:flex;align-items:center;gap:18px;margin:6px 0 14px;padding:14px 18px;border-radius:16px;background:linear-gradient(160deg,#141922 0%,#1f2736 55%,#141922 100%);box-shadow:0 0 0 1px #324d7b,0 10px 24px rgba(10,14,20,.35),0 1px 0 rgba(255,255,255,.06) inset;color:#ece7dd;position:relative;overflow:hidden}
.lgvault:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 15% 0%,rgba(206,188,153,.18),transparent 55%);pointer-events:none}
.lgv-door{width:74px;height:74px;flex:none;border-radius:50%;background:radial-gradient(circle at 40% 35%,#3b4b66,#0c1016 70%);box-shadow:0 0 0 4px #b89854,0 0 0 7px #131a27,0 0 0 8px #755e2d,0 6px 14px rgba(0,0,0,.5);position:relative}
.lgv-door:before{content:'';position:absolute;inset:14px;border-radius:50%;border:2px solid rgba(206,188,153,.6)}
.lgv-dial{position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;background:conic-gradient(#e4d8c4 0 25%,#755e2d 25% 50%,#e4d8c4 50% 75%,#755e2d 75% 100%);box-shadow:0 0 0 3px #1b2330,0 0 0 4px #b89854;animation:dialspin 9s linear infinite}
@keyframes dialspin{to{transform:rotate(360deg)}}
.lgv-main{flex:1;min-width:0}
.lgv-k{font-size:12px;letter-spacing:.2em;color:#cbc6bc}
.lgv-v{font-size:34px;font-weight:800;line-height:1.15;color:#e4d8c4;font-variant-numeric:tabular-nums;text-shadow:0 1px 0 #755e2d,0 3px 8px rgba(0,0,0,.45)}
.lgv-v2{font-size:22px;font-weight:800;color:#e4d8c4;font-variant-numeric:tabular-nums}
.lgv-sub{font-size:12px;color:#cbc6bc;margin-top:2px}
.lgv-q{padding-left:18px;border-left:1px solid rgba(206,188,153,.35);min-width:150px}
@media (max-width:600px){ .lgvault{flex-wrap:wrap;gap:12px;padding:12px} .lgv-door{width:54px;height:54px} .lgv-v{font-size:26px} .lgv-q{border-left:0;padding-left:0;width:100%} }
/* 使用紀錄 */
.usecol{white-space:nowrap}
.usebtn{padding:3px 8px!important;font-size:12px!important}
.uselist{display:flex;flex-direction:column;gap:6px;margin:6px 0}
.userow{display:grid;grid-template-columns:110px 1fr 90px;gap:10px;align-items:center;font-size:13px}
.usek{font-weight:700;color:#2f4a78}
.usebar{height:10px;border-radius:5px;background:#eae6de;overflow:hidden;box-shadow:0 1px 0 rgba(255,255,255,.6) inset}
.usebar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#b89854,#cebc99)}
.usev{text-align:right;font-variant-numeric:tabular-nums;color:#2b426a}
@media (max-width:600px){ .userow{grid-template-columns:90px 1fr 70px;font-size:12px} }

/* ═══ 校長 2026.09.25（四）：大門去線、恐龍貼地與轉身、郵筒噴信、學員進度四格 ═══ */
.signcard.gate .gatein:before{display:none}
/* 恐龍：JS 控位置，CSS 只管姿勢 */
.mb2 .dinoride{animation:none!important;left:0;bottom:16px;width:112px;height:82px;will-change:transform}
.mb2 .dino{position:static!important;top:auto!important;left:auto!important;width:100%!important;height:100%!important;animation:none!important;display:block}
.mb2 .dinoride .dface{display:none}
.mb2 .dinoride.face .dino:not(.dface){display:none}
.mb2 .dinoride.face .dface{display:block}
.mb2 .dinoride.back .dino:not(.dface){transform:scaleX(-1)}
.mb2 .dinoride.hop .dino:not(.dface){animation:dinohop .52s cubic-bezier(.3,0,.2,1) 1!important}
@keyframes dinohop{0%,100%{translate:0 0}45%{translate:0 -18px}60%{translate:0 -16px}}
.mb2 .dinoride .dface .dhand{transform-origin:100px 66px}
.mb2 .dinoride.ya .dface .dhand{animation:yawave .9s ease-in-out 1}
@keyframes yawave{0%{transform:rotate(0)}30%{transform:rotate(-22deg)}55%{transform:rotate(8deg)}80%{transform:rotate(-16deg)}100%{transform:rotate(0)}}
.mb2 .dinoride.face .dface{animation:facepop .35s ease-out 1}
@keyframes facepop{0%{transform:scale(.92)}100%{transform:scale(1)}}
@media (max-width:600px){ .mb2 .dinoride{width:84px;height:62px;left:0} }
/* 郵筒：右邊一點、平常關著、定時噴信 */
.mb2 .mbpost{right:12%}
.mb2 .mbdoor{transform-origin:20px 96px;transition:transform .45s cubic-bezier(.4,0,.2,1)}
.mb2.hot .mbdoor{transform:none}
.mb2 .mbpost.burst .mbdoor{transform:rotate(-78deg)}
.mb2 .mbletters{opacity:0;transform:translate(6px,10px);transition:opacity .3s,transform .3s}
.mb2.hot .mbletters{opacity:0;transform:translate(6px,10px)}
.mb2 .mbpost.burst .mbletters{opacity:1;transform:translate(0,0);transition-delay:.35s}
.mb2 .mbfly{position:absolute;left:22px;top:52px;width:0;height:0;pointer-events:none}
.mb2 .mbfly i{position:absolute;left:-11px;top:-8px;width:22px;height:15px;border-radius:2px;background:linear-gradient(180deg,#f7f5f2,#e4d8c4);border:1px solid #755e2d;box-shadow:0 1px 2px rgba(0,0,0,.45);opacity:0;--ang:-40deg;--dist:110px;--rot:20deg;--d:0s}
.mb2 .mbfly i:before{content:'';position:absolute;left:2px;right:2px;top:1px;height:6px;border-left:1px solid #755e2d;border-right:1px solid #755e2d;border-bottom:1px solid #755e2d;border-radius:0 0 2px 2px;opacity:.8}
.mb2 .mbpost.burst .mbfly i{animation:mbfly 1.9s cubic-bezier(.2,.6,.3,1) var(--d) 1}
.mb2 .mbfly i:nth-child(1){--ang:-92deg;--dist:120px;--rot:-30deg;--d:.35s}
.mb2 .mbfly i:nth-child(2){--ang:-120deg;--dist:100px;--rot:40deg;--d:.42s}
.mb2 .mbfly i:nth-child(3){--ang:-150deg;--dist:130px;--rot:-15deg;--d:.5s}
.mb2 .mbfly i:nth-child(4){--ang:-105deg;--dist:150px;--rot:25deg;--d:.58s}
.mb2 .mbfly i:nth-child(5){--ang:-135deg;--dist:90px;--rot:-45deg;--d:.64s}
.mb2 .mbfly i:nth-child(6){--ang:-165deg;--dist:110px;--rot:12deg;--d:.72s}
.mb2 .mbfly i:nth-child(7){--ang:-80deg;--dist:95px;--rot:-22deg;--d:.8s}
.mb2 .mbfly i:nth-child(8){--ang:-118deg;--dist:135px;--rot:35deg;--d:.88s}
@keyframes mbfly{0%{opacity:0;transform:rotate(var(--ang)) translateX(0) rotate(calc(-1 * var(--ang))) rotate(0)}12%{opacity:1}70%{opacity:1}100%{opacity:0;transform:rotate(var(--ang)) translateX(var(--dist)) rotate(calc(-1 * var(--ang))) rotate(var(--rot)) translateY(26px)}}
.mb2 .mbpost.burst .mbflag.up .fl{animation:flagwave .5s ease-in-out 3}
.mb2 .mbpost.burst .mbsvg{animation:mbshake .5s ease-in-out 1}
@keyframes mbshake{0%,100%{transform:rotate(0)}30%{transform:rotate(-2deg)}60%{transform:rotate(1.5deg)}}
@media (max-width:600px){ .mb2 .mbpost{right:8%} .mb2 .mbfly i{width:16px;height:11px} }
/* 學員進度四格 */
.stacts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:4px 0 14px}
.stact{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;border-radius:14px;border:1px solid #cfc6b5;background:linear-gradient(180deg,#fefefd,#f1eee9);cursor:pointer;font:inherit;text-align:left;color:#2b2a27;transition:transform .15s,box-shadow .15s;position:relative}
.stact:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(37,57,92,.16);border-color:#9c7b33}
.stact .sti{position:absolute;right:12px;top:12px;width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#eae6de;color:#755e2d}
.stact .sti svg{width:15px;height:15px}
.stact b{font-size:30px;line-height:1.1;color:#2f4a78;font-variant-numeric:tabular-nums}
.stact .stl{font-size:14px;font-weight:800;color:#21324e}
.stact i{font-style:normal;font-size:11.5px;color:#384f75}
.stact.hot{border-color:#b3432c;background:linear-gradient(180deg,#fdfcfb,#f3f1ec)}
.stact.hot b{color:#9e2b1c}
.stact.hot .sti{background:#9e2b1c;color:#ffffff}
.stact.k-zero.hot .sti{background:#1b2330}
@media (max-width:700px){ .stacts{grid-template-columns:repeat(2,1fr)} .stact b{font-size:24px} }
.stelig{white-space:nowrap}
.stelig .lamps{margin-bottom:4px}
.duefold{margin-top:14px}
.duebody{padding:10px 4px 0}
.stgbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 10px}
.stgrow .btn{margin-left:6px}
.listrow.redo{border-left:4px solid #9e2b1c;background:linear-gradient(90deg,#fdf3f0,#fefefd)}
.subhist{margin:2px 0 4px;color:#8e3a2c}

/* ── 場次獎項路徑 ── */
.awfixbar{margin:12px 0 4px;padding:10px 12px;border:1px dashed var(--line,#bdb29d);border-radius:10px;display:flex;flex-direction:column;gap:8px}
.awfixbar .btn{align-self:flex-start}
.awnote{margin:6px 0 10px}

/* ── 測試舞台 ── */
.sttestbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 12px;margin:0 0 12px;border:1px dashed var(--line,#bdb29d);border-radius:10px}
.sttestbar code{font-size:12px;padding:1px 5px;border-radius:5px;background:rgba(0,0,0,.06)}
.sttestcard .deflist .v select{max-width:320px}
body.sttest .stov,body.sttest .voteov{z-index:9000}
/*NO-TINT-START*/
.badge[style*="#b28e41"]{color:#101b2e!important}
/*NO-TINT-END*/

/* ── 投票即時與公布 ── */
.vopenbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 14px;margin:0 0 12px;border-radius:12px;background:linear-gradient(90deg,#2a3b58,#1c2a42);color:#e4d8c4;border:1px solid #5f708c}
.vopenbar .vob1{font-weight:700}.vopenbar .vob2{opacity:.9}
.vlive{padding:12px 0;border-top:1px dashed var(--line,#bdb29d)}.vlive:first-child{border-top:0}
.vlive .vlh{font-weight:700;display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px}
.vlive .vlrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0}.vlive .vlrow.wait b{color:#8a2e22}
.vlive .pbf{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:rgba(0,0,0,.05);font-size:13px}
.voteov.hot .voteovin{box-shadow:0 0 0 3px rgba(172,137,62,.35)}
.voteov.last .voteovin{animation:vlast .5s ease-in-out infinite alternate}
@keyframes vlast{from{box-shadow:0 0 0 3px rgba(190,50,40,.35)}to{box-shadow:0 0 0 10px rgba(190,50,40,.08)}}
.voteov.vpub .voteovin{max-height:90vh;overflow:auto}
.vbal td,.vbal th{white-space:nowrap}
.voteov.vpub .voteovin{background:transparent;padding:0}
.vpubin{background:#f9f7f4;border:1px solid #bdb29d;border-radius:16px;padding:16px 14px;color:#1f2d44;max-height:88vh;overflow:auto}
.vpubin .stmeta{color:#2e4670;font-size:13px;margin-bottom:4px}
.vpubin .sttitle{color:#1f2d44;font-size:22px;font-weight:800;margin-bottom:10px}
.vpubin .sec-title{margin-top:12px}
.vpubin .stclose{margin-top:12px}

/* ── 課堂表現 ── */
.pftot{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:10px 0 14px}
.pftot>div{padding:10px 12px;border-radius:12px;background:rgba(0,0,0,.04);border:1px solid var(--line,#bdb29d)}
.pftot i{display:block;font-style:normal;font-size:12px;opacity:.75}.pftot b{font-size:20px}.pftot small{margin-left:4px;opacity:.8}
.pfcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.pfcard{text-align:left;padding:14px;border-radius:14px;border:1px solid var(--line,#bdb29d);background:#f9f7f4;cursor:pointer;font:inherit;color:inherit;transition:transform .12s,box-shadow .12s}
.pfcard:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.08)}.pfcard.dim{opacity:.6}
.pfcard .pfh{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:10px}.pfcard .pfh b{font-size:16px}
.pfk{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.pfk>div{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px}
.pfk i{font-style:normal;font-size:12px;opacity:.75;width:100%}.pfk b{font-size:18px}.pfk small{opacity:.8}
.pfbar{display:inline-block;width:100%;height:6px;border-radius:3px;background:rgba(0,0,0,.08);overflow:hidden;margin-top:4px}
.pfbar i{display:block;height:100%;background:linear-gradient(90deg,#b89854,#7c683d)}.pfbar.over i{background:linear-gradient(90deg,#c0603f,#8a2e22)}
.pfseg{padding:10px 0;border-top:1px dashed var(--line,#bdb29d)}.pfseg:first-child{border-top:0}
.pfsegh{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:6px}
.pfrow{display:grid;grid-template-columns:140px 1fr 56px;gap:6px 10px;align-items:center;padding:4px 0}
.pfrow small{grid-column:2/4;font-size:12px;opacity:.75}
@media(max-width:520px){.pfrow{grid-template-columns:110px 1fr 50px}}
/* 指定作業：本場繳交方式與題目（課前設定） */
.hwfmt{margin-top:8px;padding:8px 10px;border:1px dashed #bdb29d;border-radius:10px;background:rgba(255,255,255,.35)}
.hwfmtrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.hwfmtrow .input{width:auto;min-width:160px;flex:1}
.hwqs{margin-top:8px}.hwq{display:flex;gap:8px;align-items:flex-start;padding:8px 0;border-top:1px dashed #cfc6b5}
.hwqn{flex:0 0 22px;height:22px;border-radius:50%;background:#21324e;color:#ffffff;font-size:12px;display:inline-flex;align-items:center;justify-content:center;margin-top:6px}
.hwq textarea{flex:1;min-width:0;resize:vertical}.hwqrow{display:flex;flex-direction:column;gap:6px;flex:0 0 190px}
.hwreq{display:inline-flex;align-items:center;gap:4px;font-size:13px}
@media(max-width:600px){.hwq{flex-wrap:wrap}.hwqrow{flex:1 1 100%}}
/* 寫給校長的信紙 */
.hwtt{font-weight:700;color:#1d2c47;font-size:15px;margin:2px 0 6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ltw.hwdone .ltwbody{transform:none;opacity:1}.ltw.hwdone .ltwstamp{display:none}
.hwans .ltwq label{line-height:1.5}.hwansv{white-space:pre-wrap;line-height:1.7;color:#1d2c47;border-bottom:1px solid rgba(38,51,74,.2);padding:4px 2px}
.lgans{margin:6px 0 10px;padding:8px 12px;border:1px solid #cfc6b5;border-radius:10px;background:#fefefd}
/* 全班作答一覽 */
.hwall{margin-top:16px;padding-top:12px;border-top:1px dashed #bdb29d}
.hwtb .hwqh{min-width:220px}.hwtb .hwqc{white-space:pre-wrap;line-height:1.6;min-width:220px;max-width:420px;vertical-align:top;font-size:13px}
.hwtb td{vertical-align:top}
.hwtb td:nth-child(-n+4),.hwtb th:nth-child(-n+4){white-space:nowrap}
.hwtb .hwqh{max-width:360px;white-space:normal;line-height:1.4;font-weight:600}
.vopt.no.on{background:#e9e4dc;color:#1b2942;border-color:#ebe2d1;box-shadow:0 0 0 3px rgba(207,192,164,.35)}

/* ─── 簽到設定、時數明細、歸零紀錄、開箱專場資訊分類（2026.10.02） ─── */
.scrow{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.scrow .input{flex:1;min-width:180px}
.scabsl{display:flex;flex-direction:column;gap:4px}.scabsl .chk{padding:5px 8px;border:1px solid var(--line,#cfc4af);border-radius:8px;background:#fefdfc}.scabsl .chk.on{border-color:var(--goldD,#897240);background:#ede8df}
.lvlock{display:inline-block;padding:4px 8px;border-radius:8px;background:#eae6e0;color:#324d7b}
.hrkps{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 10px}.hrkp{flex:1;min-width:96px;padding:8px 10px;border-radius:10px;background:#efece5;border:1px solid var(--line,#cfc4af)}.hrkp b{display:block;font-size:20px;color:#21324e}.hrkp span{font-size:12px;color:#324d7b}
.hrtb{font-size:12.5px}.hrtb td,.hrtb th{padding:6px 6px;white-space:nowrap}.hrtb td.n,.hrtb th:nth-child(n+4){text-align:right}.hrtb .hrd{white-space:normal}.hrtb .hrnm{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hrtb tr.live td{background:#eef3f6}.hrtb tfoot td{font-weight:700;background:#efece5}
.card.dark.hrgo{cursor:pointer}.card.dark.hrgo .golink-hint{margin-top:8px;color:#cebd9f;font-size:12.5px}
.zrecbtn{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;border-radius:999px;border:1px solid #c74a38;background:#fff4f1;color:#9e2b1c;font-size:12.5px;font-weight:700;cursor:pointer}.zrecbtn .ic{width:13px;height:13px}
.zrecline{margin:6px 0 10px}
.zrchart{margin:6px 0 12px;padding:10px;border-radius:10px;background:#fefdfc;border:1px solid var(--line,#cfc4af)}
.zrlegend{display:flex;gap:14px;font-size:12px;color:#52514e;margin-bottom:6px}.zrlegend span{display:inline-flex;align-items:center;gap:5px}.zrlegend i{width:12px;height:12px;border-radius:3px;display:inline-block}
.zrlist{display:flex;flex-direction:column;gap:10px}.zrev{padding:8px 10px;border-radius:10px;background:#efece5;border:1px solid var(--line,#cfc4af)}
.zrhd{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:13px;color:#232e40}.zrhd b{color:#9e2b1c}.zrwhy{font-size:13px;color:#324d7b;margin:3px 0 8px;line-height:1.5}
.zrbar{display:grid;grid-template-columns:76px 1fr auto auto;gap:8px;align-items:center;margin:4px 0;font-size:12.5px}.zrbar:hover .zrtrack i{filter:brightness(1.15)}
.zrbl{color:#52514e;white-space:nowrap}.zrtrack{height:10px;border-radius:4px;background:#fefdfc;border:1px solid #e4ded3;overflow:hidden;position:relative}.zrtrack i{display:block;height:100%;border-radius:0 4px 4px 0;min-width:0}.zrtrack i.zero{width:2px;background:#b0a693}
.zrbv{font-weight:700;color:#232e40;white-space:nowrap;min-width:70px;text-align:right}.zrbn{white-space:nowrap;min-width:32px}
.bdtabs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.bdtabs button{padding:6px 12px;border-radius:999px;border:1px solid var(--line,#cfc4af);background:#fefdfc;color:#21324e;font-size:13px;cursor:pointer}.bdtabs button.on{background:var(--goldD,#897240);border-color:var(--goldD,#897240);color:#ffffff}
.bdsec{margin-top:4px}.bdsech{display:flex;align-items:center;gap:8px;margin:10px 2px 6px}
.badge.bdtag{font-size:11px;vertical-align:middle;margin-left:4px}.badge.mute{background:#e9e6df;color:#324d7b}
@media (max-width:600px){ .hrkp b{font-size:17px} .hrtb{font-size:12px} .hrtb td,.hrtb th{padding:6px 4px} .hrtb .hrnm{max-width:110px} .hrtb th:nth-child(5),.hrtb td:nth-child(5),.hrtb th:nth-child(6),.hrtb td:nth-child(6){display:none} .zrbar{grid-template-columns:64px 1fr auto;font-size:12px} .zrbn{display:none} .zrbv{min-width:60px} }
.bdsech .small{color:#21324e}
.fbadmbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0 12px;padding:8px 10px;border-radius:10px;background:#efece5;border:1px dashed var(--line,#cfc4af)}.fbadmbar .input.sm{padding:4px 8px;height:auto;min-width:120px}
.fbdead{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;background:#efece5;margin:4px 0;font-size:13px}.fbdead>span{flex:1}
.ltwpre{margin:-4px 0 10px;padding:12px 14px;border-radius:10px;background:#fefdfc;border:1px solid var(--line,#cfc4af);cursor:pointer;font-size:13.5px;color:#232e40;line-height:1.6}.ltwpre:hover{border-color:var(--goldD,#897240)}
.ltwpre-h{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;color:#21324e}.ltwpre-h b{font-size:14.5px}.ltwpre-h span{color:#324d7b;font-size:12.5px}
.ltwpre-t{font-weight:700;margin:6px 0 4px;font-size:14.5px}.ltwpre-b{margin:0 0 6px;color:#52514e}
.ltwpre-q{list-style:none;margin:0;padding:0}.ltwpre-q li{display:flex;gap:8px;margin:4px 0}.ltwpre-q .n{flex:none;color:#9e2b1c;font-weight:700}
.bdsoon{margin-top:10px;padding:8px 10px;border-radius:8px;background:#efece5;color:#21324e}
.hwrst{margin-top:8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}

/* ─── 開箱專場資訊：場次卡（2026.10.03） ─── */
.card.bd2{padding:0;overflow:hidden}
.bd2h{display:grid;grid-template-columns:auto 1fr auto auto;gap:14px;align-items:center;width:100%;padding:14px 18px;background:none;border:0;text-align:left;cursor:pointer;font:inherit;color:var(--ink,#232e40)}
.bd2h:hover{background:#f9f7f4}
.bd2d{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:64px;padding:6px 8px;border-radius:12px;background:#1b2941;color:#ece5d9}
.bd2d b{font-size:19px;letter-spacing:.5px;line-height:1.1;font-variant-numeric:tabular-nums}.bd2d i{font-style:normal;font-size:10.5px;opacity:.85;margin-top:3px;white-space:nowrap}
.bd2t{min-width:0}.bd2t>b{display:block;font-size:15.5px;line-height:1.35;color:#232e40;overflow:hidden;text-overflow:ellipsis}
.bd2s{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin-top:4px;font-size:12.5px;color:#324d7b}
.bd2st{font-style:normal;font-weight:700;font-size:11.5px;padding:2px 9px;border-radius:999px}.bd2st.live{background:#2e637d;color:#ffffff}.bd2st.soon{background:#e9e6df;color:#324d7b}.bd2st.done{background:#dfe6f2;color:#1b2941}
.bd2live .liveel{font-size:12px;margin-top:0}
.bd2p{display:flex;align-items:center;gap:10px;min-width:170px;padding:7px 12px 7px 8px;border-radius:14px;background:linear-gradient(135deg,#f6f4ef,#ebe5db);border:1px solid #cdc3af;box-shadow:inset 0 1px 0 #fefdfc}
.bd2ring{width:54px;height:54px;flex:none}
.bd2pt{display:flex;flex-direction:column;gap:2px;min-width:0}
.bd2pl{font-size:10.5px;letter-spacing:1px;color:#755f2e}.bd2pn{font-size:18px;color:#232e40;font-variant-numeric:tabular-nums;line-height:1.1}.bd2pn i{font-style:normal;font-size:11.5px;color:#324d7b;margin-left:2px}
.bd2coin{font-size:11.5px;color:#324d7b;white-space:nowrap}
.bd2p.soon .bd2pn{font-size:13px;color:#324d7b}
.bd2c{font-size:12px;color:#324d7b;white-space:nowrap}
.bd2b{display:none;padding:4px 18px 18px;border-top:1px dashed var(--line,#cfc4af)}.bd2.open .bd2b{display:block}
.bd2sec{margin-top:12px}.bd2sh{font-size:12px;color:#324d7b;margin-bottom:6px;letter-spacing:.5px}
.bd2b .tfblks{margin-top:0}.bd2b .route-steps{margin-top:6px}
.bd2acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.bd2-soon .bd2b{padding-top:0;border-top:0}.bd2-soon .bdsoon{margin:0 0 2px}
@media (max-width:640px){
  .bd2h{grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:10px 12px;padding:12px 14px}
  .bd2d{min-width:56px;padding:5px 6px}.bd2d b{font-size:17px}
  .bd2p{grid-column:1/3;min-width:0;padding:6px 10px 6px 6px}
  .bd2ring{width:46px;height:46px}.bd2pn{font-size:16px}.bd2coin{font-size:11px}
  .bd2c{position:absolute;right:14px;top:14px}.card.bd2{position:relative}
  .bd2b{padding:4px 14px 14px}
}

/* ─── 後台視覺化共用（2026.10.03） ─── */
.dvbar{display:block;height:6px;border-radius:4px;background:#dcd5c8;overflow:hidden;min-width:40px}.dvbar i{display:block;height:100%;border-radius:4px}
.dvh{display:flex;flex-direction:column;gap:6px;margin:6px 0}.dvhr{display:grid;grid-template-columns:88px 1fr auto;gap:10px;align-items:center;font-size:12.5px}
.dvhl{color:#52514e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dvht{display:block;height:10px;border-radius:4px;background:#eae6e0;overflow:hidden;border:1px solid #e4ded3}.dvht i{display:block;height:100%;border-radius:0 4px 4px 0}
.dvhv{font-weight:700;color:#232e40;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:48px;text-align:right}
.dvchart{margin:8px 0 12px;padding:10px 12px;border-radius:10px;background:#fefdfc;border:1px solid var(--line,#cfc4af)}
.dvtbl{margin-top:6px}.dvt{font-size:12.5px}.dvt td,.dvt th{padding:6px 8px;white-space:nowrap}.dvt td:nth-child(2){white-space:normal}
.dvlegend{display:flex;gap:14px;font-size:12px;color:#52514e;margin:4px 0 6px}.dvlegend span{display:inline-flex;align-items:center;gap:5px}.dvlegend i{width:12px;height:12px;border-radius:3px;display:inline-block}
/* 學員進度 */
.st2hint{margin:8px 0 10px}.st2list{display:flex;flex-direction:column;gap:10px}
.st2row{display:grid;grid-template-columns:150px 1fr auto;gap:12px;align-items:center;padding:10px 12px;border-radius:14px;background:#fefdfc;border:1px solid var(--line,#cfc4af)}
.st2row.zeroed{border-color:#d9a79e;background:#fdfcfb}
.st2who{display:flex;align-items:center;gap:8px;min-width:0}.st2who>div{display:flex;flex-direction:column;gap:3px;min-width:0}.st2who b{font-size:14.5px;color:#232e40}
.st2st{font-size:10.5px;padding:2px 7px;border-radius:999px;background:#e9e6df;color:#324d7b;width:max-content}.st2st.ok{background:#dfeaf0;color:#1f465a}.st2st.zero{background:#f6d9d3;color:#9e2b1c}.st2st.warn{background:#ede6d8;color:#324d7b}
.st2grid{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:6px}
.st2c{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:7px 9px;border-radius:10px;border:1px solid #e4ded3;background:#f5f3ef;cursor:pointer;text-align:left;font:inherit;color:#232e40;min-width:0}
.st2c:hover{border-color:var(--goldD,#897240);background:#f6f4ef}.st2c.hot{border-color:#d9a79e;background:#fdf0ec}.st2c.coin b{color:#324d7b}
.st2l{font-size:10.5px;letter-spacing:.5px;color:#755f2e;white-space:nowrap}.st2c b{font-size:16px;line-height:1.1;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.st2c b i{font-style:normal;font-size:11px;color:#324d7b;font-weight:400}
.st2c .dvbar{width:100%}.st2c.two b{white-space:normal;font-size:15px;line-height:1.25}.st2c.two b i{margin:0 4px 0 2px}.st2c.two b i.zt{color:#9e2b1c;font-weight:700}
.st2ops{display:flex;flex-direction:column;gap:6px}.st2ops .btn{white-space:nowrap}
.st2boards{display:flex;gap:6px;flex-wrap:wrap}
@media (max-width:1100px){ .st2grid{grid-template-columns:repeat(5,minmax(0,1fr))} }
@media (max-width:760px){ .st2row{grid-template-columns:1fr;gap:8px} .st2grid{grid-template-columns:repeat(3,minmax(0,1fr))} .st2ops{flex-direction:row;flex-wrap:wrap} .dvhr{grid-template-columns:72px 1fr auto} }
/* 關注名單 */
.wt2list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.wt2row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;background:#fefdfc;border:1px solid var(--line,#cfc4af);border-left-width:4px}
.wt2row.lv3{border-left-color:#9e2b1c}.wt2row.lv2{border-left-color:#a6760e}.wt2row.lv1{border-left-color:#897240}
.wt2main{min-width:0}.wt2head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.wt2head>b{font-size:14.5px}
.wt2ms{display:flex;gap:10px;flex-wrap:wrap}.wt2m{display:inline-grid;grid-template-columns:auto 56px auto;gap:5px;align-items:center;font-size:11.5px;color:#324d7b}.wt2m i{font-style:normal}.wt2m b{color:#232e40;font-variant-numeric:tabular-nums}.wt2m .dvbar{min-width:56px}
.wt2chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.wt2chip{cursor:pointer;border:0;font:inherit;font-size:11.5px}
.wt2act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.wt2kp{cursor:pointer;font:inherit;border:1px solid var(--line,#cfc4af)}.wt2kp.on{outline:2px solid var(--goldD,#897240)}
@media (max-width:760px){ .wt2row{grid-template-columns:auto 1fr} .wt2act{grid-column:1/3;justify-content:flex-start} }
/* 課堂表現 */
.pf2ms{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:10px}.pf2ms.top{margin:6px 0 12px}
.pf2m{display:flex;flex-direction:column;gap:4px;padding:7px 9px;border-radius:10px;background:#f5f3ef;border:1px solid #e4ded3;min-width:0}.pf2m i{font-style:normal;font-size:10.5px;color:#755f2e;letter-spacing:.5px}.pf2m b{font-size:13.5px;color:#232e40;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf2cards{display:flex;flex-direction:column;gap:10px}
.pf2card{display:block;width:100%;text-align:left;padding:12px 14px;border-radius:14px;background:#fefdfc;border:1px solid var(--line,#cfc4af);cursor:pointer;font:inherit;color:#232e40}.pf2card:hover{border-color:var(--goldD,#897240)}.pf2card.dim{opacity:.75}
.pf2h{display:flex;gap:12px;align-items:center}.pf2t{min-width:0}.pf2t>b{display:block;font-size:15px}
.pf2seg{margin-top:8px;border:1px solid #e4ded3;border-radius:10px;padding:6px 10px;background:#fefdfc}.pf2seg summary{cursor:pointer;font-weight:700;font-size:13px}
.pf2vote{margin-top:10px;padding:10px 12px;border-radius:12px;background:#fefdfc;border:1px solid var(--line,#cfc4af)}.pf2vh{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.pf2vr{display:grid;grid-template-columns:72px 1fr auto;gap:10px;align-items:center;margin:5px 0;font-size:12.5px}.pf2two{display:flex;height:10px;border-radius:4px;background:#eae6e0;overflow:hidden;border:1px solid #e4ded3}.pf2two i{display:block;height:100%}.pf2two .y{background:#3a6dc6}.pf2two .n{background:#9e2b1c;margin-left:2px}
.pf2vn{white-space:nowrap;font-variant-numeric:tabular-nums;color:#52514e}
@media (max-width:760px){ .pf2ms{grid-template-columns:repeat(2,minmax(0,1fr))} .pf2vr{grid-template-columns:60px 1fr auto} }
/* ── 2026.10.03 標籤與小鈕一律不折行（校長：「所有的按鈕都不要有這種問題 換行的很奇怪」） ── */
.badge,.stbadge,.btn.sm,.tfst,.rc,.lvc,.pill,.fitf,.statechip,.wt2chip,.zrecbtn,.usebtn,.lgcat,.pbchk,.bdtag,.fchip,.seg button,.segx button{white-space:nowrap}
.btn.sm,.badge{max-width:100%;overflow:hidden;text-overflow:ellipsis}
/* 分類小計 */
.lgcats{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 6px}
.lgcl{font-size:11.5px;letter-spacing:.14em;color:#755f2e;margin-right:2px}
.lgcat{display:inline-flex;align-items:center;gap:8px;padding:7px 12px 7px 8px;border-radius:12px;border:1px solid #dcd5c8;background:#fefdfc;cursor:pointer;font:inherit;color:#232e40;transition:border-color .18s cubic-bezier(.23,1,.32,1),background .18s cubic-bezier(.23,1,.32,1),transform .18s cubic-bezier(.23,1,.32,1);box-shadow:0 1px 2px rgba(37,57,92,.06)}
.lgcat:hover{border-color:#897240;background:#f6f4ef}.lgcat:active{transform:scale(.97)}
.lgcat.on{border-color:#3b5178;background:#eef2f8;box-shadow:0 0 0 2px #3b517822}
.lgcat b{font-size:14px;font-variant-numeric:tabular-nums}.lgcat i{font-style:normal;font-size:11px;color:#324d7b}
.card.dark .lgcat{background:#1f2a3d;border-color:#3b4b66;color:#eae7e0}.card.dark .lgcat i{color:#cbc6bc}.card.dark .lgcat.on{background:#2a3a55;border-color:#b89b5c;box-shadow:0 0 0 2px #b89b5c33}.card.dark .lgcl{color:#cbc6bc}
.lgcat-note{display:flex;align-items:center;gap:8px;margin:4px 0 6px}
/* 後台：這位學姐 */
.lgstu{margin:4px 0 12px;padding:12px 14px;border-radius:14px;background:#fefdfc;border:1px solid #dcd5c8}
.lgstu-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px}.lgstu-h>b{font-variant-numeric:tabular-nums}
.lgstu-k{font-size:11px;color:#755f2e;letter-spacing:.08em;margin-left:6px}.lgstu-sp{flex:1}
.lgstu-z{margin-top:8px}
/* 使用紀錄 */
.use2tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:4px 0 10px}
.use2t{display:flex;flex-direction:column;gap:3px;padding:8px 10px;border-radius:10px;background:#f5f3ef;border:1px solid #e4ded3;min-width:0}
.use2t span{font-size:10.5px;color:#755f2e;letter-spacing:.5px}.use2t b{font-size:14px;line-height:1.2;font-variant-numeric:tabular-nums;color:#232e40}.use2t b i{display:block;font-style:normal;font-size:11px;color:#324d7b;font-weight:400;margin-top:2px}
.usebtn .small{font-size:11px}
@media (max-width:760px){ .use2tiles{grid-template-columns:repeat(2,minmax(0,1fr))} .lgcat{padding:6px 10px 6px 7px} .lgcat b{font-size:13px} }
/* 表揚榜核對鈕 */
.pbauto .pah .pbchk{margin-left:6px;padding:4px 9px!important;font-size:11.5px!important}
/* 後台學員對話：她的戰友回饋信收成一格；未讀跳到那一則 */
.ltfold{margin:0 0 10px;border:1px solid #dcd5c8;border-radius:12px;background:#f5f3ef;padding:0 10px}
.ltfold>summary{cursor:pointer;padding:9px 2px;font-weight:700;font-size:13px;color:#263a5d;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.ltfold>summary .ic{width:15px;height:15px}.ltfold>summary .small{font-weight:400}
.ltfoldbody{padding:2px 0 8px}
.bubwrap.bubflash .bub{animation:bubflash 1.5s ease-out}
@keyframes bubflash{0%{box-shadow:0 0 0 3px #b89b5c99}100%{box-shadow:0 0 0 0 #b89b5c00}}
.zfresh{margin:6px 0 2px;color:#9e2b1c;display:flex;align-items:center;gap:6px}.zfresh .ic{width:14px;height:14px}
/* 學員名冊：上次停留一格 */
.use3{display:flex;flex-direction:column;gap:5px;align-items:stretch;min-width:210px;max-width:280px;padding:8px 10px!important;text-align:left;white-space:normal!important;line-height:1.3}
.use3t{font-size:12.5px;color:#263a5d}.use3t b{font-size:13.5px;color:#232e40;font-variant-numeric:tabular-nums}.use3t i{font-style:normal;font-size:11px;color:#755f2e}
.use3bar{display:flex;height:9px;border-radius:5px;background:#eae6de;overflow:hidden;gap:1px}.use3bar i{display:block;height:100%}.use3bar i:first-child{border-radius:5px 0 0 5px}
.use3l{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11px;color:#324d7b}.use3l b,.use3l em{font-style:normal;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.use3l b{color:#232e40;font-weight:700}.use3l i{width:8px;height:8px;border-radius:2px;display:inline-block}
.rstb td.usecol{vertical-align:middle}

/* ═══ 評鑑席（181） ═══ */
.jfld .jbtns{display:flex;gap:8px;flex-wrap:wrap}.jfld .jbtns .input{max-width:170px}
.votecard.jury .jstd{font-size:14.5px}.votecard.jury .jstd span{display:block;margin-top:4px;font-size:12.5px;color:rgba(219,211,198,.85)}
.jrows{display:grid;gap:8px;margin:14px 0 4px;text-align:left}
.jrow{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:14px;border:1px solid rgba(184,152,84,.35);background:rgba(247,243,236,.06)}
.jrow .jn{font-weight:700;font-size:15px;color:#f9f7f2;flex:1;min-width:0}
.jrow.self{opacity:.6}.jrow .jself{font-size:12px;color:rgba(219,211,198,.8)}
.jrow .jbt{display:flex;gap:6px;flex:none}
.jb{padding:9px 13px;border-radius:11px;font:inherit;font-size:14px;font-weight:800;letter-spacing:.04em;cursor:pointer;color:#e9e4dc;border:1.5px solid rgba(184,152,84,.5);background:rgba(247,243,236,.07);transition:transform .14s,background .14s,border-color .14s;white-space:nowrap}
.jb:hover{transform:translateY(-1px);border-color:#c2b08e}
.jb.yes.on{background:linear-gradient(#dccdaf,#b89854);color:#1b2942;border-color:#ebe2d1;box-shadow:0 0 0 3px rgba(207,192,164,.35)}
.jb.no.on{background:rgba(247,243,236,.22);color:#f9f7f2;border-color:#cfc0a4;box-shadow:0 0 0 3px rgba(207,192,164,.25)}
.jb[disabled]{cursor:default;opacity:.85}
.votecard .vsend[disabled]{opacity:.45;cursor:default}
.vres.jres .vresn span b{color:#314b78}
@media(max-width:560px){.jrow{flex-wrap:wrap}.jrow .jbt{width:100%}.jb{flex:1}}
/* ═══ 身分名稱（182） ═══ */
.rnfld .rnrow{display:flex;gap:10px;flex-wrap:wrap}
.rnone{display:flex;align-items:center;gap:6px}.rnone i{font-style:normal;font-size:12px;color:#384f75;white-space:nowrap}.rnone .input{max-width:120px}
/* ═══ 抽籤名單、題目（183） ═══ */
.dnbs{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.dnb{min-width:48px;padding:10px 12px;border-radius:12px;border:1px solid #c4bcac;background:#fefefd;font:inherit;font-size:16px;font-weight:700;color:#232e40;cursor:pointer}
.dnb:hover{border-color:#897240;background:#f2efe9}.dnb.hint{border-color:#897240;box-shadow:0 0 0 2px rgba(137,114,64,.18)}
.segqbar{display:flex;align-items:center;gap:8px;margin:8px 0;padding:9px 12px;border-radius:12px;border:1px solid #dcd5c8;background:#fefefd;font-size:13.5px;color:#232e40}
.segqbar .ic{width:16px;height:16px;flex:none;color:#897240}.segqbar .segqt{flex:1;min-width:0;line-height:1.45}.segqbar.empty .segqt{color:#4e5a6e}
.segqf .input{max-width:none}
.dlcard h3{display:flex;align-items:center;gap:8px}
.dlrows{display:grid;gap:6px;margin-top:8px}
.dlrow{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:12px;border:1px solid #e6e1d8;background:#fefefd}
.dlrow .dln{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:800;background:#3b5178;color:#ffffff;flex:none}
.dlrow b{flex:1;min-width:0;font-size:14.5px;color:#232e40}
.dlrow.cur{border-color:#897240;background:linear-gradient(90deg,#f3efe8,#fefefd);box-shadow:0 0 0 2px rgba(137,114,64,.18)}
.dlrow.cur .dln{background:#897240}.dlrow.done{opacity:.6}.dlrow.me b{color:#314b78}
.dlcd{font-size:12.5px;font-weight:700;color:#9e2b1c;font-variant-numeric:tabular-nums;white-space:nowrap}
.dlcard.pend{border-color:#cabda5}
.sgwheelc{display:block;margin:10px auto 0;max-width:260px;width:100%}
.dlcard.stu .dlh{display:flex;align-items:center;gap:8px;font-size:16px}.dlcard.stu .dlh .ic{width:18px;height:18px;color:#897240}.dlcard.stu .dlh .small{margin-left:auto}
.dlcard.stu .dlq{margin-top:6px;padding:8px 11px;border-radius:10px;background:#f0ece6;border:1px solid #dcd5c8;font-size:14px;line-height:1.55;color:#232e40}
.dlcard.stu.gold{border-color:#b89854;background:linear-gradient(#f9f6f0,#fefefd);box-shadow:0 10px 24px rgba(137,114,64,.18)}
.dlme{margin-top:10px;padding:10px 12px;border-radius:12px;background:linear-gradient(#dccdaf,#c1ad89);color:#1b2942}
.dlme b{display:block;font-size:16px;letter-spacing:.04em}.dlme span{display:block;margin-top:2px;font-size:12.5px;color:#21324e}
details.dlcard.fold summary{cursor:pointer;font-weight:700;color:#232e40;display:flex;align-items:center;gap:6px;flex-wrap:wrap}details.dlcard.fold summary .ic{width:15px;height:15px;color:#897240}
details.dlcard.fold summary .small{font-weight:400}details.dlcard.fold .dlrow{margin-top:6px}
/* ═══ 賞識回合（184） ═══ */
.votecard.gift .gq{font-size:15px}
.gnote{margin:12px auto 0;max-width:440px;font-size:13px;line-height:1.55;color:#e2dbcf}
.gavail{margin-top:10px;font-size:13.5px;color:rgba(219,211,198,.85)}.gavail b{color:#ebe2d1;font-size:17px;font-variant-numeric:tabular-nums}
.vcand.self{opacity:.55;cursor:default}.vcand .vself{position:absolute;top:6px;right:6px;font-size:10.5px;padding:2px 6px;border-radius:999px;background:rgba(247,243,236,.2);color:#ebe2d1}
.gamt{margin-top:12px}
.gchips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.gchip{min-width:64px;padding:10px 12px;border-radius:999px;font:inherit;font-size:15.5px;font-weight:800;font-variant-numeric:tabular-nums;cursor:pointer;color:#e9e4dc;border:1.5px solid rgba(184,152,84,.5);background:rgba(247,243,236,.07);transition:transform .14s,background .14s}
.gchip:hover{transform:translateY(-1px);border-color:#c2b08e}
.gchip.on{background:linear-gradient(#dccdaf,#b89854);color:#1b2942;border-color:#ebe2d1;box-shadow:0 0 0 3px rgba(207,192,164,.35)}
.gchip.over{opacity:.35;cursor:not-allowed;text-decoration:line-through}
.ginp{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:10px;font-size:13px;color:rgba(219,211,198,.85)}
.ginp .input{max-width:130px;text-align:center;background:rgba(254,253,252,.95);font-size:16px;font-weight:700}
.votecard .vhint.warn{color:#ffd9cd}
.gskip{margin-top:12px;color:rgba(219,211,198,.75)!important}
.giftpill{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:11000;display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:999px;border:1px solid #b89854;background:linear-gradient(#1d2c47,#131f33);color:#ebe2d1;font:inherit;font-size:13.5px;font-weight:700;box-shadow:0 10px 24px rgba(8,15,26,.4);cursor:pointer}
.giftpill .ic{width:16px;height:16px}
.gfres .gres{border:1px solid #d9d3c7;border-radius:13px;padding:11px 13px;margin-top:10px;background:#fbfaf9}
.gfres .gres.in{border-color:#b89854;background:linear-gradient(#f9f6f0,#fbfaf9)}
.gresh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:#162135}.gresh .small{margin-left:auto}
.gresn{margin-top:6px;font-size:14.5px;color:#232e40;line-height:1.5}.gresn b{color:#314b78}.gresn.out{font-size:13.5px;color:#3f506f}
.gfcard .desc{margin-bottom:6px}
.gfr{border:1px solid #dcd5c8;border-radius:14px;padding:11px 13px;margin-top:10px;background:#fefefd}
.gfr.st-open{border-color:#897240;box-shadow:0 0 0 2px rgba(137,114,64,.15)}.gfr.st-settled{background:#f8f6f3}.gfr.st-void{opacity:.6}
.gfrh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gfno{width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;background:#3b5178;color:#ffffff;flex:none}
.gfrh .gfname{max-width:220px;font-weight:700}.gfrh b{font-size:15.5px}.gfmeta{margin-left:auto}
.gfq{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:13px}.gfq label{font-size:12px;color:#384f75;white-space:nowrap}.gfq .input{flex:1;max-width:none}.gfq.ro{color:#232e40}
.gfrows{display:grid;gap:5px;margin-top:8px}
.gfrow{display:grid;grid-template-columns:150px 1fr auto auto;align-items:center;gap:10px;padding:5px 0}
.gfrow .lgwho{min-width:0}.gfrow .dvbar{height:9px}
.gfv{display:flex;flex-direction:column;align-items:flex-end;min-width:86px}.gfv b{font-variant-numeric:tabular-nums;color:#232e40}.gfv i{font-style:normal;font-size:11px;color:#384f75}
.gfbtns{margin-top:10px}.gfbtns .gfvoid{margin-left:auto;color:#9e2b1c}
.gfadd summary{cursor:pointer;margin-top:6px}
.gfsum{display:flex;gap:16px;flex-wrap:wrap;margin:8px 0 10px}.gfsum div{display:flex;flex-direction:column}.gfsum i{font-style:normal;font-size:11.5px;color:#384f75}.gfsum b{font-size:20px;color:#232e40;font-variant-numeric:tabular-nums}.gfsum small{font-size:11px;color:#384f75}
.gfsrcs{display:grid;gap:6px}.gfsrc{display:grid;grid-template-columns:auto auto 1fr;gap:8px;align-items:center;padding:8px 10px;border:1px solid #dcd5c8;border-radius:11px;background:#fefefd;cursor:pointer}
.gfsrc b{white-space:nowrap}.gfsrc .small{min-width:0}
.badge.cat-gift{background:#eae3d4;color:#314b78;border-color:#cabda5}
@media(max-width:700px){.gfrow{grid-template-columns:1fr auto;grid-template-areas:"who val" "bar bar"}.gfrow .lgwho{grid-area:who}.gfrow .dvbar{grid-area:bar}.gfrow .gfv{grid-area:val;flex-direction:row;gap:6px;align-items:baseline}.gfrow .btn{grid-area:val;justify-self:end}}
/* ═══ 全員發放（185） ═══ */
.gabar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px}
.btn.gabtn{display:inline-flex;align-items:center;gap:10px;padding:10px 16px!important;border-radius:14px!important;border:1px solid #dccdaf!important;background:linear-gradient(#cfbb95,#9a7d3d)!important;color:#1b2942!important;box-shadow:0 8px 18px rgba(137,114,64,.3)}
.btn.gabtn::before{display:none!important}.btn.gabtn:hover{filter:brightness(1.06)}
.btn.gabtn .gaic{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(27,41,66,.14)}.btn.gabtn .gaic .ic{width:18px;height:18px}
.btn.gabtn .lab{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25}.btn.gabtn .lab b{font-size:16px;letter-spacing:.08em}.btn.gabtn .lab i{font-style:normal;font-size:11px;font-weight:400;opacity:.8}
.gadone{display:flex;gap:6px;flex-wrap:wrap}
.gachip{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid #cabda5;background:#f3efe8;font-size:12.5px;color:#232e40}
.gachip.dead{opacity:.55;text-decoration:line-through}.gachip i{font-style:normal;font-size:11px;color:#384f75;text-decoration:none}
.gaprev{margin:6px 0 8px}.gasum{font-size:15px;color:#232e40}.gasum b{font-size:18px}
.small.warn{color:#9e2b1c}
.pf2sec{margin-top:12px}
.stpv{margin-top:12px;padding:12px;border-radius:16px;background:#1a2840}.stpv>.small{color:#dfd7ca;margin-bottom:8px}.stpv .votecard{text-align:center}
/* ═══ 發言組（189） ═══ */
.grpnow .sgnh .small{flex-basis:100%;margin-top:2px}
.grpwhos{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:10px 0 4px}
.grpwho{display:inline-flex;align-items:center;gap:7px;padding:6px 12px 6px 7px;border-radius:999px;border:1px solid #cabda5;background:#f3efe8}
.grpwho b{font-size:14.5px;color:#232e40}.grpwho i{font-style:normal;font-size:11.5px;color:#314b78}
.grpwho.empty{background:#f0eeea;border-style:dashed}.grpwho.empty b{color:#5b6981}
.grpsteps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}
.grpstep{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:9px 11px;border-radius:13px;border:1px solid #dcd5c8;background:#fefefd;font:inherit;text-align:left;cursor:pointer;min-width:0}
.grpstep .grpno{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;background:#dcd5c8;color:#2d456f}
.grpstep b{font-size:14px;color:#232e40}.grpstep i{font-style:normal;font-size:11.5px;color:#384f75;line-height:1.4}
.grpstep.on{border-color:#897240;background:linear-gradient(#f3efe8,#fefefd);box-shadow:0 0 0 2px rgba(137,114,64,.18)}.grpstep.on .grpno{background:#897240;color:#ffffff}
.grpstep.done .grpno{background:#3b5178;color:#ffffff}.grpstep.done b::after{content:" ✓";color:#3b5178}
.grpwheel{display:none}.grpwheel.show{display:block}
.grpres{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:8px 0}
.grpn{display:inline-flex;flex-direction:column;align-items:flex-start;font-size:12px;color:#384f75}.grpn b{font-size:20px;color:#232e40;font-variant-numeric:tabular-nums}
.grpn.muted b{color:#4e5a6e}.grpn.gold b{color:#314b78}
.grpflow{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.grpf{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:11px;border:1px solid #dcd5c8;background:#fefefd;font-size:13px}
.grpf b{width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11.5px;background:#3b5178;color:#ffffff}
.grpf .input{width:62px;max-width:62px;padding:4px 6px;text-align:center}.grpf i{font-style:normal;color:#384f75}
.grpvote{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0}.grpvote span{font-size:12.5px;color:#384f75;white-space:nowrap}.grpvote .input{max-width:220px}
.grpvote .input[type=number]{max-width:110px}
.segc.grpseg{border-color:#b89854}
.vlive.vfold summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:700}.vlive.vfold summary::-webkit-details-marker{display:none}
.vlive.vfold summary::before{content:"›";display:inline-block;transition:transform .15s;color:#4e5a6e}.vlive.vfold[open] summary::before{transform:rotate(90deg)}
.vlive.open{border:1px solid #897240;box-shadow:0 0 0 2px rgba(137,114,64,.15)}
/* 學姐端評鑑卡：名字一行 */
.jrow .jn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:640px){.jrow{flex-wrap:wrap}.jrow .jn{flex:1 1 auto}.jrow .jbt{width:100%}.jb{flex:1}}
@media(max-width:700px){.grpsteps{grid-template-columns:repeat(2,1fr)}}

/* ═══ 投影舞台（194） ═══ */
body.stage2 #app,body.stage2 #intro,body.stage2 #login,body.stage2 #modal,body.stage2 .stbarwrap,body.stage2 #stov{display:none!important}
body.stage2{overflow:hidden;background:#0f1b30}
#stg{position:fixed;inset:0;z-index:8000;background:radial-gradient(1400px 900px at 50% 35%,#22375a 0%,#1b2941 45%,#0f1b30 100%);color:#fafaf9;font-family:"Noto Sans TC",sans-serif;user-select:none;overflow:hidden;
 --sg:#a68c52;--sg2:#d4c4a6;--sgL:#e0ddd8;--sgmute:#c6c1b8;--sgdim:#8f9cb3;--sgwax:#c74a38;--sgnavy:#1b2941;--sgnavy2:#0f1b30;--sgease:cubic-bezier(.2,.8,.2,1);--sgpop:cubic-bezier(.2,1.4,.4,1)}
#stg *{box-sizing:border-box}
#stg button{font-family:inherit;cursor:pointer}
#stg .stgbg{position:absolute;inset:0;pointer-events:none}
#stg .stgstars i{position:absolute;width:3px;height:3px;border-radius:50%;background:#ffffff;opacity:.3;animation:stgtw 5s ease-in-out infinite}
@keyframes stgtw{0%,100%{opacity:.12;transform:scale(.8)}50%{opacity:.55;transform:scale(1.2)}}
#stg .stgtop{position:absolute;left:0;right:0;top:0;height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 36px;border-bottom:1px solid rgba(224,221,216,.16);z-index:5}
#stg .stgtop .l{font-family:"Noto Serif TC",serif;font-size:19px;letter-spacing:.06em;color:var(--sgL);display:flex;align-items:center;gap:14px}
#stg .stgtop .l b{color:var(--sg)}
#stg .stgenv{padding:4px 14px;border-radius:999px;background:rgba(166,140,82,.18);border:1px solid rgba(166,140,82,.5);color:var(--sg2);font-size:15px;font-family:"Noto Sans TC",sans-serif;letter-spacing:.1em;cursor:pointer}
#stg .stgtop .r{display:flex;gap:14px;align-items:center;font-size:15px;color:var(--sgmute)}
#stg .stgpill{border:1px solid rgba(166,140,82,.7);color:var(--sg);border-radius:999px;padding:4px 14px;font-size:14px;letter-spacing:.08em;transition:all .3s}
#stg .stgpill.live{background:var(--sgwax);border-color:var(--sgwax);color:#ffffff;animation:stgpulse 1.6s ease-in-out infinite}
@keyframes stgpulse{0%,100%{box-shadow:0 0 0 0 rgba(199,74,56,.5)}50%{box-shadow:0 0 0 8px rgba(199,74,56,0)}}
#stg .stgview{position:absolute;left:0;right:0;top:64px;bottom:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;opacity:0;transform:translateY(14px);transition:opacity .28s cubic-bezier(.16,1,.3,1),transform .28s cubic-bezier(.16,1,.3,1);overflow:auto;padding:20px 0 90px}
#stg .stgview.on{opacity:1;transform:none}
#stg .h1{font-family:"Noto Serif TC",serif;font-size:30px;color:var(--sgL);letter-spacing:.2em;margin-bottom:6px}
#stg .h1 small{font-size:18px;color:var(--sg);letter-spacing:.1em}
#stg .h2{color:var(--sgmute);font-size:15px;margin-bottom:30px}
#stg .stgenvs{display:flex;flex-wrap:wrap;gap:20px;justify-content:center;max-width:1100px}
#stg .stgenvc{width:250px;min-height:190px;border-radius:22px;border:1px solid rgba(224,221,216,.22);background:linear-gradient(160deg,rgba(255,255,255,.07),rgba(255,255,255,.02));padding:22px 22px 18px;text-align:left;cursor:pointer;transition:transform .25s var(--sgease),border-color .25s,background .25s;position:relative}
#stg .stgenvc:hover{transform:translateY(-4px);border-color:var(--sg);background:linear-gradient(160deg,rgba(166,140,82,.22),rgba(255,255,255,.03))}
#stg .stgenvc.done{opacity:.6}
#stg .stgenvc .k{font-size:12px;color:var(--sg);letter-spacing:.3em}
#stg .stgenvc .n{font-family:"Noto Serif TC",serif;font-size:24px;font-weight:700;margin:6px 0 10px;color:#ffffff}
#stg .stgenvc .d{font-size:13px;color:var(--sgmute);line-height:1.7}
#stg .stgenvc .c{position:absolute;right:18px;bottom:16px;font-size:12px;color:var(--sgdim)}
#stg .stgenvc.new{border-style:dashed;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;text-align:center}
#stg .stgenvc.new .n{font-size:22px;margin:0}
#stg .stggrid{display:grid;grid-template-columns:repeat(3,230px);gap:20px}
#stg .stgtile{height:150px;border-radius:22px;border:1px solid rgba(224,221,216,.22);background:linear-gradient(160deg,rgba(255,255,255,.07),rgba(255,255,255,.02));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;cursor:pointer;transition:transform .25s var(--sgease),border-color .25s,background .25s}
#stg .stgtile:hover{transform:translateY(-4px);border-color:var(--sg);background:linear-gradient(160deg,rgba(166,140,82,.22),rgba(255,255,255,.03))}
#stg .stgtile:active,#stg .stgenvc:active,#stg .stgpc:active,#stg .stgchip:active{transform:scale(.98)}
#stg .stggo:active,#stg #stgctl button:active,#stg .stgjudge button:active{transform:scale(.98)}
#stg .stgtile .ic{width:44px;height:44px;border-radius:50%;border:1px solid rgba(166,140,82,.6);display:flex;align-items:center;justify-content:center;color:var(--sg2);font-size:20px}
#stg .stgtile .t{font-family:"Noto Serif TC",serif;font-size:22px;font-weight:700;letter-spacing:.14em;color:#ffffff}
#stg .stgtile .d{font-size:12.5px;color:var(--sgmute)}
#stg .stgtile.vote .ic{border-color:rgba(199,74,56,.8);color:#f3b1a6}
#stg .stgtile.dark{opacity:.75}
#stg .stgsetup{display:flex;flex-direction:column;align-items:center;gap:22px;width:min(1040px,94vw)}
#stg .stgfield{display:flex;align-items:flex-start;gap:18px;width:100%}
#stg .stgfield .lab{width:64px;flex:none;text-align:right;font-size:15px;color:var(--sg);letter-spacing:.2em;padding-top:12px}
#stg .stgbody{flex:1;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
#stg .stgppl{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;flex:1}
#stg .stgpc{display:flex;align-items:center;gap:10px;padding:8px 12px 8px 8px;border-radius:999px;border:1px solid rgba(224,221,216,.22);background:rgba(255,255,255,.04);cursor:pointer;transition:all .2s var(--sgease);font-size:16px;color:var(--sgL);min-width:0}
#stg .stgpc span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#stg .stgpc span i{font-style:normal;font-size:11px;color:var(--sgdim);margin-left:4px}
#stg .stgpc:hover{border-color:var(--sg)}
#stg .stgpc.on{background:rgba(166,140,82,.28);border-color:var(--sg);color:#ffffff}
#stg .stgpc.off{opacity:.32}
#stg .stgpc.off .stgav{filter:grayscale(1)}
#stg .stgav{display:inline-flex;flex:none}
#stg .stgav .ava,#stg .stgav .av{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:"Noto Serif TC",serif;font-weight:700;font-size:15px;color:var(--sgnavy2);box-shadow:0 0 0 2px rgba(166,140,82,.85),0 2px 8px rgba(0,0,0,.4);background:linear-gradient(145deg,var(--sg2),var(--sg));object-fit:cover;margin:0}
#stg .stgav.big .ava,#stg .stgav.big .av{width:120px;height:120px;font-size:46px;box-shadow:0 0 0 4px rgba(166,140,82,.9),0 0 50px rgba(166,140,82,.35)}
#stg .stgchip{padding:9px 18px;border-radius:999px;border:1px solid rgba(224,221,216,.3);color:var(--sgL);font-size:16px;cursor:pointer;transition:all .2s;background:rgba(255,255,255,.04)}
#stg .stgchip:hover{border-color:var(--sg)}
#stg .stgchip.on{background:var(--sg);color:var(--sgnavy2);border-color:var(--sg);font-weight:700}
#stg .stgnum{width:84px;padding:8px 12px;border-radius:999px;border:1px solid rgba(224,221,216,.3);background:rgba(255,255,255,.04);color:#ffffff;font-size:16px;text-align:center;outline:none;font-family:inherit}
#stg .stgnum:focus{border-color:var(--sg)}
#stg .stggo{margin-top:6px;padding:14px 48px;border-radius:16px;background:linear-gradient(180deg,#bdab8b,#957d49);color:var(--sgnavy2);font-family:"Noto Serif TC",serif;font-size:22px;font-weight:900;letter-spacing:.3em;border:0;box-shadow:0 10px 30px rgba(166,140,82,.35);transition:transform .2s var(--sgease)}
#stg .stggo:hover{transform:translateY(-2px)}
#stg .stgstep{font-size:22px;letter-spacing:.3em;color:var(--sg);margin-bottom:16px}
#stg .stgperson{display:flex;align-items:center;gap:26px}
#stg .stgname{font-family:"Noto Serif TC",serif;font-size:92px;font-weight:900;line-height:1.1;color:#ffffff;text-shadow:0 6px 30px rgba(0,0,0,.4)}
#stg .stgname small{font-size:38px;font-weight:700;color:var(--sgL);margin-left:16px}
#stg .stgclock{margin-top:18px;font-family:"Noto Serif TC",serif;font-size:min(180px,22vh);font-weight:900;line-height:1;letter-spacing:.04em;color:#ffffff;font-variant-numeric:tabular-nums;transition:color .5s}
#stg .stgclock.sm{font-size:88px;margin-top:4px}
#stg .stgclock.warn{color:#ccae77}
#stg .stgclock.over{color:#ff7a66;animation:stgshake .5s var(--sgease) 1}
@keyframes stgshake{0%{transform:translateX(0)}25%{transform:translateX(-8px)}50%{transform:translateX(8px)}75%{transform:translateX(-4px)}100%{transform:translateX(0)}}
#stg .stgbar{width:min(760px,80vw);height:8px;border-radius:999px;background:rgba(255,255,255,.14);margin-top:22px;overflow:hidden}
#stg .stgbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--sg),var(--sg2));border-radius:999px;transition:width 1s linear,background .5s}
#stg .stgbar i.warn{background:linear-gradient(90deg,#a58031,#ccae77)}
#stg .stgbar i.over{background:#ff7a66}
#stg .stghint{margin-top:20px;font-size:22px;color:#d6d1c8;letter-spacing:.12em;min-height:30px}
#stg .stgjudge{display:flex;gap:14px;margin-top:10px}
#stg .stgjudge button{padding:14px 30px;border-radius:14px;font-size:20px;border:1px solid rgba(224,221,216,.35);background:rgba(255,255,255,.05);color:var(--sgL);transition:all .2s var(--sgease)}
#stg .stgjudge button:hover{transform:translateY(-2px);border-color:var(--sg)}
#stg .stgjudge button.ok{border-color:#7fb0c8;color:#7fb0c8}
#stg .stgjudge button.no{border-color:#ff7a66;color:#ff7a66}
#stg .stgwrap2{display:flex;align-items:center;gap:80px}
#stg .stgring{position:relative;width:460px;height:460px}
#stg .stgring .disc{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(166,140,82,.35);background:radial-gradient(circle,rgba(255,255,255,.04) 0,rgba(255,255,255,0) 70%);transition:transform 4.6s cubic-bezier(.1,.9,.1,1.04)}
#stg .stgring .seat{position:absolute;left:50%;top:50%;width:0;height:0}
#stg .stgring .seat .hold{position:absolute;left:-32px;top:-32px;width:64px;height:64px;transition:transform 4.6s cubic-bezier(.1,.9,.1,1.04)}
#stg .stgring .seat .stgav .ava,#stg .stgring .seat .stgav .av{width:64px;height:64px;font-size:24px;transition:transform .4s var(--sgpop),opacity .4s}
#stg .stgring .seat .stgav.dimmed .ava,#stg .stgring .seat .stgav.dimmed .av{opacity:.35;transform:scale(.85)}
#stg .stgring .pin{position:absolute;top:-6px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-top:30px solid var(--sg2);filter:drop-shadow(0 4px 8px rgba(0,0,0,.5));z-index:3}
#stg .stgring .core{position:absolute;left:50%;top:50%;width:170px;height:170px;margin:-85px 0 0 -85px;border-radius:50%;background:var(--sgnavy2);border:2px solid var(--sg);display:flex;align-items:center;justify-content:center;z-index:2;box-shadow:0 0 0 12px rgba(15,27,48,.6)}
#stg .stgring .coreav{transform:scale(0);opacity:0;transition:all .6s var(--sgpop)}
#stg .stgring .coreav.show{transform:scale(1);opacity:1}
#stg .stgring .coreav .ava,#stg .stgring .coreav .av{width:140px;height:140px;font-size:54px}
#stg .stgres{text-align:left;min-width:440px}
#stg .stgres .stgname{opacity:0;transform:translateX(20px);transition:all .6s var(--sgpop)}
#stg .stgres .stgname.show{opacity:1;transform:none}
#stg .stgres .wait{font-size:26px;color:var(--sgmute);margin-top:14px;letter-spacing:.1em;min-height:36px}
#stg .stgpicks{display:flex;gap:12px;margin-top:18px;min-height:52px;flex-wrap:wrap}
#stg .stgcnt{display:flex;align-items:baseline;gap:12px;margin-top:16px}
#stg .stgcnt b{font-size:130px;font-family:"Noto Serif TC",serif;font-weight:900;color:var(--sg);line-height:1;font-variant-numeric:tabular-nums;display:inline-block;transition:transform .25s var(--sgpop)}
#stg .stgcnt b.bump{transform:scale(1.12)}
#stg .stgcnt span{font-size:32px;color:#d6d1c8}
#stg .stgcands{display:flex;gap:26px;margin-top:26px}
#stg .stgcand{width:250px;padding:24px 18px;border-radius:18px;background:rgba(255,255,255,.06);border:1px solid rgba(224,221,216,.25);opacity:0;transform:translateY(24px);animation:stgup .5s var(--sgpop) forwards}
#stg .stgcand:nth-child(2){animation-delay:.04s}
#stg .stgcand:nth-child(3){animation-delay:.08s}
@keyframes stgup{to{opacity:1;transform:none}}
#stg .stgcand .n{font-family:"Noto Serif TC",serif;font-size:34px;font-weight:700;color:#ffffff}
#stg .stgcand .v{font-size:56px;font-weight:900;color:var(--sg);margin-top:6px;font-variant-numeric:tabular-nums}
#stg .stgcand .v small{font-size:18px;color:var(--sgmute);font-weight:400;margin-left:4px}
#stg .stgcand.win{border-color:var(--sg);background:rgba(166,140,82,.18);box-shadow:0 0 0 2px rgba(166,140,82,.5),0 0 60px rgba(166,140,82,.2)}
#stg .stgcand .m{font-size:17px;color:var(--sgL);margin-top:8px}
#stg .stgbig{font-family:"Noto Serif TC",serif;font-size:56px;font-weight:900;color:#ffffff;margin-top:4px;display:flex;align-items:center;gap:18px;justify-content:center}
#stg .stgchest{width:170px;height:170px;border-radius:50%;border:2px solid rgba(166,140,82,.6);display:flex;align-items:center;justify-content:center;margin:0 auto 30px;font-size:70px;animation:stgfloat 5s ease-in-out infinite;box-shadow:0 0 60px rgba(166,140,82,.25) inset;color:var(--sg2)}
@keyframes stgfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
#stg .stglogo{font-family:"Noto Serif TC",serif;font-size:66px;letter-spacing:.2em;color:var(--sgL);font-weight:700}
#stg .stgsub{font-size:24px;color:var(--sgmute);margin-top:16px;letter-spacing:.2em}
#stg #stgctl{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);display:flex;gap:10px;align-items:center;padding:10px 14px;border-radius:18px;background:rgba(10,19,34,.84);border:1px solid rgba(224,221,216,.22);backdrop-filter:blur(10px);z-index:6;transition:opacity .4s,transform .4s;white-space:nowrap}
#stg #stgctl.hide{opacity:0;transform:translate(-50%,20px);pointer-events:none}
#stg #stgctl button{border:1px solid rgba(224,221,216,.3);background:rgba(255,255,255,.06);color:var(--sgL);border-radius:12px;padding:10px 16px;font-size:15px;transition:all .2s var(--sgease)}
#stg #stgctl button:hover{border-color:var(--sg);color:#ffffff;transform:translateY(-1px)}
#stg #stgctl button.main{background:linear-gradient(180deg,#bdab8b,#957d49);color:var(--sgnavy2);font-weight:700;border-color:#957d49}
#stg #stgctl button.stop{background:var(--sgwax);border-color:var(--sgwax);color:#ffffff;font-weight:700}
#stg #stgctl .sep{width:1px;height:26px;background:rgba(224,221,216,.25)}
#stg #stgctl .k{font-size:12px;color:var(--sgdim);margin:0 4px}
#stg #stglog{position:absolute;right:0;top:64px;bottom:0;width:380px;background:rgba(10,19,34,.94);border-left:1px solid rgba(224,221,216,.18);transform:translateX(100%);transition:transform .35s var(--sgease);z-index:6;padding:18px;overflow:auto;text-align:left}
#stg #stglog.on{transform:none}
#stg #stglog h4{font-family:"Noto Serif TC",serif;color:var(--sgL);font-size:17px;margin:0 0 4px;letter-spacing:.1em}
#stg #stglog .d{font-size:12.5px;color:var(--sgdim);margin-bottom:14px;line-height:1.5}
#stg .stglrow{border:1px solid rgba(224,221,216,.18);border-radius:12px;padding:10px 12px;margin-bottom:8px;font-size:13.5px;animation:stgup .4s var(--sgease);background:rgba(255,255,255,.03)}
#stg .stglrow.void{opacity:.4;text-decoration:line-through}
#stg .stglrow .h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#stg .stglrow .h b{color:#ffffff;font-size:15px}
#stg .stglrow .tag{font-size:11px;padding:2px 8px;border-radius:999px;background:rgba(166,140,82,.25);color:var(--sg2)}
#stg .stglrow .tag.ok{background:rgba(127,176,200,.2);color:#7fb0c8}
#stg .stglrow .tag.no{background:rgba(255,122,102,.2);color:#ff7a66}
#stg .stglrow .tag.gray{background:rgba(255,255,255,.08);color:var(--sgmute)}
#stg .stglrow .t{color:var(--sgdim);font-size:12px;margin-top:4px}
#stg .stglrow .acts{display:flex;gap:6px;margin-top:8px}
#stg .stglrow .acts button{font-size:12px;padding:4px 10px;border-radius:8px;border:1px solid rgba(224,221,216,.3);background:transparent;color:var(--sgL)}
#stg .sum{border-top:1px solid rgba(224,221,216,.18);padding-top:10px;margin-top:6px;font-size:13px;color:var(--sgmute);line-height:1.8}
#stg .sum b{color:#ffffff}
#stg .stgblack{position:absolute;inset:0;background:#000000;display:none;z-index:9}
#stg .stgblack.on{display:block}
#stg .stgtoast{position:absolute;left:50%;top:84px;transform:translateX(-50%) translateY(-8px);background:rgba(212,196,166,.96);color:var(--sgnavy2);padding:8px 18px;border-radius:999px;font-weight:700;font-size:14px;opacity:0;transition:all .3s var(--sgease);z-index:7}
#stg .stgtoast.on{opacity:1;transform:translateX(-50%)}
#stg .stgkbd{position:absolute;left:36px;bottom:30px;font-size:12px;color:var(--sgdim);z-index:5;letter-spacing:.05em}
#stg .stgmodal{position:absolute;inset:0;background:rgba(6,11,19,.7);display:none;align-items:center;justify-content:center;z-index:8;backdrop-filter:blur(4px)}
#stg .stgmodal.on{display:flex}
#stg .stgmodal .box{width:560px;background:var(--sgnavy);border:1px solid rgba(166,140,82,.5);border-radius:22px;padding:28px;text-align:left;animation:stgup .4s var(--sgpop)}
#stg .stgmodal h3{font-family:"Noto Serif TC",serif;font-size:22px;color:var(--sgL);margin:0 0 16px;letter-spacing:.1em}
#stg .stgmodal .row{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 16px}
#stg .stgmodal .txt{width:100%;padding:12px 14px;border-radius:12px;border:1px solid rgba(224,221,216,.3);background:rgba(255,255,255,.05);color:#ffffff;font-size:18px;outline:none;font-family:inherit}
#stg .stgmodal .lab{font-size:13px;color:var(--sg);letter-spacing:.2em;margin-top:6px}
@media (max-width:1100px){#stg .stggrid{grid-template-columns:repeat(2,230px)}#stg .stgppl{grid-template-columns:repeat(4,1fr)}#stg .stgwrap2{flex-direction:column;gap:20px}#stg .stgres{min-width:0;text-align:center}#stg .stgname{font-size:64px}}
/* 課堂即時監控的投影舞台卡 */
.stgcard .stgcardh{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.stgcard .stgnow{display:flex;align-items:center;gap:8px;margin:10px 0 6px;padding:10px 12px;border-radius:10px;background:var(--navy,#1b2941);color:#ffffff;font-size:14px;flex-wrap:wrap}
.stgcard .stgnow .dot{width:10px;height:10px;border-radius:50%;background:#8f9cb3;flex:none}
.stgcard .stgnow .dot.live{background:#ff7a66;box-shadow:0 0 0 4px rgba(255,122,102,.25)}
.stgcard .stgnow .small{color:#d6d1c8}
.stgoldbar{display:block;width:100%;margin:0 0 12px}
.stgoldwrap{display:block;width:100%}
/* 課後審核：環節紀錄 */
.stgchk{display:inline-block;font-size:12px;padding:2px 10px;border-radius:999px;background:#fff4f1;color:#9e2b1c;border:1px solid #e3b3ab;margin-left:6px;font-weight:400}
.stgchk.ok{background:#eef3f6;color:#2f576b;border-color:#bfd5e0}
.stgtb td,.stgtb th{vertical-align:middle;white-space:nowrap}
.stgtb tr.dim{opacity:.45;text-decoration:line-through}
.stgtb .input.sm{padding:4px 8px;font-size:13px;width:auto}
.stgchkcard h3{display:flex;align-items:center;flex-wrap:wrap;gap:4px}

/* 舞台：工具主色、色帶、金粉、閃光、心跳、靜音鍵、學姐投票色帶（195） */
#stg[data-tool="timer"]{--sgacc:#d4c4a6}
#stg[data-tool="draw"]{--sgacc:#7fb9d6}
#stg[data-tool="vote"]{--sgacc:#ff8a7a}
#stg[data-tool="gift"]{--sgacc:#c8d6ef}
#stg[data-tool="home"]{--sgacc:#e0ddd8}
#stg .stgtop{border-bottom-color:rgba(224,221,216,.16);box-shadow:inset 0 -2px 0 var(--sgacc,transparent);transition:box-shadow .28s}
#stg[data-tool="vote"] .stgtop{box-shadow:inset 0 -3px 0 #ff8a7a}
#stg[data-tool="draw"] .stgring .pin{border-top-color:#7fb9d6}
#stg[data-tool="draw"] .stgstep,#stg[data-tool="draw"] .h1{color:#9fcce3}
#stg[data-tool="vote"] .stgstep,#stg[data-tool="vote"] .h1{color:#ffb0a4}
#stg[data-tool="vote"] .stgcnt b{color:#ff8a7a}
#stg[data-tool="gift"] .stgstep,#stg[data-tool="gift"] .h1,#stg[data-tool="gift"] .stgcnt b{color:#c8d6ef}
#stg[data-tool="vote"]{background:radial-gradient(1400px 900px at 50% 35%,#3a2a3e 0%,#222a38 45%,#0f1b30 100%)}
#stg[data-tool="gift"]{background:radial-gradient(1400px 900px at 50% 35%,#2a374e 0%,#202b3f 45%,#0f1b30 100%)}
#stg[data-tool="draw"]{background:radial-gradient(1400px 900px at 50% 35%,#1f2f4a 0%,#1b2a44 45%,#0f1b30 100%)}
#stg{transition:background .28s}
#stg .stgband{position:absolute;left:0;right:0;top:64px;height:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(90deg,rgba(199,74,56,.0),rgba(199,74,56,.85) 20%,rgba(199,74,56,.85) 80%,rgba(199,74,56,0));color:#ffffff;font-size:15px;letter-spacing:.3em;z-index:4;animation:stgbandin .28s cubic-bezier(.16,1,.3,1)}
@keyframes stgbandin{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
#stg .stgburst{position:absolute;width:0;height:0;z-index:7;pointer-events:none}
#stg .stgburst i{position:absolute;left:0;top:0;width:8px;height:14px;border-radius:2px;background:#d4c4a6;opacity:0;animation:stgfly .9s cubic-bezier(.16,1,.3,1) forwards}
@keyframes stgfly{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--dx),calc(var(--dy) + 80px)) rotate(var(--rot))}}
#stg .stgflash{position:absolute;inset:0;background:rgba(255,122,102,.35);z-index:6;pointer-events:none;animation:stgflashk .7s ease-in forwards}
@keyframes stgflashk{0%{opacity:1}100%{opacity:0}}
#stg .stgclock.beat{animation:stgbeat .28s cubic-bezier(.16,1,.3,1)}
@keyframes stgbeat{0%{transform:scale(1.04)}100%{transform:scale(1)}}
#stg .stgmutebtn{position:absolute;right:28px;bottom:26px;z-index:6;width:40px;height:40px;border-radius:50%;border:1px solid rgba(224,221,216,.3);background:rgba(10,19,34,.7);color:#ffffff;font-size:17px;cursor:pointer;opacity:.6;transition:opacity .2s,transform .2s}
#stg .stgmutebtn:hover{opacity:1}
#stg .stgmutebtn:active{transform:scale(.98)}
#stg .stgring .coreav.show{animation:stgglow 1.2s ease-out 1}
@keyframes stgglow{0%{filter:drop-shadow(0 0 0 rgba(212,196,166,0))}40%{filter:drop-shadow(0 0 28px rgba(212,196,166,.9))}100%{filter:drop-shadow(0 0 0 rgba(212,196,166,0))}}
.voteov.stgv .stgvband{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;border-radius:12px 12px 0 0;background:linear-gradient(90deg,#9e2b1c,#c74a38);color:#ffffff;font-size:14px;letter-spacing:.08em;margin:-4px -4px 10px}
.voteov.stgv .stgvband b{font-size:15px;letter-spacing:.2em}
.voteov.stgv .stgvband span{margin-left:auto;font-size:12px;opacity:.9}

/* 舞台質感層：暗角、顆粒、刻度錶盤、羅盤環、指針擺動、可編輯字、投票環（194/195 二版） */
#stg{-webkit-font-smoothing:antialiased}
#stg .stgvig{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 45%,rgba(0,0,0,0) 45%,rgba(6,12,21,.55) 100%)}
#stg .stggrain{position:absolute;inset:0;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E");mix-blend-mode:overlay}
#stg .stgstep{font-size:21px;letter-spacing:.32em;text-wrap:balance}
#stg .h1{letter-spacing:.24em}
#stg .stgname{letter-spacing:-.01em}
#stg .stgdial{position:relative;width:320px;height:320px;margin-top:14px;display:flex;align-items:center;justify-content:center}
#stg .stgdialsvg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
#stg .stgdialsvg .trk{fill:none;stroke:rgba(224,221,216,.12);stroke-width:6}
#stg .stgdialsvg .prg{fill:none;stroke:var(--sg2);stroke-width:6;stroke-linecap:round;filter:drop-shadow(0 0 10px rgba(212,196,166,.55));transition:stroke-dashoffset .25s linear,stroke .5s}
#stg .stgdialsvg .prg.warn{stroke:#ccae77}
#stg .stgdialsvg .prg.over{stroke:#ff7a66;filter:drop-shadow(0 0 14px rgba(255,122,102,.7))}
#stg .stgdialsvg .ticks line{stroke:rgba(224,221,216,.22);stroke-width:1.5}
#stg .stgdialsvg .ticks line.maj{stroke:rgba(212,196,166,.55);stroke-width:2}
#stg .stgdial .stgclock{margin:0;font-size:108px;letter-spacing:.02em;line-height:1}
#stg .stgdial.up .stgdialsvg .prg{stroke:#9fcce3;filter:drop-shadow(0 0 10px rgba(127,185,214,.5))}
#stg .stgover{position:absolute;left:50%;top:100%;transform:translate(-50%,8px);white-space:nowrap;font-size:22px;letter-spacing:.2em;color:#ff7a66;opacity:0;transition:opacity .28s cubic-bezier(.16,1,.3,1),transform .28s cubic-bezier(.16,1,.3,1)}
#stg .stgover.on{opacity:1;transform:translate(-50%,18px)}
#stg .stgring .stgringsvg{position:absolute;inset:-14px;width:calc(100% + 28px);height:calc(100% + 28px);pointer-events:none}
#stg .stgring .stgringsvg .outer{fill:none;stroke:rgba(166,140,82,.35);stroke-width:1}
#stg .stgring .stgringsvg .dash{fill:none;stroke:rgba(212,196,166,.5);stroke-width:6;stroke-dasharray:2 22}
#stg .stgring .pin{transform-origin:50% 0}
#stg .stgring .pin.wob{animation:stgwob .7s cubic-bezier(.16,1,.3,1)}
@keyframes stgwob{0%{transform:translateX(-50%) rotate(0)}20%{transform:translateX(-50%) rotate(-14deg)}50%{transform:translateX(-50%) rotate(9deg)}75%{transform:translateX(-50%) rotate(-4deg)}100%{transform:translateX(-50%) rotate(0)}}
#stg .stgring .core{box-shadow:0 0 0 12px rgba(15,27,48,.6),0 0 60px rgba(166,140,82,.18)}
#stg .stgvdial{position:relative;width:220px;height:220px;margin-top:10px;display:flex;align-items:center;justify-content:center}
#stg .stgvdial svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
#stg .stgvdial .trk{fill:none;stroke:rgba(224,221,216,.12);stroke-width:8}
#stg .stgvdial .prg{fill:none;stroke:#ff8a7a;stroke-width:8;stroke-linecap:round;filter:drop-shadow(0 0 10px rgba(255,138,122,.5));transition:stroke-dashoffset .4s cubic-bezier(.16,1,.3,1)}
#stg .stgvdial .stgcnt{margin:0;flex-direction:column;align-items:center;gap:0}
#stg .stgvdial .stgcnt b{font-size:88px}
#stg .stgvdial .stgcnt span{font-size:18px;color:var(--sgmute)}
#stg .stgedit{border-bottom:1px dashed transparent;cursor:text;transition:border-color .2s}
#stg .stgedit:hover{border-bottom-color:rgba(212,196,166,.5)}
#stg .stgedit.editing{outline:none;border-bottom-color:var(--sg2);background:rgba(212,196,166,.08);padding:0 4px;border-radius:4px}
#stg .stgchest{border:1px solid rgba(166,140,82,.5);box-shadow:0 0 0 10px rgba(166,140,82,.06),0 0 80px rgba(166,140,82,.18) inset}
#stg .stgchest span{display:block;animation:stgfloat 5s ease-in-out infinite}
#stg .stgchest{animation:none}
#stg .stgtile{box-shadow:0 0 0 1px rgba(255,255,255,.02) inset}
#stg .stgtile:hover{box-shadow:0 18px 40px rgba(0,0,0,.35),0 0 0 1px rgba(166,140,82,.35) inset}
#stg .stgtile .ic{box-shadow:0 0 24px rgba(166,140,82,.18) inset;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s}
#stg .stgtile:hover .ic{transform:scale(1.06);box-shadow:0 0 30px rgba(166,140,82,.35) inset}
#stg .stgjudge button i{display:inline-block;width:26px;height:26px;border-radius:50%;border:1px solid currentColor;font-style:normal;font-size:14px;line-height:24px;text-align:center;margin-right:10px;vertical-align:middle}
#stg .stgcand .m{font-variant-numeric:tabular-nums}
#stg .stgenvc .n,#stg .stgtile .t{letter-spacing:.12em}
#stg #stgctl button.main{box-shadow:0 8px 22px rgba(166,140,82,.3)}
@media (prefers-reduced-motion:reduce){#stg *{animation-duration:.01ms!important;transition-duration:.01ms!important}}
#stg[data-tool="vote"] .stgview{top:100px}
#stg .stgvdial .stgcnt b.bump{transform:scale(1.08)}

/* 本輪進度 */
#stg .stgprog{display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center;margin:-10px 0 26px;padding:12px 18px;border-radius:16px;border:1px solid rgba(224,221,216,.14);background:rgba(255,255,255,.035);max-width:1000px}
#stg .stgprog .pis{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#stg .stgprog .k{font-size:12px;letter-spacing:.3em;color:var(--sg);margin-right:4px}
#stg .stgprog .pi{font-size:14px;padding:6px 12px;border-radius:999px;border:1px solid rgba(224,221,216,.22);color:var(--sgmute)}
#stg .stgprog .pi.ok{border-color:rgba(127,176,200,.6);color:#7fb0c8;background:rgba(127,176,200,.08)}
#stg .stgprog .sum{font-size:13.5px;color:var(--sgmute);font-variant-numeric:tabular-nums}
#stg .stgprog .acts{display:flex;gap:8px;margin-left:auto}
#stg .stgprog button{border:1px solid rgba(224,221,216,.3);background:rgba(255,255,255,.06);color:var(--sgL);border-radius:12px;padding:9px 16px;font-size:15px;transition:all .2s cubic-bezier(.16,1,.3,1)}
#stg .stgprog button.nx{background:linear-gradient(180deg,#bdab8b,#957d49);color:var(--sgnavy2);font-weight:700;border-color:#957d49}
#stg .stgprog button:hover{transform:translateY(-1px)}
#stg .stgprog button:active{transform:scale(.98)}
#stg .stgprog button[disabled]{opacity:.4;cursor:default;transform:none}

/* 舞台三版：環節導覽、工具列、步驟列、下一步主鈕、角落鈕、暫停 */
#stg .stgview.home{justify-content:center;padding-top:40px}
#stg .stgenvnav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:center;margin-bottom:18px}
#stg .stgenvnav .en{display:inline-flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;border-radius:999px;border:1px solid rgba(224,221,216,.18);color:var(--sgdim);font-size:13.5px;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1)}
#stg .stgenvnav .en b{width:22px;height:22px;border-radius:50%;border:1px solid currentColor;display:inline-flex;align-items:center;justify-content:center;font-size:12px}
#stg .stgenvnav .en small{font-size:11px;opacity:.8}
#stg .stgenvnav .en.cur{color:#ffffff;border-color:var(--sg);background:rgba(166,140,82,.2)}
#stg .stgenvnav .en.cur b{background:var(--sg);color:var(--sgnavy2);border-color:var(--sg)}
#stg .stgenvnav .en.done{color:#7fb0c8;border-color:rgba(127,176,200,.4)}
#stg .stgenvnav .en.part{color:var(--sgmute)}
#stg .stgenvnav i{color:var(--sgdim);font-style:normal;font-size:14px}
#stg .stgtools{position:absolute;right:28px;top:14px;display:flex;gap:6px}
#stg .stgtools button{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;border:1px solid rgba(224,221,216,.22);background:rgba(255,255,255,.04);color:var(--sgmute);font-size:13px;transition:all .2s cubic-bezier(.16,1,.3,1)}
#stg .stgtools button i{font-style:normal;font-size:12px;color:var(--sg2)}
#stg .stgtools button:hover{color:#ffffff;border-color:var(--sg)}
#stg .stgtools button.vote i{color:#ff8a7a}
#stg .stgstepper{display:flex;align-items:center;gap:0;margin:14px 0 26px;flex-wrap:wrap;justify-content:center}
#stg .stgstepper .sp{display:inline-flex;align-items:center;gap:8px;padding:8px 14px 8px 8px;border-radius:999px;border:1px solid rgba(224,221,216,.16);color:var(--sgdim);font-size:14px;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1)}
#stg .stgstepper .sp b{width:24px;height:24px;border-radius:50%;border:1px solid currentColor;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
#stg .stgstepper .sp.done{color:#7fb0c8;border-color:rgba(127,176,200,.35)}
#stg .stgstepper .sp.done b{background:rgba(127,176,200,.18);border-color:transparent}
#stg .stgstepper .sp.cur{color:#ffffff;border-color:var(--sg);background:rgba(166,140,82,.16);box-shadow:0 0 0 4px rgba(166,140,82,.12)}
#stg .stgstepper .sp.cur b{background:var(--sg);color:var(--sgnavy2);border-color:var(--sg)}
#stg .stgstepper i{width:22px;height:1px;background:rgba(224,221,216,.22)}
#stg .stgprimary{display:flex;flex-direction:column;align-items:center;gap:10px;margin:6px 0 22px}
#stg .stgprimary .k{font-size:12px;letter-spacing:.4em;color:var(--sg)}
#stg .stgprimary .row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
#stg .stgprimary button.go{padding:18px 54px;border-radius:18px;background:linear-gradient(180deg,#bdab8b,#957d49);color:var(--sgnavy2);font-family:"Noto Serif TC",serif;font-size:26px;font-weight:900;letter-spacing:.2em;border:0;box-shadow:0 14px 40px rgba(166,140,82,.35);transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s}
#stg .stgprimary button.go:hover{transform:translateY(-2px);box-shadow:0 18px 46px rgba(166,140,82,.45)}
#stg .stgprimary button.go:active{transform:scale(.98)}
#stg .stgprimary button.alt{padding:18px 30px;border-radius:18px;background:rgba(255,255,255,.06);border:1px solid rgba(224,221,216,.3);color:var(--sgL);font-family:"Noto Serif TC",serif;font-size:20px;font-weight:700;letter-spacing:.1em;transition:all .2s cubic-bezier(.16,1,.3,1)}
#stg .stgprimary button.alt:hover{border-color:var(--sg);color:#ffffff;transform:translateY(-2px)}
#stg .stgprimary .d{font-size:13px;color:var(--sgdim)}
#stg .stgprimary.done .k{color:#7fb0c8}
#stg .stgprog{margin-top:0}
#stg .stgprog .acts button{font-size:13px;padding:6px 12px}
#stg .stgcorner{position:absolute;right:76px;bottom:26px;display:flex;gap:6px;z-index:6}
#stg .stgcorner button{width:40px;height:40px;border-radius:50%;border:1px solid rgba(224,221,216,.3);background:rgba(10,19,34,.7);color:#ffffff;font-size:15px;opacity:.6;transition:opacity .2s,transform .2s}
#stg .stgcorner button:hover{opacity:1}
#stg .stgcorner button:active{transform:scale(.98)}
#stg .stgclock.paused{opacity:.45}

/* 來源、分段、核定表（196） */
#stg .stgsrcnote{font-size:12.5px;color:var(--sgdim);margin-left:6px}
#stg .stgchip.off{opacity:.35;cursor:default}
#stg .stglrow .tag.src{background:rgba(127,185,214,.18);color:#9fcce3;cursor:pointer}
#stg .stgmark{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--sgdim);margin:10px 0 6px;letter-spacing:.08em}
#stg .stgmark:before,#stg .stgmark:after{content:"";flex:1;height:1px;background:rgba(224,221,216,.14)}
#stg .stgmark span{font-variant-numeric:tabular-nums;color:var(--sg)}
.stgtb tr.mark td{background:#f1efec;color:#465062;font-size:12.5px;border-top:2px solid #cdc2ae}
.stgtalkcard .stgamt{width:96px;text-align:right}
.stgtalkcard .stgnote{width:160px}
.stgrule{margin:6px 0 10px}
.stgrule>summary{cursor:pointer;font-size:13px;color:var(--dim,#7b673d)}
.stgrulegrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px 12px;margin:8px 0}
.stgrulegrid label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:#465062}
.stgrulegrid .small{grid-column:1/-1}
.stgrulegrid input{width:100%}
@media (max-width:700px){.stgrulegrid{grid-template-columns:repeat(2,1fr)}}
/* 投影舞台：練習場、名單感知（197） */
#stg .stgprband{position:absolute;left:0;right:0;top:54px;z-index:7;display:flex;align-items:center;justify-content:center;gap:12px;padding:6px 16px;background:linear-gradient(90deg,rgba(61,92,107,.0),rgba(61,92,107,.85) 20%,rgba(61,92,107,.85) 80%,rgba(61,92,107,0));color:#eaf1f4;font-size:13px;letter-spacing:.06em;pointer-events:auto}
#stg .stgprband b{font-family:"Noto Serif TC",serif;font-size:15px;letter-spacing:.2em;color:#ffffff;padding:2px 10px;border:1px solid rgba(255,255,255,.55);border-radius:999px}
#stg .stgprband span{opacity:.9}
#stg .stgprband button{border:1px solid rgba(255,255,255,.5);background:rgba(255,255,255,.08);color:#ffffff;border-radius:999px;padding:4px 12px;font-size:12.5px;cursor:pointer;transition:background .2s}
#stg .stgprband button:hover{background:rgba(255,255,255,.22)}
#stg .stgprband button.end{border-color:#ccae77;color:#ccae77}
#stg.stgpr .stgbg{filter:hue-rotate(-18deg) saturate(.85)}
#stg.stgpr .stgtop .l b::after{content:"　練習";color:#8fbacf;font-size:13px;letter-spacing:.2em}
#stg .stgroster{display:inline-flex;align-items:center;gap:10px;margin:4px auto 10px auto;padding:5px 14px;border-radius:999px;border:1px solid rgba(224,221,216,.22);background:rgba(10,19,34,.55);font-size:13px;color:#d6d1c8;cursor:pointer;transition:border-color .2s}
#stg .stgroster:hover{border-color:rgba(224,221,216,.5)}
#stg .stgroster .ok{color:#a7c8d8;font-weight:700}
#stg .stgroster .lf{color:#d0bd99}
#stg .stgroster .no{color:#e09a8a}
#stg .stgroster .k{color:#5c6981;font-size:12px}
#stg .stgrolehint{flex:1 0 100%;width:100%;text-align:left;margin-top:4px;font-size:12.5px;color:#63728c;letter-spacing:.04em}
#stg .stgrlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;max-height:52vh;overflow:auto;margin-top:10px}
#stg .stgrp{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:12px;border:1px solid rgba(224,221,216,.18);background:rgba(255,255,255,.04);font-size:14px;color:#ffffff}
#stg .stgrp[onclick]{cursor:pointer}
#stg .stgrp[onclick]:hover{border-color:rgba(224,221,216,.5)}
#stg .stgrp i{margin-left:auto;font-style:normal;font-size:11.5px;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.1)}
#stg .stgrp.in i{color:#a7c8d8}
#stg .stgrp.left{opacity:.75}#stg .stgrp.left i{color:#d0bd99}
#stg .stgrp.out{opacity:.5}#stg .stgrp.out i{color:#e09a8a}
#stg .stgrp .stgav .ava,#stg .stgrp .stgav .av{width:28px;height:28px;font-size:12px;box-shadow:0 0 0 1.5px rgba(166,140,82,.8)}
#stgctl button.sim{border-color:#8fbacf;color:#cfe4ef}
@media (max-width:720px){#stg .stgprband{flex-wrap:wrap;gap:6px;top:50px;font-size:12px}#stg .stgprband span{display:none}}
#stg.stgpr .stgview .stgtools{top:44px}
#stg.stgpr .stgview.home{padding-top:64px}
#stg.stgpr .stgband{top:92px}
#stg.stgpr[data-tool="vote"] .stgview{top:130px}

/* ═══ 系統維護 ═══ */
.mtwrapx{padding:0}
.mtbox{position:relative;min-height:min(720px,calc(100vh - 150px));display:flex;flex-direction:column;align-items:center;
  justify-content:center;text-align:center;padding:52px 22px;color:#e2dbcf;overflow:hidden;border-radius:18px;
  background:radial-gradient(760px 520px at 50% 8%,rgba(184,155,92,.17) 0,transparent 62%),
             radial-gradient(620px 460px at 12% 100%,rgba(64,82,112,.44) 0,transparent 60%),
             linear-gradient(#142138,#0b1526);
  box-shadow:0 22px 54px rgba(12,18,30,.32)}
.mtstars{position:absolute;inset:0;pointer-events:none;opacity:.55}
.mtstars i{position:absolute;background:#e2dbcf;border-radius:50%;animation:mttw 4s infinite}
@keyframes mttw{0%,100%{opacity:.15}50%{opacity:.85}}
.mthalo{position:absolute;top:7%;left:50%;width:330px;height:330px;transform:translateX(-50%);
  background:radial-gradient(circle,rgba(184,155,92,.22) 0,transparent 66%);animation:mtbr 6.5s ease-in-out infinite}
@keyframes mtbr{0%,100%{opacity:.5;transform:translateX(-50%) scale(.94)}50%{opacity:.95;transform:translateX(-50%) scale(1.06)}}
.mtbox>*{position:relative;z-index:1}
.mtlogo{width:168px;max-width:56%;margin-bottom:6px;filter:drop-shadow(0 4px 16px rgba(184,155,92,.3))}
.mtroom{font-size:14px;letter-spacing:.42em;color:rgba(226,219,207,.72);margin-bottom:24px;padding-left:.42em}
.mtchip{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;letter-spacing:.18em;
  color:#e4dac8;background:rgba(158,43,28,.24);border:1px solid rgba(214,132,112,.5);border-radius:999px;
  padding:6px 15px;margin-bottom:16px}
.mtdot{width:7px;height:7px;border-radius:50%;background:#e2725b;animation:mtp 1.8s infinite}
@keyframes mtp{0%,100%{opacity:1}50%{opacity:.25}}
.mth{font-size:clamp(25px,6.4vw,34px);font-weight:900;margin:0 0 16px;letter-spacing:.14em;padding-left:.14em;
  background:linear-gradient(#f2eee6,#c3b393);-webkit-background-clip:text;background-clip:text;color:transparent}
.mtmsg{font-size:15.5px;line-height:2.05;color:rgba(231,226,218,.93);max-width:32ch;margin:0 auto 28px;white-space:pre-wrap}
.mtwin{width:100%;max-width:420px;border:1px solid rgba(184,155,92,.34);border-radius:16px;
  background:rgba(12,22,38,.55);padding:16px 18px 18px}
.mtwlab{font-size:10.5px;letter-spacing:.24em;color:rgba(184,155,92,.9);margin-bottom:11px}
.mtwrow{display:flex;justify-content:space-between;gap:12px;align-items:flex-end}
.mtwt{display:flex;flex-direction:column;gap:3px;text-align:left}
.mtwt.r{text-align:right;align-items:flex-end}
.mtwd{font-size:10.5px;color:rgba(184,155,92,.82);letter-spacing:.16em}
.mtwdate{font-size:12.5px;color:rgba(226,219,207,.72);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.mtwh{font-size:23px;font-weight:700;color:#e8e1d3;font-variant-numeric:tabular-nums;letter-spacing:.05em;line-height:1.05}
.mttrack{position:relative;height:5px;border-radius:999px;background:rgba(226,219,207,.16);margin:13px 0 11px}
.mtfill{position:absolute;inset:0 auto 0 0;border-radius:999px;width:0;
  background:linear-gradient(90deg,#79663c,#d0c1a6);transition:width .5s linear}
.mtknob{position:absolute;top:50%;left:0;width:11px;height:11px;border-radius:50%;background:#f2eee6;
  transform:translate(-50%,-50%);box-shadow:0 0 0 4px rgba(184,155,92,.26);transition:left .5s linear}
.mtcd{font-size:12px;color:rgba(226,219,207,.72);letter-spacing:.04em}
.mtcd b{font-size:16px;color:#e8e1d3;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:.06em}
.mtfoot{margin-top:26px;font-size:11px;letter-spacing:.2em;color:rgba(184,155,92,.62)}
.mtaud{position:absolute;right:14px;bottom:14px;z-index:2;display:inline-flex;align-items:center;gap:7px;
  font-family:inherit;font-size:11.5px;color:rgba(226,219,207,.78);background:rgba(12,22,38,.6);
  border:1px solid rgba(184,155,92,.34);border-radius:999px;padding:6px 13px;cursor:pointer}
.mtaud:hover{border-color:rgba(184,155,92,.7);color:#e8e1d3}
.mtaud.on{background:rgba(184,155,92,.2)}
.mtaud[disabled]{opacity:.55;cursor:default}
@media(max-width:520px){
  .mtbox{padding:34px 16px;min-height:min(640px,calc(100vh - 118px))}
  .mtroom{font-size:12px;letter-spacing:.34em;margin-bottom:18px}
  .mtmsg{font-size:14.5px;line-height:1.95;max-width:26ch}
  .mtwh{font-size:20px}
  .mtwin{padding:14px 14px 16px}
}
/* 後台狀態條與開關 */
.mtstat{display:flex;align-items:center;gap:14px;padding:14px 15px;border-radius:14px;
  border:1px solid var(--line);background:#ffffff;transition:background .35s,border-color .35s}
.mtstat.on{background:linear-gradient(90deg,#fdeee9,#fff7f4);border-color:#e0b3a8}
.mtlamp{width:13px;height:13px;border-radius:50%;background:var(--teal);flex:none;box-shadow:0 0 0 4px rgba(61,92,107,.16)}
.mtstat.on .mtlamp{background:var(--wax);box-shadow:0 0 0 4px rgba(158,43,28,.14);animation:mtpl 1.9s infinite}
@keyframes mtpl{0%,100%{box-shadow:0 0 0 4px rgba(158,43,28,.14)}50%{box-shadow:0 0 0 9px rgba(158,43,28,.04)}}
.mtsx{flex:1;min-width:0;display:flex;flex-direction:column}
.mtst{display:block;font-size:17px;font-weight:700;color:var(--espresso,#162135)}
.mtsn{display:block;font-size:12px;color:var(--dim);margin-top:3px;line-height:1.5}
.mtsw{position:relative;width:62px;height:34px;border-radius:999px;border:1px solid var(--line);
  background:#eae5db;cursor:pointer;flex:none;padding:0;transition:background .3s,border-color .3s}
.mtsw::after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;
  background:linear-gradient(#fefdfc,#e2dbcf);box-shadow:0 2px 5px rgba(28,43,69,.28);
  transition:transform .3s cubic-bezier(.4,1.5,.5,1)}
.mtsw[aria-checked="true"]{background:linear-gradient(90deg,#b8352a,#9e2b1c);border-color:#8d2418}
.mtsw[aria-checked="true"]::after{transform:translateX(28px)}
.mtpv{border-radius:18px;overflow:hidden;border:1px solid var(--line)}
.mtpv .mtbox{min-height:470px;border-radius:0}
@media(prefers-reduced-motion:reduce){.mtstars i,.mthalo,.mtdot,.mtstat.on .mtlamp{animation:none}}

/* 登入前的維護告示 */
.mtlgbox{width:min(560px,94vw);margin:0 auto}
.mtlgbox .mtbox{min-height:min(660px,calc(100vh - 90px));border-radius:20px}
.mtlgin{display:flex;justify-content:center;margin-top:14px}
.mtlgin .btn{opacity:.82}
.mtlgin .btn:hover{opacity:1}

/* 簽到已完成的狀態晶片 */
.signdone{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:700;color:#2b4d5e;
  background:#dce6eb;border:1px solid #a9c0cc;border-radius:10px;padding:6px 12px;white-space:nowrap}
.mtpvnote{display:flex;gap:8px;align-items:center;background:#fdeee9;border:1px solid #e0b3a8;
  border-left:4px solid var(--wax);border-radius:12px;padding:11px 14px;margin-bottom:12px;
  font-size:13px;color:var(--ink2)}

/*PB-CSS-END*/
