:root{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;color:#263934;background:#f5f7f6;font-synthesis:none;font-size:14px;--green:#245e50;--muted:#83918a;--line:#e6ebe8;--amber:#b9823b}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;transition:background .15s,box-shadow .15s}button:disabled{cursor:not-allowed;opacity:.45}a{color:var(--green)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #9fcdc0;outline-offset:3px}button svg{flex-shrink:0}h1,h2,h3,p{margin:0}h1{font-size:28px;font-weight:650;letter-spacing:-.8px}h2{font-size:16px;font-weight:650}p{line-height:1.75}.muted{color:var(--muted)}.block{display:block}.warning-text{color:#b77933;max-width:220px;line-height:1.5}.danger{color:#a65349!important}.loading{min-height:100vh;display:grid;place-items:center;color:var(--green)}.app-shell{display:flex;min-height:100vh}.sidebar{width:234px;background:#fcfdfc;border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:30;padding:32px 20px 18px}.brand{display:flex;align-items:center;gap:12px;color:#194b3f;font-size:25px;font-weight:680;letter-spacing:2px}.brand-icon{width:39px;height:42px;display:grid;place-items:center;background:#e5eee8;border-radius:13px}.brand-icon svg{width:24px;height:24px}.brand small{display:block;font-size:8px;letter-spacing:2.2px;font-weight:650;margin-top:3px;color:#899b92}.workspace-name{font-size:12px;font-weight:650;margin:35px 13px 28px;color:#62776d}.workspace-name span{display:block;margin-top:7px;font-weight:400;font-size:11px;color:#9aa69f}.sidebar nav{display:flex;flex-direction:column;gap:7px}.sidebar nav button{display:flex;align-items:center;gap:13px;padding:13px 15px;border:0;border-radius:8px;background:transparent;color:#78877f;text-align:left;font-size:13px}.sidebar nav button:hover{background:#f1f5f2}.sidebar nav button.active{background:#e7f0e9;color:#255f4d;font-weight:650}.sidebar nav button b{margin-left:auto;background:#d8e7dc;color:#2c614f;font-size:10px;padding:2px 6px;border-radius:4px}.sidebar-bottom{margin-top:auto;padding-top:50px}.local-status{font-size:10px;color:#8b9a91;display:flex;align-items:center;gap:7px;padding:0 13px 20px}.profile{display:flex;gap:10px;align-items:center;border-top:1px solid var(--line);padding:20px 5px 0}.profile strong{display:block;font-size:12px}.profile small{display:block;font-size:10px;color:#93a096;margin-top:4px}.profile button{margin-left:auto}.avatar{width:36px;height:36px;border-radius:50%;background:#e2ece5;color:#397257;display:inline-flex;align-items:center;justify-content:center;font-size:13px}.avatar.small{width:30px;height:30px;font-size:11px}.avatar.tiny{width:26px;height:26px;font-size:10px;background:#edf2ee}.app-shell main{margin-left:234px;flex:1;min-width:0}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);padding:0 38px;display:flex;justify-content:space-between;align-items:center}.breadcrumb,.topbar-right{display:flex;align-items:center;gap:17px;font-size:11px;color:#89958e}.breadcrumb strong{font-weight:500;color:#425d50}.slash{color:#d1d9d3}.topbar-right{gap:19px}.demo-badge{font-size:10px;border:1px solid #dce5d8;border-radius:20px;padding:4px 10px;color:#75826b;background:#f6f8ef}.content{padding:32px 38px 18px;max-width:1640px;margin:auto}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px;gap:15px}.eyebrow{font-size:10px;letter-spacing:1.6px;color:#83998d;margin-bottom:10px}.page-head p{font-size:12px;color:#8a978f;margin-top:11px}.primary,.secondary,.light-button{border-radius:7px;display:inline-flex;justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-size:12px;min-height:38px;white-space:nowrap}.primary{color:#fff;background:var(--green);border:1px solid var(--green);box-shadow:0 2px 3px #183e3910}.primary:hover{background:#194b3f}.secondary{color:#4e665a;border:1px solid #dce5de;background:#fff}.secondary:hover{background:#f2f6f3}.light-button{background:#fff;color:#32654c;border:0;margin-top:20px;padding:10px 13px}.text-btn{display:inline-flex;align-items:center;gap:5px;background:none;border:0;color:#5c826d;font-size:11px;padding:4px 0}.icon-btn{background:transparent;border:0;color:#8b9a90;display:inline-flex;align-items:center;justify-content:center;padding:5px;border-radius:6px}.icon-btn:hover{background:#ecf2ed}.button-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.small-btn{padding:6px 10px;min-height:30px;font-size:11px}.full{width:100%}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:25px}.stat{padding:22px;background:#fff;border:1px solid var(--line);border-radius:11px;position:relative;overflow:hidden}.stat>span{font-size:12px;color:#87958a}.stat strong{display:block;font-size:34px;letter-spacing:-1px;font-weight:620;margin-top:15px;color:#294938}.stat strong small{font-size:11px;font-weight:400;letter-spacing:0;margin-left:9px;color:#8b978f}.stat-foot{font-size:10px;color:#9aa59e;margin-top:12px;display:flex;align-items:center;gap:5px}.stat-icon{position:absolute;right:21px;top:23px;color:#aebfb2;width:18px}.dot,.amber-dot{width:6px;height:6px;border-radius:50%;display:inline-block;background:#65a783;flex-shrink:0}.amber-dot{background:#c7a065}.overview-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,1fr);gap:24px}.main-column,.side-column{min-width:0}.panel{background:#fff;border:1px solid var(--line);border-radius:11px;padding:23px;margin-bottom:23px;min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:22px}.panel-head p{font-size:11px;color:#98a298;margin-top:8px;max-width:680px}.panel-head>.button-row select{max-width:210px}.today-card{display:flex;justify-content:space-between;background:#e9f0e7;padding:26px 28px;border-radius:11px;margin-bottom:23px;min-height:197px;overflow:hidden;position:relative}.today-card .eyebrow{color:#7e9782;letter-spacing:1px}.today-card h2{font-size:26px;font-weight:580;color:#31553d;margin-top:4px}.today-card p{font-size:11px;color:#7b9180;margin-top:9px}.today-art{color:#a7bfa4;display:flex;align-items:center;gap:20px;margin-left:20px}.today-art span{font-size:11px;color:#8b9f88;line-height:1.9}.tag{display:inline-flex;align-items:center;border-radius:4px;background:#f1f4f0;color:#819180;font-size:10px;padding:4px 8px;line-height:1.3;white-space:nowrap}.tag.pending,.tag.submitted,.tag.draft{background:#faf3e6;color:#b79152}.tag.approved,.tag.published,.tag.passed{background:#edf5ee;color:#6a9270}.tag.rejected,.tag.resubmit{background:#faf0ed;color:#b97b6e}.tag.cancelled{color:#939b94}.empty{display:flex;align-items:center;justify-content:center;gap:13px;min-height:112px;font-size:12px;color:#a0aca1;line-height:1.6;text-align:center}.todo-list{margin:0 -3px}.todo{display:flex;align-items:center;gap:13px;width:100%;border:0;background:#fff;text-align:left;padding:12px 0;border-bottom:1px solid #f0f2ef;color:#536651}.todo:last-child{border:0}.todo>div:nth-child(2){flex:1;min-width:0}.todo strong{font-size:12px;font-weight:500}.todo p{font-size:10px;color:#9da79c;margin-top:6px}.todo-icon{display:grid;place-items:center;width:37px;height:37px;border-radius:8px;background:#ecf2ed;color:#83a18a}.todo-icon.amber{background:#faf3e7;color:#b8a06f}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}th{font-weight:400;color:#9ba69c;background:#f8faf7;padding:13px 14px;font-size:11px;white-space:nowrap}td{padding:15px 14px;color:#677764;border-bottom:1px solid #edf1eb;line-height:1.6}tbody tr:last-child td{border-bottom:0}td select{font-size:11px;padding:5px 7px;min-height:31px;max-width:140px}td .button-row{gap:8px}.name-cell{display:flex;align-items:center;gap:9px;white-space:nowrap}.connection{display:flex;justify-content:space-between;align-items:center;margin-bottom:21px;gap:20px;font-size:11px;color:#73836f}.connection:last-child{margin-bottom:0}.connection>span:first-child{display:flex;align-items:center;gap:8px}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.month-title{font-size:12px;color:#a0aa9e}.month-title strong{font-weight:600;margin-left:8px;font-size:15px;color:#53634d}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.weekday{font-size:11px;color:#a3aea0;text-align:center;padding:8px 0 13px}.weekday.weekend{color:#bdc5b8}.day{min-height:108px;background:#fff;border:1px solid #e9eee7;border-radius:6px;padding:10px;text-align:left;color:#66735f;display:flex;flex-direction:column;min-width:0}.day.blank{border-color:transparent;background:none}.day.rest{background:#f4f7ee;color:#97a18a}.day.today{border-color:#599475;box-shadow:inset 0 0 0 1px #599475}.day.focused{outline:2px solid #b2cbb8}.day.chosen{background:#dceee2;border-color:#8ab498}.day-top{display:flex;align-items:center;justify-content:space-between;gap:3px}.day-top>span{font-size:12px}.day-top small{font-size:9px;color:#aab29e}.day-top .makeup{color:#ba9470}.day-label{font-size:10px;line-height:1.4;margin-top:8px;color:#99a089;overflow-wrap:anywhere}.duty-label{font-size:10px;color:#618a6b;border-radius:3px;margin-top:auto;padding-top:9px;overflow-wrap:anywhere}.duty-label.conflict{color:#b5806c}.calendar-grid.compact{gap:3px}.compact .weekday{padding-bottom:10px;font-size:10px}.compact .day{min-height:43px;border:0;padding:7px 4px;border-radius:5px;position:relative}.compact .day-top{justify-content:center}.compact .day-top span{font-size:10px}.compact .day small{position:absolute;top:2px;right:2px;font-size:7px}.compact .day.today{background:#3c7155;color:#fff;box-shadow:none}.compact .duty-label{padding-top:2px;margin:0;line-height:4px;text-align:center}.compact .duty-label .dot{width:3px;height:3px}.legend{display:flex;align-items:center;gap:15px;font-size:9px;color:#95a18e;flex-wrap:wrap;margin-top:19px}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:6px;height:6px;border-radius:2px}.rest-dot{background:#dfe9cf}.work-dot{background:#7ca58c}.day-detail{padding:14px 0 0;font-size:12px;display:flex;gap:15px;flex-wrap:wrap;color:#88977f}.day-detail strong{font-weight:550;color:#50694f}.two-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:23px;align-items:start}.field{display:flex;flex-direction:column;gap:8px;font-size:11px;color:#798974;margin-bottom:16px;flex:1;min-width:0}.field>span{line-height:1.5}input,select,textarea{border:1px solid #dfe7dc;border-radius:6px;padding:10px 11px;min-height:38px;background:#fff;color:#4b6247;width:100%;min-width:0;font-size:12px}textarea{min-height:80px;resize:vertical}input::placeholder,textarea::placeholder{color:#b5bdb0}input[type=checkbox]{width:14px;height:14px;min-height:0;accent-color:#49785b}input[type=file]{font-size:11px;padding:8px}.form-row{display:flex;gap:15px}.inline-form{display:flex;align-items:end;gap:17px;flex-wrap:wrap}.inline-form .field{margin-bottom:0;flex:1;min-width:145px}.inline-form .primary{margin-bottom:0}.checkbox{font-size:11px;display:flex;align-items:center;gap:8px;min-height:38px;white-space:nowrap;color:#88947d}.inset-form{border-top:1px solid var(--line);margin-top:22px;padding-top:22px}.note{font-size:11px;background:#f5f7f0;color:#8b977d;border-radius:7px;padding:13px 16px;margin-top:19px;line-height:1.8}.hint{font-size:10px;color:#a1ac96;line-height:1.8;margin-top:12px}.policy-banner{display:flex;align-items:center;gap:17px;border:1px solid #dfe9db;border-radius:9px;padding:19px 23px;background:#edf3e9;margin-bottom:24px;color:#6b8b61}.policy-banner>div{flex:1}.policy-banner strong{font-size:13px;font-weight:550}.policy-banner p{font-size:11px;color:#93a188;margin-top:5px}.transfer-summary{margin:18px 0;background:#f6f8f2;border-radius:7px;padding:15px;display:flex;align-items:center;gap:15px}.transfer-summary>div{flex:1;min-width:0}.transfer-summary span{font-size:11px;color:#71865f}.transfer-summary p{font-size:10px;color:#9ca98c;margin-top:7px;word-break:break-word}.transfer-summary svg{color:#b0bba0}.vacation-list>div{display:flex;gap:12px;align-items:center;margin-bottom:20px;color:#8da17e}.vacation-list strong{font-size:12px;color:#627853;font-weight:550}.vacation-list p{font-size:11px;color:#9ba98a;margin-top:5px}.request-list{display:grid;gap:15px}.request-card{border:1px solid var(--line);border-radius:7px;padding:18px}.request-top{display:flex;align-items:center;gap:15px}.request-top strong{font-size:13px;font-weight:550}.request-top>span:nth-child(2){font-size:11px;color:#97a38a}.request-top .tag{margin-left:auto}.request-dates{display:flex;align-items:center;gap:13px;font-size:11px;margin:13px 0;color:#829274;flex-wrap:wrap}.request-card>p{font-size:12px;color:#8e9d81;margin-bottom:12px}.point-list>div{border-bottom:1px solid var(--line);padding-bottom:13px;margin-bottom:15px}.point-list>div>div{display:flex;justify-content:space-between;gap:15px;align-items:center}.point-list strong{font-size:12px;font-weight:550}.point-list p{font-size:11px;color:#939f87;margin-top:8px}details summary{cursor:pointer;color:#6a855a;font-size:12px;padding:5px 0}details form{margin-top:17px}.check-summary{display:flex;align-items:center;justify-content:space-between;gap:20px}.check-summary strong{font-size:14px;font-weight:550;margin-left:12px}.check-summary p{font-size:11px;color:#9caa90;margin-top:11px}.photo-points{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:22px 0}.photo-point{border:1px solid var(--line);border-radius:8px;padding:18px}.photo-point>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px}.photo-point strong{font-size:12px;font-weight:550}.photo-point p{font-size:11px;color:#97a58a;margin-top:10px}.photo-strip{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.photo-strip a{display:block;position:relative;font-size:10px}.photo-strip img{width:110px;height:90px;object-fit:cover;border-radius:5px}.photo-strip small{display:block;color:#b78664}.upload-button{display:inline-flex;align-items:center;gap:7px;position:relative;margin-top:15px;color:#789866;font-size:11px;border:1px dashed #ccd9c3;border-radius:5px;padding:9px 12px;cursor:pointer}.upload-button input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.disabled{opacity:.4}.attendance-bars>div{margin-bottom:25px}.attendance-bars>div>div:first-child{display:flex;justify-content:space-between;gap:15px;font-size:12px}.attendance-bars strong{font-weight:500}.attendance-bars small{font-size:10px;color:#a5af9c}.bar-track{height:7px;background:#f2f5ed;border-radius:5px;margin-top:10px;overflow:hidden}.bar-track>div{height:100%;background:#98b892;border-radius:5px}.bar-track .amber-bar{background:#d2bc89}.report-list>div{border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:17px}.report-list>div:last-child{border:0;margin-bottom:0}.report-list>div>div{display:flex;justify-content:space-between;align-items:center}.report-list strong{font-size:12px;font-weight:550}.report-list p{font-size:11px;color:#9ba68e;margin-top:9px}.toast{display:flex;align-items:center;gap:10px;padding:13px 16px;border-radius:7px;background:#e6f1e5;color:#597b4d;font-size:12px;margin-bottom:20px;line-height:1.6}.toast.error{background:#faefeb;color:#a36a5e}.toast>span:first-child{display:flex}.toast>button{margin-left:auto}.page-footer{border-top:1px solid var(--line);padding-top:19px;margin-top:20px;display:flex;justify-content:space-between;color:#acb5a4;font-size:9px;letter-spacing:.5px}.mobile-menu{display:none!important}.login-screen{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:#fff}.login-story{padding:55px 65px;display:flex;flex-direction:column;justify-content:space-between;background:#e8efe5;min-height:100vh}.login-story h1{font-size:42px;line-height:1.55;font-weight:550;letter-spacing:-1px;color:#355f42;margin-top:18px}.login-story p{font-size:14px;color:#8da082;line-height:2;margin-top:25px}.story-footer{font-size:11px;color:#91a388}.login-side{display:flex;align-items:center;justify-content:center;padding:40px}.login-card{width:100%;max-width:340px}.login-card h2{font-size:25px;font-weight:550;margin:12px 0}.login-card>p{font-size:12px;margin-bottom:32px}.login-card .field{margin-bottom:21px}.login-card .primary{margin-top:8px;justify-content:space-between;padding:12px 15px}.demo-login{margin-top:28px;background:#f5f7f0;border-radius:8px;padding:17px;font-size:11px;color:#8a997b}.demo-login strong{font-weight:550;color:#6a8159}.demo-login p{margin-top:9px;line-height:1.9}.demo-login button{margin-top:12px}.form-error{color:#b07665;background:#faf1ee;padding:12px;margin-top:18px;border-radius:7px;font-size:12px}@media(min-width:1500px){.content{padding-top:40px}.stats{gap:24px}.overview-grid{grid-template-columns:minmax(0,1.85fr) minmax(320px,1fr)}}@media(max-width:1200px){.sidebar{width:208px;padding-left:15px;padding-right:15px}.app-shell main{margin-left:208px}.content{padding:27px 25px}.topbar{padding:0 25px}.overview-grid{gap:18px;grid-template-columns:minmax(0,1.4fr) minmax(275px,1fr)}.stats{gap:13px}.stat{padding:18px}.stat-icon{right:15px}.today-art span{display:none}.today-art{margin-left:10px}.panel{padding:19px}.two-columns{gap:18px}.day{padding:7px;min-height:94px}.login-story{padding:40px}.login-story h1{font-size:34px}}@media(max-width:960px){.sidebar{width:190px;padding:25px 12px 15px}.sidebar nav button{font-size:12px;gap:10px;padding:12px}.brand{font-size:22px;gap:9px}.app-shell main{margin-left:190px}.content{padding:24px 20px}.stats{grid-template-columns:repeat(2,1fr)}.overview-grid,.two-columns{grid-template-columns:1fr}.side-column{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}.today-art span{display:block}.photo-points{grid-template-columns:1fr}.panel-head{align-items:flex-start}.page-head h1{font-size:24px}}@media(max-width:680px){.sidebar{transform:translate(-100%);transition:transform .2s;width:235px;padding:25px 20px}.sidebar.open{transform:translate(0)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#16382255;z-index:20}.app-shell main{margin-left:0}.topbar{height:61px;padding:0 17px}.mobile-menu{display:inline-flex!important}.breadcrumb{gap:9px;font-size:10px}.topbar-right{gap:10px}.desktop-date{display:none}.content{padding:23px 16px 18px}.page-head{margin-bottom:21px;align-items:flex-start}.page-head h1{font-size:23px;line-height:1.45}.page-head p{font-size:11px;margin-top:8px}.page-head>.primary{font-size:0;padding:10px;min-width:38px}.page-head>.primary svg{width:17px}.stats{gap:11px;margin-bottom:18px}.stat{padding:17px 15px}.stat strong{font-size:30px;margin-top:14px}.stat strong small{font-size:10px;margin-left:5px}.stat>span{font-size:11px}.stat-icon{width:15px;right:14px;top:19px}.stat-foot{font-size:9px;margin-top:11px;line-height:1.5}.side-column{display:block}.panel{padding:18px 15px;margin-bottom:18px}.panel-head{margin-bottom:20px;flex-wrap:wrap;gap:12px}.panel-head p{font-size:10px}.today-card{padding:23px 21px;min-height:180px;margin-bottom:18px}.today-art span{display:none}.today-art svg{width:53px}.today-card h2{font-size:24px}.today-card p{font-size:10px}.today-card .light-button{font-size:11px;margin-top:18px}.todo .tag{display:none}.todo p{font-size:10px}.day{min-height:81px;padding:6px 4px}.day-label{font-size:8px;line-height:1.5}.day-top>span{font-size:10px}.day-top small{font-size:8px}.duty-label{font-size:8px;padding-top:6px}.calendar-grid{gap:3px}.legend{gap:10px;font-size:8px}.form-row{gap:10px}.inline-form .field{min-width:130px}.policy-banner{padding:16px;gap:10px}.policy-banner strong{font-size:12px}.policy-banner p{font-size:10px}.policy-banner>.tag{display:none}.policy-banner>svg{flex-shrink:0;width:20px}.transfer-summary{padding:12px;gap:8px}.transfer-summary p{font-size:9px}.request-dates{gap:8px;font-size:10px}.request-card{padding:14px}.photo-point{padding:15px}.check-summary strong{font-size:12px}.page-footer{font-size:8px;gap:10px}.login-screen{grid-template-columns:1fr}.login-story{min-height:auto;padding:30px 27px}.login-story>div:nth-child(2){margin-top:37px}.login-story h1{font-size:29px;line-height:1.45;margin-top:10px}.login-story p,.story-footer{display:none}.login-side{padding:32px 25px}.login-card{max-width:420px}.login-card h2{font-size:22px}.demo-login{margin-top:22px}}.view-tabs{display:flex;gap:8px;margin-bottom:20px}.view-tabs button{border:1px solid #dbe5df;background:#fff;padding:10px 18px;border-radius:9px;color:#52665a}.view-tabs button.active{background:#25654e;color:#fff;border-color:#25654e}.week-controls{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}.week-controls p{margin-bottom:0;color:#708077}.week-controls input,.panel-head input{width:155px}.week-controls select{max-width:150px}.plan-legend{display:flex;gap:20px;flex-wrap:wrap;color:#5c6c63;font-size:12px;margin:12px 0 22px}.plan-legend span{display:flex;align-items:center;gap:7px}.plan-legend i{display:inline-block;width:12px;height:12px;border-radius:3px}.holiday-key{background:#dae9dd}.flex-key{background:#f2f4f2;border:1px solid #dde3dd}.work-key,.time-segment.work{background:#459e7b}.course-key,.time-segment.course{background:#618fce}.unknown-key{background:#d9a759}.matrix-scroll{overflow-x:auto;max-width:100%;border:1px solid #e3e9e3;border-radius:10px}.matrix-scroll table{border-collapse:separate;border-spacing:0;width:100%;table-layout:fixed}.matrix-scroll th,.matrix-scroll td{text-align:center;border-bottom:1px solid #edf0eb;border-right:1px solid #edf0eb;padding:9px 6px}.matrix-scroll thead th{font-size:12px;background:#f7f9f6;color:#647367}.matrix-scroll tbody th{background:#fff;font-size:13px}.matrix-scroll tr:last-child>*{border-bottom:0}.matrix-scroll th:first-child{position:sticky;left:0;z-index:2;width:105px;box-shadow:2px 0 5px #00000004}.matrix-scroll thead th:first-child{background:#f7f9f6}.matrix-scroll small{display:block;font-size:11px;font-weight:400;margin-top:5px;color:#819084}.presence-matrix{min-width:1000px}.presence-matrix th:first-child{width:90px}.plan-cell{border:0;width:100%;border-radius:5px;min-height:31px;font-size:11px;color:#6f7f72;background:#f6f7f5}.plan-cell.holiday{background:#e0ecdf;color:#396446}.plan-cell:hover{outline:2px solid #739e82}.weekly-matrix{min-width:860px}.weekly-matrix.daily{min-width:820px}.gantt-cell{width:100%;border:0;background:transparent;padding:8px 2px 0;border-radius:5px}.gantt-cell:hover{background:#f0f5f2}.gantt-track{position:relative;height:16px;background:repeating-linear-gradient(to right,#f2f5f2 0,#f2f5f2 calc(25% - 1px),#dfe7df calc(25% - 1px),#dfe7df 25%);border-radius:3px}.time-segment{position:absolute;top:2px;height:12px;border-radius:2px}.unpaired-punch{position:absolute;top:-3px;height:22px;width:2px;background:#c38825}.day-hours{font-size:11px;color:#738174;display:block;margin-top:7px}.day-hours b{color:#b97e20}.mini-axis,.full-axis{display:flex;justify-content:space-between;font-size:10px;color:#99a398;font-weight:400;margin-top:9px}.target-track{height:3px;background:#eef2eb;border-radius:3px;margin:7px auto 0;width:64px;overflow:hidden}.target-track i{display:block;height:100%;background:#729b79}.report-cell{width:100%;border:0;border-radius:7px;min-height:50px;padding:8px;font-size:12px}.report-cell small{font-size:10px;color:inherit;opacity:.7}.report-cell.submitted,.status-key.submitted{background:#e1efe5;color:#447452}.report-cell.missing,.status-key.missing{background:#f8e7e0;color:#ac6047}.report-cell.exempt,.status-key.exempt{background:#f0f2ee;color:#889184}.report-cell.unknown,.status-key.unknown{background:#faf0d7;color:#ab893f}.report-cell:hover{outline:2px solid currentColor}.report-stats .stat{min-height:100px}.report-stats .missing strong,.report-label.missing{color:#ac6047}.view-explanation{color:#79857c;font-size:12px;line-height:1.9;margin-top:18px}.selected-detail p{font-size:13px;line-height:1.9}.selected-detail li{font-size:12px;line-height:2}.selected-detail{margin-top:18px}.detail-totals{display:flex;gap:24px;flex-wrap:wrap;font-size:13px;color:#61776c}.full-axis{margin-top:28px;margin-bottom:8px;font-size:11px}.gantt-track.large{height:30px}.gantt-track.large .time-segment{top:5px;height:20px}.issue-text{color:#aa7c32}.source-details summary{cursor:pointer;font-size:13px;font-weight:600;color:#47604e}.source-details>div{margin:18px 0}.source-details p{font-size:12px;line-height:1.9}.source-details a{color:#457891}.missing-list{display:grid;grid-template-columns:repeat(2,1fr);gap:0 32px;margin-top:20px}.missing-list>div{display:flex;gap:20px;padding:13px 0;border-bottom:1px solid #edf0eb;font-size:13px}.missing-list strong{min-width:65px}.missing-list span{color:#a66e52}.report-body{white-space:pre-wrap;background:#f6f8f4;padding:16px;border-radius:8px;overflow-wrap:anywhere}@media(max-width:750px){.week-controls{align-items:flex-start}.week-controls .button-row,.panel-head,.panel-head .button-row{flex-wrap:wrap}.missing-list{grid-template-columns:1fr}.detail-totals{gap:10px 20px}.view-tabs button{padding:10px 12px}}.attendance-weeks{border:1px solid #e1e8e1;border-radius:10px;overflow:hidden}.student-week{display:grid;grid-template-columns:114px minmax(0,1fr);border-bottom:1px solid #dfe7df;padding:14px 12px 14px 0;gap:0 12px}.student-week:last-child{border-bottom:0}.student-week-person{display:flex;flex-direction:column;justify-content:center;align-items:center;border-right:1px solid #e6ece5;gap:6px;color:#738174;font-size:11px}.student-week-person>strong{font-size:15px;color:#395847;margin-bottom:9px}.student-week-person>b{font-size:14px;font-variant-numeric:tabular-nums;color:#3e6650;font-weight:600}.student-week-person>small{font-size:10px;color:#8b988c}.student-week-person .target-track{margin:2px 0;width:64px}.student-week-timeline{min-width:0}.student-time-axis,.attendance-day{display:grid;grid-template-columns:85px minmax(0,1fr) 76px;gap:10px;align-items:center}.student-time-axis{font-size:10px;color:#7c8b80;height:25px;padding:0 6px}.student-time-axis>div{position:relative;height:14px}.student-time-axis>div>span{position:absolute;transform:translate(-50%);font-variant-numeric:tabular-nums}.student-time-axis>div>span:first-child{transform:none}.student-time-axis>div>span:last-child{transform:translate(-100%)}.student-time-axis>span:last-child{text-align:right}.attendance-day{width:100%;height:28px;padding:0 6px;border:0;border-radius:4px;background:transparent;text-align:left;color:#536f5c}.attendance-day.weekend{background:#f8faf7}.attendance-day:hover,.attendance-day.selected{background:#eaf2ed}.attendance-day:focus-visible,.report-cell:focus-visible{outline:2px solid #427c62;outline-offset:-2px}.attendance-date{display:flex;justify-content:space-between;gap:5px;font-size:12px;font-variant-numeric:tabular-nums}.attendance-date small{font-size:10px;color:#869387}.habit-track{display:block;height:20px;border-radius:0;background:linear-gradient(to bottom,transparent 9px,#e2e8e1 9px,#e2e8e1 10px,transparent 10px),repeating-linear-gradient(to right,transparent 0,transparent calc(12.5% - 1px),#e8ede6 calc(12.5% - 1px),#e8ede6 12.5%)}.habit-track .time-segment{top:4px;height:12px;border-radius:2px}.habit-track .unpaired-punch{top:1px;height:18px}.empty-timeline{position:relative;display:inline-block;background:#fff;color:#9ca69b;font-size:10px;line-height:20px;padding:0 5px;margin-left:4px}.attendance-day.weekend .empty-timeline{background:#f8faf7}.attendance-day:hover .empty-timeline,.attendance-day.selected .empty-timeline{background:#eaf2ed}.attendance-hours{text-align:right;font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}.attendance-hours b{color:#b27a28}.inline-day-detail{grid-column:1/-1;margin:14px 0 0 12px;padding:18px;background:#f7faf6;border:1px solid #e0e8df;border-radius:7px}.inline-day-detail .panel-head{margin-bottom:14px}.inline-day-detail h2{font-size:14px}.weekly-matrix.daily th,.weekly-matrix.daily td{padding:3px 5px}.weekly-matrix.daily thead th{padding:10px 5px}.weekly-matrix.daily tbody th{font-size:12px}.weekly-matrix.daily .report-cell{min-height:28px;height:28px;padding:3px 5px;font-size:11px;line-height:20px;border-radius:4px}.report-stats{gap:12px;margin-bottom:16px}.report-stats .stat{min-height:0;padding:13px 17px;display:flex;align-items:center;justify-content:space-between;gap:12px}.report-stats .stat strong{margin:0;font-size:25px;line-height:1.2}.report-stats .stat strong small{font-size:10px;margin-left:5px}.report-stats .stat>span{font-size:12px}.weekly-panel.daily .panel-head{margin-bottom:12px}.weekly-panel.daily .plan-legend{margin:4px 0 13px}.weekly-panel.daily .view-explanation{margin-top:12px}.compact-controls{padding-top:16px;padding-bottom:16px}@media(max-width:750px){.student-week{grid-template-columns:85px minmax(0,1fr);gap:0 8px;padding-right:8px}.student-week-person>strong{font-size:13px}.student-week-person>b{font-size:11px}.student-time-axis,.attendance-day{grid-template-columns:72px minmax(0,1fr) 60px;gap:7px}.attendance-date{font-size:11px}.attendance-hours{font-size:10px}.student-time-axis>div>span:nth-child(2n){display:none}.report-stats .stat{padding:12px}.report-stats .stat strong{font-size:22px}}@media(max-width:480px){.student-week{grid-template-columns:1fr;padding:12px 6px;gap:8px}.student-week-person{flex-direction:row;justify-content:flex-start;padding:0 6px;border:0;gap:10px}.student-week-person>strong{margin:0}.student-week-person>span,.student-week-person .target-track{display:none}.student-week-person>small{margin-left:auto}.student-time-axis,.attendance-day{grid-template-columns:68px minmax(0,1fr) 54px;gap:6px}.attendance-day{height:32px}.empty-timeline{font-size:9px}.inline-day-detail{margin-left:0;padding:12px}}.schedule-workday{--schedule-bg:#e9f0fc;--schedule-ink:#345d93;--schedule-border:#c9d9f1}.schedule-makeup{--schedule-bg:#fff0d6;--schedule-ink:#88550f;--schedule-border:#efcf98}.schedule-national{--schedule-bg:#e1f0e6;--schedule-ink:#346946;--schedule-border:#bad9c3}.schedule-personal{--schedule-bg:#efe5f8;--schedule-ink:#74509b;--schedule-border:#d9c4ec}.schedule-group{--schedule-bg:#ddf2f0;--schedule-ink:#326e6a;--schedule-border:#b9dfdb}.schedule-weekend{--schedule-bg:#f2f3f1;--schedule-ink:#7b8479;--schedule-border:#e1e4dd}.plan-cell[class*=schedule-],.day[class*=schedule-],.schedule-badge{background:var(--schedule-bg);color:var(--schedule-ink);border:1px solid var(--schedule-border)}.plan-cell[class*=schedule-]{font-weight:500}.plan-cell[class*=schedule-]:hover,.plan-cell[class*=schedule-]:focus-visible{outline:2px solid var(--schedule-ink);outline-offset:-2px}.day[class*=schedule-] .day-label,.day[class*=schedule-] .day-top small{color:var(--schedule-ink)}.day[class*=schedule-].today{box-shadow:inset 0 0 0 2px #54856c}.day[class*=schedule-].focused{outline:2px solid #54856c;outline-offset:1px}.day[class*=schedule-].chosen{box-shadow:inset 0 0 0 2px #2f6650;outline:2px solid #2f6650;outline-offset:1px}.schedule-legend{display:flex;flex-wrap:wrap;gap:12px 20px;margin:12px 0 20px;font-size:12px;color:#566658}.schedule-legend>span{display:flex;align-items:center;gap:7px}.schedule-legend i{width:13px;height:13px;border-radius:3px;background:var(--schedule-bg);border:1px solid var(--schedule-border);display:inline-block}.calendar-grid+.schedule-legend{margin:18px 0 0;font-size:10px;gap:9px 14px}.schedule-legend.compact-legend{font-size:9px;gap:8px 10px}.schedule-legend.compact-legend i{width:10px;height:10px}.schedule-badge{display:inline-block;border-radius:4px;padding:2px 8px;font-size:12px;margin-right:6px}@media(max-width:680px){.schedule-legend{font-size:11px;gap:10px 14px}}.hygiene-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.hygiene-facts p{font-size:13px;color:var(--muted);line-height:1.7}.reference-thumbnail{height:110px;max-width:170px;object-fit:cover;border-radius:8px}.photo-point form{display:grid;gap:8px}@media(max-width:800px){.hygiene-facts{grid-template-columns:1fr;gap:8px}}.presence-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.presence-stat{border:1px solid var(--border,#e0e7e3);border-radius:12px;padding:16px;text-align:left;background:#f6f8f7;display:flex;align-items:center;justify-content:space-between}.presence-stat b{font-size:27px}.presence-stat.selected{outline:2px solid #526e62}.presence-stat.present,.presence-badge.present{background:#e7f5ec;color:#236240}.presence-stat.left,.presence-badge.left{background:#edf1fb;color:#475c8f}.presence-stat.absent,.presence-badge.absent{background:#f1f2f3;color:#646b72}.presence-stat.unknown,.presence-badge.unknown{background:#fff2dd;color:#895e1e}.presence-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.presence-grid .panel{margin:0}.presence-person .panel-head{margin-bottom:10px}.presence-person h2{font-size:18px}.presence-badge{border-radius:20px;padding:5px 12px;font-size:13px;white-space:nowrap}.presence-person details{margin-top:16px}.punch-list{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.punch-list span{font-size:12px;background:#f5f7f6;padding:5px;border-radius:5px}.supervision-table td{vertical-align:top}.supervision-table details{min-width:180px;max-width:540px}.supervision-table summary{cursor:pointer}.weekly-record{border-top:1px solid #e7ece9;margin-top:12px;padding-top:10px}.weekly-record p{white-space:pre-wrap;margin:6px 0;line-height:1.6}.report-prose{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.85 system-ui,sans-serif;background:#f7f9f8;border-radius:10px;padding:22px;max-height:65vh;overflow:auto}.supervision-table .target-track{max-width:120px}@media(max-width:1000px){.presence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.presence-summary{grid-template-columns:repeat(2,1fr)}.presence-grid{grid-template-columns:1fr}.presence-stat{padding:10px}.report-prose{padding:12px}}.calendar-grid .day.adjacent-month{opacity:.48;background-image:linear-gradient(#fff8,#fff8)}.calendar-grid .day.adjacent-month:hover,.calendar-grid .day.adjacent-month:focus-visible{opacity:.85}.calendar-grid .day.adjacent-month.chosen,.calendar-grid .day.adjacent-month.focused{opacity:.8}.presence-grid{grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:12px}.presence-person.panel{padding:15px 16px;margin:0;min-width:0}.presence-person .panel-head{margin-bottom:8px;gap:8px}.presence-person h2{font-size:16px}.presence-person p{font-size:12px;margin:7px 0}.presence-person details{margin-top:8px;font-size:11px}.presence-person .presence-badge{font-size:11px;padding:4px 8px}.supervision-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:24px;align-items:start}.supervision-person.panel{padding:23px;margin:0;min-width:0}.supervision-person .panel-head{margin-bottom:17px;gap:10px}.supervision-person h2{font-size:20px}.supervision-person h3{font-size:13px;margin:0 0 9px;color:#40584a}.card-tag{font-size:11px;background:#eaf2e9;color:#4d7056;padding:5px 9px;border-radius:6px}.card-tag.needs-review{background:#fff1d6;color:#936625}.attendance-total{display:flex;justify-content:space-between;gap:15px}.attendance-total strong{font-size:36px;font-weight:600;line-height:1.2}.attendance-total span{font-size:12px;color:#738375}.attendance-total small{display:block;color:#7b877b;margin-top:6px;font-size:11px}.attendance-components{display:flex;flex-direction:column;gap:8px;min-width:135px}.attendance-components span{display:flex;justify-content:space-between;gap:10px}.attendance-components b{color:#4f6454;font-weight:500}.attendance-person>.target-track{width:100%;height:5px;margin:18px 0}.attendance-day-bars>div{display:grid;grid-template-columns:82px 1fr 54px;gap:9px;align-items:center;margin:9px 0;font-size:11px}.attendance-day-bars time small{margin-left:6px;color:#89958c}.attendance-day-bars b{font-weight:500;text-align:right;color:#5b6b5e}.daily-hour-track{height:8px;background:#f0f3ed;border-radius:3px;overflow:hidden}.daily-hour-track i{height:100%;display:block;background:#91b09b}.attendance-findings{background:#f7f9f4;padding:14px;border-radius:8px;margin-top:20px}.attendance-findings p{font-size:12px;line-height:1.7;margin:5px 0}.card-evidence{border-top:1px solid #e9eee5;margin-top:18px;padding-top:13px;font-size:12px;line-height:1.8}.card-evidence summary{cursor:pointer;color:#667d69}.card-evidence p{overflow-wrap:anywhere}.weekly-counts{display:flex;flex-wrap:wrap;gap:8px 15px;font-size:11px;color:#758576;padding-bottom:14px;border-bottom:1px solid #edf0e9}.weekly-counts b{font-size:15px;color:#425d47}.brief-block{margin:18px 0}.brief-block h3 small{font-weight:400;color:#8a948c;font-size:10px;margin-left:6px}.brief-block ul{padding:0;list-style:none;margin:0}.brief-block li,.brief-block p{font-size:12px;line-height:1.85;margin:5px 0;overflow-wrap:anywhere}.brief-block time{font-size:10px;color:#8c998e;margin-right:9px;white-space:nowrap}.brief-block.has-blocker{padding:12px;background:#fcf6e9;border-radius:8px}.brief-block.has-blocker h3{color:#96743d}.report-stats{grid-template-columns:repeat(5,minmax(0,1fr))}.report-cell.substandard,.status-key.substandard{background:#ffe6a0;color:#845f0b}.report-stats .substandard strong,.report-label.substandard{color:#9d720f}.report-cell.unknown,.status-key.unknown{background:#e9eef4;color:#667c93}@media(min-width:1600px){.weekly-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:900px){.supervision-cards{grid-template-columns:1fr}.report-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:620px){.presence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.presence-person.panel{padding:12px}.presence-person .panel-head{align-items:flex-start;flex-direction:column}.supervision-person.panel{padding:17px}.report-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.presence-grid{grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:9px}.presence-person.panel{padding:11px 12px;border-radius:10px;box-shadow:none}.presence-person.panel.present{background:#e2f1e7;border-color:#c4dfcd;color:#23583b}.presence-person.panel.left{background:#e8eef9;border-color:#ccd8ec;color:#3e5683}.presence-person.panel.absent{background:#eef0f1;border-color:#dce1e3;color:#666f76}.presence-person.panel.unknown{background:#fff1d6;border-color:#ead5ac;color:#886325}.presence-person .panel-head{margin-bottom:4px}.presence-person h2{font-size:14px;color:inherit}.presence-person p{font-size:11px;line-height:1.5;margin:4px 0}.presence-person details{margin-top:4px;font-size:10px}.presence-person .presence-badge{padding:2px 5px;font-size:10px;background:#fff6;color:inherit}.presence-person .punch-list{margin-top:6px;gap:4px}.presence-person .punch-list span{font-size:10px;padding:3px}.presence-controls.panel{padding:18px 20px}.presence-controls .panel-head{margin-bottom:12px}.presence-controls .presence-stat{padding:10px 14px}.presence-controls .presence-stat b{font-size:23px}.presence-controls .view-explanation{margin-top:9px;font-size:11px;line-height:1.7}.attendance-day.has-warning{height:auto;min-height:47px;background:#fff8e9;gap:2px 10px;padding-top:4px;padding-bottom:4px;border-left:2px solid #d6a545;margin:2px 0}.timeline-warning{grid-column:2/-1;font-size:10px;color:#946719;line-height:1.65;overflow-wrap:anywhere}.timeline-warning-count{color:#9c712b!important;background:#fcf0d5;padding:4px 6px;border-radius:5px}.ai-evidence{display:block;color:#8d988e;font-size:10px;margin:2px 0 8px}.ai-generated{font-size:10px;line-height:1.7}.ai-pending{font-size:13px;color:#7b867b;line-height:1.8;margin:25px 0}@media(max-width:620px){.presence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.presence-person .panel-head{flex-direction:row;align-items:center}.presence-person.panel{padding:10px}.attendance-day.has-warning{gap:2px 6px}}.portal-header{display:flex;align-items:center;gap:38px;padding:22px 4vw;background:#fff;border-bottom:1px solid var(--line)}.portal-header .brand{font-size:25px;white-space:nowrap}.portal-header .brand small{letter-spacing:1px;font-size:10px}.portal-header nav,.portal-subnav{display:flex;gap:7px}.portal-header nav button,.portal-subnav button{border:0;border-radius:8px;padding:11px 22px;background:transparent;color:#677b70}.portal-header nav button.active,.portal-subnav button.active{background:#e3eee7;color:#215844;font-weight:650}.portal-profile{display:flex;align-items:center;gap:20px;margin-left:auto;font-size:12px;color:#74857b}.portal-content{max-width:1440px;margin:auto;padding:34px 4vw}.portal-freshness{color:#849187;font-size:12px;margin:-10px 0 25px}.portal-duty-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:22px;margin:0 0 24px}.portal-duty-grid .panel{margin:0}.portal-duty-grid .today-card{min-height:165px;margin:0}.portal-duty-mark{font-size:60px;opacity:.22}.next-duty{display:flex;flex-direction:column;justify-content:center;gap:10px}.next-duty h2{font-size:21px}.next-duty p,.next-duty small{color:#85928a}.portal-warning-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px}.portal-warning{background:#f6f8f6;border:1px solid #e3eae3;text-align:left;padding:18px 22px;border-radius:9px;display:flex;justify-content:space-between;align-items:center;color:#64766b}.portal-warning strong{font-size:30px;color:#304b3b}.portal-warning strong small{font-size:12px;font-weight:400}.portal-warning.has-warning{background:#fff5e4;border-color:#f0d8b1;color:#95662b}.portal-warning.has-warning strong{color:#95662b}.portal-calendar .day{min-height:110px}.portal-calendar .day-label{font-size:11px}.portal-calendar .duty-label{font-size:12px}.portal-calendar .my-duty{background:#28674e;color:#fff;border-radius:4px;padding:3px 7px;display:inline-block}.portal-calendar .day-detail{margin-bottom:15px}.portal-subnav{margin:0 0 20px}.portal-footer{padding:25px 0;font-size:11px;color:#95a096;border-top:1px solid var(--line);margin-top:20px}.portal-content .panel{margin-bottom:22px}.portal-content .portal-duty-grid .panel{margin-bottom:0}.portal-welcome{min-height:100vh;padding:45px 8vw;background:radial-gradient(ellipse at 85% 20%,#e2eee4,transparent 55%),#f6f8f4;display:flex;flex-direction:column}.portal-welcome-body{margin:auto 0;padding:70px 0}.portal-welcome h1{font-size:clamp(40px,6vw,76px);line-height:1.35;color:#244c3c;margin:20px 0}.portal-welcome p{color:#718276;margin:28px 0;font-size:16px;line-height:2}.portal-welcome .primary{text-decoration:none;padding:14px 27px;font-size:15px}.portal-welcome footer{color:#99a598;font-size:12px}@media(max-width:850px){.portal-header{flex-wrap:wrap;gap:18px;padding:20px}.portal-header nav{order:3;width:100%}.portal-header nav button{flex:1}.portal-profile{gap:10px}.portal-content{padding:24px 16px}.portal-duty-grid{grid-template-columns:1fr}.portal-calendar .day{padding:8px;min-height:93px}.portal-calendar .day-label{display:none}.portal-calendar .duty-label{font-size:10px}.portal-calendar .day-top small{font-size:9px}.portal-warning{padding:12px;display:block}.portal-warning strong{display:block;margin-top:8px}.portal-warning-grid{gap:8px}.portal-content .page-head h1{font-size:23px}}@media(max-width:480px){.portal-calendar{padding:14px}.portal-calendar .calendar-grid{gap:4px}.portal-calendar .day{min-height:85px;padding:5px}.portal-calendar .day-top,.portal-calendar .day-top small{display:block}.portal-calendar .duty-label{font-size:9px}.portal-profile span{font-size:11px}.portal-header .brand{font-size:21px}}.student-portal .weekly-cards{grid-template-columns:minmax(0,1fr)}.public-dashboard{--pub-blue:#3566e8;--pub-ink:#1f293d;--pub-muted:#798398;background:#f5f7fb;color:var(--pub-ink);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,sans-serif}.public-header{height:90px;background:#fff;border-bottom:1px solid #e6eaf1;display:flex;align-items:center;justify-content:space-between;padding:0 max(28px,calc((100vw - 1220px)/2))}.public-brand{display:flex;align-items:center;gap:13px;text-decoration:none;color:#202c48;font-weight:700;font-size:27px;letter-spacing:-.5px}.public-logo{display:grid;place-items:center;background:#edf2ff;border:1px solid #dae4ff;border-radius:12px;width:46px;height:46px;color:var(--pub-blue)}.public-brand small{display:block;font-size:10px;color:#8b93a5;font-weight:400;letter-spacing:2px;margin-top:4px}.public-view{display:flex;align-items:center;gap:7px;color:#64718a;font-size:12px;padding:8px 12px;background:#f6f8fc;border-radius:7px}.public-main{max-width:1220px;margin:auto;padding:32px 0 0}.public-intro{display:flex;align-items:center;justify-content:space-between;gap:18px}.public-eyebrow{font-size:10px;font-weight:650;letter-spacing:2px;color:#8c98ac;margin-bottom:8px}.public-intro h1{font-size:29px;letter-spacing:-.7px}.public-intro p{font-size:13px;color:var(--pub-muted);margin:9px 0 0}.public-sync{display:flex;align-items:center;gap:7px;font-size:11px;color:#8c785b;background:#fff8e9;border:1px solid #f0e3cb;border-radius:20px;padding:7px 12px;white-space:nowrap}.public-sync i{height:6px;width:6px;border-radius:50%;background:#c59849}.public-sync.fresh{background:#edf8f3;color:#438268;border-color:#d9ede3}.public-sync.fresh i{background:#4ca980}.public-period{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:25px 0 18px;font-size:11px;color:#8b94a7}.public-period>span:first-child{display:flex;align-items:center;gap:9px}.public-period strong{color:#4f5e77;font-weight:500}.public-period small{font-size:10px;color:#96a0b0}.public-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:22px}.public-kpi,.public-panel{background:#fff;border:1px solid #e8ecf3;border-radius:12px;box-shadow:0 2px 4px #263e6103}.public-kpi{padding:22px 24px}.public-kpi>div{display:flex;justify-content:space-between;color:#6e7b92;font-size:12px;gap:8px}.public-kpi svg{color:#8c9ec6}.public-kpi>strong{display:block;font-size:37px;line-height:1.2;letter-spacing:-1px;margin:20px 0 12px;font-weight:650;font-variant-numeric:tabular-nums}.public-kpi strong small{font-size:11px;font-weight:400;color:#8f98a8;letter-spacing:0;margin-left:9px}.public-kpi p{font-size:10px;color:#929cad}.public-kpi .public-date-value{font-size:32px;line-height:1.39}.public-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(285px,1fr);gap:22px}.public-panel{padding:24px}.public-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.public-panel h2{font-size:15px;color:#35425b}.public-panel-head p{font-size:11px;color:#96a0b1;margin-top:6px}.public-panel-head>svg{color:#8ca5d8}.public-tabs{display:flex;border:1px solid #e4eaf5;background:#f7f9fc;border-radius:7px;padding:3px}.public-tabs button{border:0;border-radius:5px;background:transparent;font-size:11px;color:#8b96aa;padding:7px 11px}.public-tabs button[aria-pressed=true]{background:#fff;color:var(--pub-blue);box-shadow:0 1px 4px #25447916}.public-chart{margin:22px 0 17px}.public-chart-unit{font-size:10px;color:#9ba4b5;margin-bottom:10px}.public-chart-bars{display:flex;gap:20px;justify-content:space-around;padding:0 12px;background:repeating-linear-gradient(to top,transparent 0,transparent 49px,#eff2f7 49px,#eff2f7 50px);background-size:100% 150px;background-repeat:no-repeat;background-position:0 30px}.public-chart-column{flex:1;max-width:120px;text-align:center;min-width:0}.public-chart-value{font-size:14px;font-weight:600;color:#506582;height:30px}.public-chart-value small{font-size:9px;color:#9ba3ae;font-weight:400;margin-left:4px}.public-bar-slot{height:150px;display:flex;align-items:end;justify-content:center}.public-bar{width:44%;min-width:18px;max-width:54px;background:linear-gradient(#80a6fc,#5988ee);border-radius:5px 5px 0 0}.public-bar.reports{background:linear-gradient(#76c9bf,#4bafa0)}.public-no-data{align-self:center;font-size:10px;color:#a5afbf}.public-chart-label{display:block;margin-top:12px;font-size:11px;color:#6e7e98}.public-chart-label small{display:block;font-size:9px;color:#a2abba;margin-top:4px}.public-method{font-size:10px;color:#98a2b3;border-top:1px solid #eef1f6;padding-top:14px;line-height:1.7}.public-chart-empty{height:235px;display:grid;place-items:center;color:#a2adbd;font-size:12px}.public-step{display:flex;gap:14px;margin-top:24px}.public-step>span{background:#f0f4fc;border-radius:9px;width:37px;height:37px;flex:0 0 37px;display:grid;place-items:center;color:#7896ce}.public-step h3{font-size:12px;font-weight:550;color:#56647c;margin:0 0 5px}.public-step p{font-size:11px;color:#929caf;line-height:1.85}.public-step b{font-size:10px;font-weight:500;color:#6684b5;display:block;margin-top:7px}.public-login{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-top:24px;padding:25px 30px;border:1px solid #dce5fa;border-radius:12px;background:linear-gradient(110deg,#edf3ff,#f9fbff)}.public-login h2{font-size:16px;color:#3b527d}.public-login p{font-size:11px;color:#8a9ab7;margin-top:7px}.public-login-button{display:flex;align-items:center;justify-content:center;gap:22px;background:var(--pub-blue);border:0;border-radius:7px;color:#fff;text-decoration:none;padding:12px 23px;font-size:12px;box-shadow:0 3px 9px #3566e824}.public-login-notice{flex-basis:100%;margin:0!important}.public-privacy{font-size:10px;text-align:center;color:#a6afbe;margin:17px 0 24px}.public-footer{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;color:#98a2b3;font-size:10px;border-top:1px solid #e7ebf1;padding:20px 24px 25px}.public-footer a{color:#8793a8;text-decoration:none}.public-footer a:hover{text-decoration:underline}.public-dashboard button:focus-visible,.public-dashboard a:focus-visible{outline:3px solid #96b6ff;outline-offset:3px}@media(max-width:1280px){.public-main{margin:0 28px}.public-kpi{padding:20px}.public-grid{grid-template-columns:minmax(0,1.6fr) minmax(285px,1fr)}}@media(max-width:800px){.public-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.public-grid{grid-template-columns:1fr}.public-rhythm{display:none}.public-period{flex-wrap:wrap}.public-header{height:80px}.public-main{margin:0 20px;padding-top:25px}.public-intro h1{font-size:25px}.public-login{padding:24px}.public-kpi>strong{font-size:32px}.public-panel{padding:20px}}@media(max-width:450px){.public-main{margin:0 14px}.public-header{padding:0 16px}.public-brand{font-size:24px}.public-view{font-size:10px}.public-intro{align-items:start}.public-intro h1{font-size:23px}.public-intro p{font-size:11px}.public-sync{font-size:9px;padding:6px 9px;margin-top:24px}.public-kpi{padding:16px}.public-kpi>div{font-size:11px}.public-kpi>strong{margin-top:17px}.public-kpi p{font-size:9px}.public-kpi .public-date-value{font-size:29px}.public-panel-head{flex-wrap:wrap}.public-tabs button{font-size:10px;padding:6px 10px}.public-chart-bars{padding:0;gap:12px}.public-login{padding:20px;align-items:start}.public-login-button{width:100%}.public-period{font-size:10px}.public-period>span:first-child{gap:6px}.public-period small{font-size:9px}}
