:root{font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;color:#17211d;background:#f3f6f4;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}.center{min-height:100vh;display:grid;place-items:center}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:#eef3f0}.login-panel{width:min(420px,100%);background:#fff;border:1px solid #dce5df;border-radius:8px;padding:40px;box-shadow:0 16px 48px #18332612}.brand-mark{width:48px;height:48px;display:grid;place-items:center;background:#166534;color:#fff;font-size:25px;font-weight:800;border-radius:6px}.brand-mark.small{width:34px;height:34px;font-size:18px}.login-panel h1{margin:24px 0 6px;font-size:28px}.login-panel p{margin:0 0 28px;color:#64746c}.login-panel form{display:grid;gap:18px}.login-panel label{font-size:14px;font-weight:700;display:grid;gap:7px}.login-panel input{height:46px;border:1px solid #bdcbc2;border-radius:5px;padding:0 12px;outline:none}.login-panel input:focus{border-color:#166534;box-shadow:0 0 0 3px #16653418}.login-panel button{height:48px;border:0;border-radius:5px;background:#166534;color:#fff;font-weight:800;cursor:pointer}.error,.warning{padding:12px;border-radius:5px}.error{background:#fff0f0;color:#a51d1d}.warning{background:#fff7df;border:1px solid #e7c96a;color:#6e5210;margin-bottom:22px}.divider{display:flex;align-items:center;gap:12px;color:#7a8680;font-size:13px;margin:22px 0}.divider:before,.divider:after{content:"";height:1px;background:#dce5df;flex:1}.google-login{height:48px;width:100%;border:1px solid #bdcbc2!important;border-radius:5px;background:#fff!important;color:#26332c!important;font-weight:700;display:flex;align-items:center;justify-content:center;gap:10px;text-decoration:none;cursor:pointer}.google-login.disabled{color:#7c8781!important;background:#f5f7f6!important;cursor:not-allowed}.google-g{font-family:Arial,sans-serif;font-size:20px;font-weight:800;color:#4285f4}.app-shell{min-height:100vh;display:grid;grid-template-columns:250px 1fr}aside{position:fixed;inset:0 auto 0 0;width:250px;background:#13251d;color:#fff;padding:20px 14px;display:flex;flex-direction:column;z-index:20}.aside-head{display:flex;align-items:center;gap:10px;padding:0 8px 22px}.aside-head strong{font-size:17px}nav{display:grid;gap:4px}nav button,.logout{display:flex;align-items:center;gap:12px;color:#bdcbc4;padding:12px;border-radius:5px;text-decoration:none;border:0;background:none;cursor:pointer;text-align:left}nav button svg,.logout svg{width:19px}nav button.active{background:#244c38;color:#fff}.logout{margin-top:auto;width:100%}.content{grid-column:2}.content>header{height:72px;background:#fff;border-bottom:1px solid #dae3dd;padding:0 32px;display:flex;align-items:center;gap:16px;justify-content:flex-end}.content>header div{display:grid;text-align:right}.content>header small{color:#6a7770}.role{background:#e5f4ea;color:#14562d;padding:6px 10px;border-radius:4px;font-size:13px;font-weight:700}.content main{padding:32px;max-width:1400px;margin:auto}.page-title h1{margin:0;font-size:25px}.page-title p{margin:5px 0 26px;color:#69756f}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.metrics article{background:#fff;border:1px solid #dce4df;border-top:3px solid #247a47;padding:20px;border-radius:6px;display:grid;gap:7px}.metrics article>span,.metrics small{color:#68766e}.metrics strong{font-size:25px}.work-area{display:grid;grid-template-columns:2fr 1fr;gap:18px;margin-top:20px}.work-area>div{background:#fff;border:1px solid #dce4df;border-radius:6px;padding:22px}.work-area h2{font-size:18px;margin:0 0 18px}.empty{min-height:190px;display:grid;place-items:center;align-content:center;gap:8px;color:#7b8981;text-align:center}.empty svg{width:34px}.empty strong{color:#314238}.tasks{list-style:none;padding:0;margin:0}.tasks li{display:flex;justify-content:space-between;padding:14px 0;border-bottom:1px solid #e4e9e6}.tasks b{background:#eef3f0;padding:3px 9px;border-radius:4px}.icon{border:0;background:none;padding:7px;display:grid;place-items:center}.mobile,.backdrop{display:none}.account-editor{grid-template-columns:repeat(2,minmax(0,1fr))}.member-picker{grid-column:1/-1;border:1px solid #d4ded8;border-radius:5px;padding:14px;display:flex;flex-wrap:wrap;gap:12px}.member-picker legend{font-weight:700;font-size:13px;padding:0 5px}.member-picker label{display:flex;align-items:center;gap:6px;font-size:14px;background:#f4f7f5;padding:8px 10px;border-radius:4px}.member-picker input{width:17px;height:17px}.filters{display:flex;gap:10px;margin:0 0 16px}.filters input,.filters select{height:42px;border:1px solid #bdcbc2;border-radius:5px;padding:0 11px;background:#fff}.filters input{min-width:240px}.filters button{border:0;border-radius:5px;background:#263b31;color:#fff;padding:0 18px}.member-form{background:#fff;border:1px solid #dce4df;border-radius:6px;padding:22px;margin-bottom:18px}.member-form h2{margin:0 0 18px;font-size:19px}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.field textarea{min-height:82px;border:1px solid #bdcbc2;border-radius:5px;padding:9px;resize:vertical;font:inherit}.consents{display:flex;align-items:center;gap:18px;grid-column:span 2}.consents label{display:flex;align-items:center;gap:7px}.consents input{width:17px;height:17px}.form-actions{justify-content:flex-start;margin-top:18px}.form-actions>button:not(.primary){border:1px solid #bdcbc2;background:#fff;border-radius:5px;padding:10px 14px}.danger{color:#9a261e!important;background:#ffeceb!important}.action-title,.item-head,.row-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.primary,.button,.small-btn{border:0;border-radius:5px;background:#166534;color:#fff;padding:10px 14px;font-weight:700;display:inline-flex;align-items:center;gap:7px;text-decoration:none;cursor:pointer}.primary svg,.button svg,.small-btn svg,.panel h2 svg{width:17px}.small-btn{padding:7px 10px;background:#e8f3ec;color:#14562d}.editor{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;background:#fff;border:1px solid #dce4df;padding:20px;margin-bottom:18px;border-radius:6px}.field{display:grid;gap:6px;font-size:13px;font-weight:700}.field input,.field select{height:42px;border:1px solid #bdcbc2;border-radius:5px;padding:0 10px;background:#fff}.panel{background:#fff;border:1px solid #dce4df;border-radius:6px;padding:22px;margin-top:20px}.panel h2{font-size:18px;margin:0 0 18px;display:flex;align-items:center;gap:8px}.state{padding:44px 16px;text-align:center;color:#718078}.state.compact{padding:18px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:680px}th,td{padding:12px 10px;border-bottom:1px solid #e4e9e6;text-align:left;font-size:14px}th{color:#617067;background:#f7f9f8;font-size:13px}.badge{display:inline-block;padding:4px 8px;border-radius:4px;background:#edf1ef;color:#435048;font-size:12px;font-weight:700}.s-active,.s-approved,.s-paid,.s-confirmed,.s-income{background:#e4f4e9;color:#176034}.s-pending,.s-partial,.s-waitlist,.s-upcoming{background:#fff4cf;color:#70530b}.s-rejected,.s-overdue,.s-suspended,.s-expense{background:#ffe8e6;color:#9a261e}.health{color:#a33b19;font-weight:700}.card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.item-card{background:#fff;border:1px solid #dce4df;border-radius:6px;padding:20px}.item-card h3{margin:3px 0 5px}.item-card span,.item-card small{color:#69766f}.session{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #e4e9e6;padding:12px 0}.session>div{display:grid;gap:6px}.list{display:grid}.list-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 0;border-bottom:1px solid #e4e9e6}.list-row>div:first-child{display:grid;gap:5px}.list-row small,.list-row time{color:#6c7972}.list-row time{font-size:12px}.row-actions button{border:1px solid #bdcbc2;background:#fff;border-radius:4px;padding:6px 9px;cursor:pointer}dl{margin:16px 0 0}dl div{display:flex;justify-content:space-between;padding:8px 0;border-top:1px solid #edf0ee}dt{color:#6c7972}dd{margin:0}code{font-family:ui-monospace,monospace;font-size:12px}.wide{width:100%;justify-content:center;margin-top:10px}.attendance-row{display:grid;grid-template-columns:1fr 180px;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid #e4e9e6}.attendance-row select{height:40px;border:1px solid #bdcbc2;border-radius:5px;padding:0 9px;background:#fff}@media(max-width:900px){.app-shell{display:block}aside{transform:translate(-100%);transition:.2s}aside.open{transform:none}.content>header{padding:0 16px;justify-content:flex-start}.content>header div{margin-left:auto}.mobile{display:grid;color:inherit}.content main{padding:22px 16px}.metrics{grid-template-columns:repeat(2,1fr)}.work-area{grid-template-columns:1fr}.editor{grid-template-columns:1fr 1fr}.card-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.backdrop{display:block;position:fixed;inset:0;border:0;background:#0008;z-index:10}}@media(max-width:520px){.login-panel{padding:28px 22px}.metrics{grid-template-columns:1fr}.role{display:none}.metrics article{min-height:122px}.action-title{align-items:flex-start;flex-direction:column}.editor{grid-template-columns:1fr}.list-row{align-items:flex-start;flex-direction:column}.row-actions{flex-wrap:wrap}.filters{flex-direction:column}.filters input{min-width:0;width:100%}.form-grid{grid-template-columns:1fr}.consents{grid-column:1;align-items:flex-start;flex-direction:column}}
