.fm103-tse-page{width:100%;margin:0;padding:0}
.fm103-tse{--navy:#000;--blue:#0018ff;--yellow:#fedb24;--muted:#5a6280;background:#f4f6fc;color:var(--navy);font-family:"FM103 Election Jakarta","Plus Jakarta Sans","Segoe UI",sans-serif;padding:0 0 48px;line-height:1.5}
.fm103-tse *{box-sizing:border-box}.fm103-tse [hidden]{display:none!important}.fm103-tse__wrap{width:min(var(--fm103-content-max,1440px),calc(100% - 2 * var(--fm103-gutter,32px)));max-width:var(--fm103-content-max,1440px);margin:auto}
.fm103-tse__hero{background:#000;color:#fff;width:100%;margin:0}
.fm103-tse__hero-inner{position:relative;width:min(var(--fm103-content-max,1440px),calc(100% - 2 * var(--fm103-gutter,32px)));margin:auto;padding:40px 140px 40px 0}
.fm103-tse__hero-inner:after{content:"";position:absolute;right:0;top:37px;width:114px;height:120px;background:url("assets/pattern.svg") center/contain no-repeat;opacity:.8;pointer-events:none}
.fm103-tse__hero h1{font:700 clamp(30px,3.34vw,48px)/1.2 "FM103 Election Baloo","Baloo 2",sans-serif;letter-spacing:0;margin:0 0 8px;color:#fff}
.fm103-tse__hero p{margin:0;font-size:15px;color:#fff}.fm103-tse__hero .fm103-tse__eyebrow{font-size:11px;font-weight:400;letter-spacing:0;color:var(--yellow);margin:0 0 8px}
.fm103-tse__toolbar{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:16px 0}.fm103-tse__tabs{display:flex;padding:4px;border-radius:8px;background:#e4e8f4;gap:4px}
.fm103-tse button{font-family:inherit;cursor:pointer;border:0;font-weight:700;border-radius:8px;padding:10px 24px;color:var(--navy);background:transparent;font-size:14px;min-height:44px}.fm103-tse button[aria-pressed=true]{background:var(--blue);color:#fff}
.fm103-tse__turn-tabs{display:flex;gap:8px;border-bottom:1px solid #dce0ec;margin:28px 0 24px;padding:0 0 16px}.fm103-tse__turn-tabs button{background:#e4e8f4;color:#0018ff;min-width:140px}.fm103-tse__turn-tabs button[aria-selected=true]{background:#0018ff;color:#fff}.fm103-tse__turn-tabs button:hover{filter:brightness(.94)}
.fm103-tse__turn-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.fm103-tse__turn-heading h2{font:700 26px/1.2 "FM103 Election Baloo","Baloo 2",sans-serif;margin:0;color:#000}.fm103-tse__turn-heading p{font-size:13px;color:var(--muted);margin:0}
.fm103-tse__candidate h3,.fm103-tse__heading h2{font-family:"FM103 Election Baloo","Baloo 2",sans-serif}
.fm103-tse[data-turn="1"] .fm103-tse__candidates{grid-template-columns:repeat(3,minmax(0,1fr))}
.fm103-tse [role="tabpanel"]:focus-visible{outline:2px solid var(--blue);outline-offset:6px}
.fm103-tse__toolbar label{display:flex;align-items:center;gap:12px;font-size:13px;font-weight:600}.fm103-tse select{font-family:inherit;border:1px solid #dce0ec;background:white;color:var(--navy);border-radius:8px;padding:10px 30px 10px 12px;font-size:14px;max-width:100%}
.fm103-tse__refresh{margin-left:auto;font-size:12px;color:var(--muted)}.fm103-tse__refresh:before{content:'';display:inline-block;width:7px;height:7px;background:#8289a5;border-radius:50%;margin-right:8px}
.fm103-tse__status{font-size:14px;background:#fff6ce;border:1px solid #eee1a6;padding:12px 16px;border-radius:10px;margin:0 0 24px;color:#594a14}.fm103-tse__status[data-state=live]{background:#edf2ff;border-color:#d5def5;color:var(--navy)}.fm103-tse__status[data-state=error]{background:#fff0eb;border-color:#f1c5b5;color:#77321b}
.fm103-tse__heading{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:20px 0 16px}.fm103-tse__heading h2{font-size:22px;margin:0;font-weight:800;color:var(--navy)}.fm103-tse__heading h2 span{font-size:13px;font-weight:600;padding:5px 10px;border-radius:20px;background:#e2e6f4;vertical-align:middle;margin-left:8px}.fm103-tse__heading p{font-size:12px;color:var(--muted);margin:0}
.fm103-tse__progress-card{border:1px solid #e2e5ef;background:#fff;border-radius:14px;padding:20px 24px;margin-bottom:20px}.fm103-tse__progress-card>div:first-child{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:600}.fm103-tse__progress-card strong{font-size:26px}.fm103-tse__track{height:8px;border-radius:8px;background:#e7e9f3;margin-top:12px;overflow:hidden}.fm103-tse__track span{height:100%;display:block;background:var(--blue);border-radius:inherit;transition:width .4s}.fm103-tse__progress-card p{margin:8px 0 0;font-size:12px;color:var(--muted)}
.fm103-tse__candidates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.fm103-tse__candidate{padding:24px;border:1px solid #dfe3ee;border-radius:16px;background:#fff;box-shadow:0 6px 22px #10175005}.fm103-tse__candidate-top{display:flex;align-items:center;gap:16px}.fm103-tse__photo{width:72px;height:72px;border-radius:50%;object-fit:cover;object-position:center top;background:#edf0f6;flex-shrink:0}.fm103-tse__candidate h3{font-size:20px;font-weight:800;line-height:1.25;margin:0 0 6px;color:var(--navy);overflow-wrap:anywhere}.fm103-tse__candidate p{font-size:13px;margin:0;color:var(--muted)}.fm103-tse__candidate-meta{min-width:0}.fm103-tse__candidate-number{font-size:12px;display:inline-block;background:#e9ecf8;color:var(--navy);padding:2px 7px;border-radius:5px;margin-left:6px;font-weight:700}
.fm103-tse__candidate-result{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-top:24px}.fm103-tse__candidate-result strong{font-size:40px;letter-spacing:-1.5px;line-height:1.2;color:var(--navy)}.fm103-tse__candidate-result p{text-align:right;font-size:14px;color:var(--navy)}.fm103-tse__candidate-result small{display:block;font-size:11px;color:var(--muted)}.fm103-tse__candidate .fm103-tse__track{background:#eceef5;height:6px}.fm103-tse__candidate .fm103-tse__track span{background:var(--blue)}.fm103-tse__candidate-status{padding-top:12px;font-size:12px!important}
.fm103-tse__stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:24px 0 30px}.fm103-tse__stat{background:#fff;border:1px solid #e2e5ef;border-radius:12px;padding:18px 16px}.fm103-tse__stat span{display:block;font-size:12px;color:var(--muted)}.fm103-tse__stat strong{display:block;font-size:21px;line-height:1.4;margin-top:5px;overflow-wrap:anywhere}
.fm103-tse__notice{display:flex;justify-content:space-between;align-items:center;gap:24px;border-top:1px solid #dce0ec;padding:20px 0 0;font-size:12px;color:var(--muted)}.fm103-tse__notice p{margin:0}.fm103-tse__notice strong{color:var(--navy)}.fm103-tse a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}.fm103-tse__notice a{white-space:nowrap;font-weight:700}.fm103-tse :is(button,select,a):focus-visible{outline:3px solid #ba9400;outline-offset:3px}
@media(max-width:1000px){.fm103-tse[data-turn="1"] .fm103-tse__candidates{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.fm103-tse{padding:0 0 32px}.fm103-tse__wrap,.fm103-tse__hero-inner{width:calc(100% - 32px)}.fm103-tse__hero-inner{padding:24px 0}.fm103-tse__hero-inner:after{width:50px;height:53px;right:0;top:16px;opacity:.55}.fm103-tse__hero h1{font-size:30px;padding-right:56px}.fm103-tse__hero p{font-size:12px}.fm103-tse__turn-tabs{margin:24px 0 20px}.fm103-tse__turn-tabs button{flex:1;min-width:0}.fm103-tse__turn-heading{display:block}.fm103-tse__turn-heading h2{font-size:22px}.fm103-tse__turn-heading p{margin-top:6px;font-size:12px}.fm103-tse__toolbar{gap:14px}.fm103-tse__refresh{margin-left:0;width:100%}.fm103-tse__toolbar label{flex:1;justify-content:flex-end}.fm103-tse__candidates,.fm103-tse[data-turn="1"] .fm103-tse__candidates{grid-template-columns:1fr}.fm103-tse__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.fm103-tse__stat:last-child{grid-column:1/-1}.fm103-tse__notice{display:block}.fm103-tse__notice a{display:inline-block;margin-top:12px}.fm103-tse__heading{gap:8px}.fm103-tse__candidate-result strong{font-size:36px}}
@media(max-width:430px){.fm103-tse__toolbar label{justify-content:flex-start;width:100%;flex:auto}.fm103-tse__candidate{padding:20px}}
@font-face{font-family:"FM103 Election Baloo";src:url("assets/Baloo2.ttf") format("truetype");font-weight:400 800;font-display:swap}
@font-face{font-family:"FM103 Election Jakarta";src:url("assets/PlusJakartaSans.ttf") format("truetype");font-weight:200 800;font-display:swap}
