:root{--bg:#eef1f5;--paper:#fff;--ink:#16202a;--muted:#77818d;--line:#dde3e9;--blue:#3568d4;--blue2:#eaf0ff;--dark:#192536;--cyan:#49c7c1;--green:#238763;--orange:#d98722;--red:#c84d58;--shadow:0 10px 28px rgba(31,45,61,.08)}.system-version{position:fixed;right:12px;bottom:8px;z-index:20;color:var(--muted);font-size:11px;line-height:1.2;letter-spacing:.02em;opacity:.85;pointer-events:none}.danger-card{padding:20px;margin-bottom:16px;border:1px solid #efb7bd;background:#fff8f8}.danger-title{color:#a62f3a;font-size:18px;font-weight:800}.danger-link{display:inline-block;color:#a62f3a;border:1px solid #df8e96;border-radius:8px;padding:6px 9px;font-weight:700;white-space:nowrap}.danger-button{border:0;border-radius:9px;background:#b73542;color:#fff;padding:11px 15px;font-weight:800;cursor:pointer}.danger-button:hover{background:#962b35}.danger-form{display:grid;gap:14px}.check-row{display:flex!important;align-items:flex-start;gap:9px}.check-row input{width:auto!important;margin-top:4px}.mode-pill{display:inline-block;margin-left:6px;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:800}.mode-test{background:#fff0c8;color:#815500}.mode-production{background:#ffdadd;color:#8f2430}*{box-sizing:border-box}body{margin:0;background:var(--bg);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;color:var(--ink)}button,input,select{font:inherit}a{color:inherit;text-decoration:none}.hidden{display:none!important}.shell{display:grid;grid-template-columns:330px minmax(0,1fr);min-height:100vh}.rail{background:var(--dark);color:#fff;padding:23px 19px;height:100vh;overflow:auto}.rail-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.rail h1{font-size:19px;margin:0 0 4px}.rail small{color:#9eb0c4}.rail select{background:#27384c;color:#fff;border:1px solid #43556b;border-radius:8px;padding:8px}.search{width:100%;padding:10px 11px;border:1px solid #3b4c61;background:#223247;color:#fff;border-radius:9px;margin-bottom:14px}.section-label{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#91a3b8;font-weight:800;margin:14px 4px 7px}.rail-add{width:100%;margin:0 0 10px;padding:10px;border:1px dashed #6f87a2;border-radius:9px;background:#27384c;color:#fff;font-weight:750;cursor:pointer}.rail-add:hover{background:#31465f}.project-button{width:100%;border:1px solid #34455a;background:#213044;color:#fff;border-radius:11px;padding:11px;text-align:left;margin-bottom:7px;cursor:pointer}.project-button.active{background:#fff;color:var(--ink);border-color:#fff;box-shadow:0 10px 24px rgba(0,0,0,.18)}.project-button .project-top{display:flex;justify-content:space-between;gap:8px}.project-button .project-name{font-weight:750;margin:6px 0}.project-button .project-numbers{display:flex;justify-content:space-between;font-size:10px;color:#aebccc}.project-button.active .project-numbers{color:var(--muted)}.mini-bar{height:5px;background:#374a60;border-radius:8px;overflow:hidden;margin-top:7px}.project-button.active .mini-bar{background:#e7ebf0}.mini-bar i{display:block;height:100%;background:var(--cyan)}.workspace{min-width:0}.topbar,.simple-head{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 25px}.topbar nav,.simple-head{gap:9px}.ghost,.solid,.primary,.secondary{display:inline-block;border-radius:8px;padding:9px 13px;font-weight:750;cursor:pointer}.ghost,.secondary{background:#fff;border:1px solid var(--line)}.solid,.primary{background:var(--blue);color:#fff;border:1px solid var(--blue)}.content{padding:20px 24px;max-width:1450px;margin:auto}.hero{display:grid;grid-template-columns:minmax(260px,1fr) repeat(3,170px);gap:12px;margin-bottom:16px}.title-card,.metric,.card{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow)}.title-card{padding:14px 17px}.title-card h2{font-size:19px;margin:4px 0 2px}.title-card p{margin:0;color:var(--muted);font-size:12px}.tag,.report-pill{display:inline-block;background:var(--blue2);color:var(--blue);border-radius:5px;padding:2px 6px;font-size:10px;font-weight:800}.metric{padding:14px}.metric span{color:var(--muted);font-size:11px}.metric strong{font-size:19px;display:block;margin-top:5px}.metric .good,.good{color:var(--green)}.workgrid{display:grid;grid-template-columns:minmax(590px,1fr) 310px;gap:15px}.card-head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.card-head h3{margin:0;font-size:16px}.card-head small{color:var(--muted)}.month-nav{display:flex;align-items:center;gap:8px}.month-nav button{width:31px;height:31px;border:1px solid var(--line);background:#fff;border-radius:7px;cursor:pointer}.month-nav b{min-width:105px;text-align:center}.calendar-body{padding:13px}.week,.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.week span{text-align:center;color:var(--muted);font-size:11px;font-weight:700;padding:5px}.day{min-height:69px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px;text-align:left;position:relative;cursor:pointer}.day:hover:not(:disabled){border-color:#7fa2eb}.day.blank{visibility:hidden}.day.off{background:#f1f3f5;color:#adb4bc;border-style:dashed;cursor:not-allowed}.day.selected{background:var(--blue);color:#fff;border-color:var(--blue)}.day.used{background:#e5f5ed;color:#207657;border-color:#b6dfcd;cursor:not-allowed}.day .meta{position:absolute;left:7px;bottom:6px;font-size:9px;font-weight:650;max-width:calc(100% - 12px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.legend{padding:0 14px 13px;display:flex;gap:15px;color:var(--muted);font-size:11px}.legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;border:1px solid var(--line)}.legend .selected{background:var(--blue)}.legend .used{background:#b6dfcd}.legend .off{background:#e4e7ea}.side-panel{padding:15px}.step{font-size:10px;letter-spacing:.1em;color:var(--blue);font-weight:850}.side-panel h3{margin:4px 0 10px}.toggle{display:block;background:#f7f9fc;padding:9px;border-radius:8px;font-size:11px;margin-bottom:8px}.members{display:grid;grid-template-columns:1fr 1fr;gap:7px}.member{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px;text-align:left;cursor:pointer}.member.active{background:var(--blue2);border-color:#86a5eb;color:#244fa9}.member b{display:block}.member small{font-size:10px;color:var(--muted)}.member em{display:block;color:var(--orange);font-style:normal;font-size:9px}.divider{height:1px;background:var(--line);margin:15px 0}.live{background:#f7f9fc;padding:11px;border-radius:10px}.live>div{display:flex;justify-content:space-between;margin:7px 0}.live span{color:var(--muted)}.live .big{font-size:17px;color:var(--blue)}.live .remaining{border-top:1px dashed var(--line);padding-top:9px}.side-panel .primary,.side-panel .secondary{width:100%;margin-top:9px}.side-panel .primary:disabled{opacity:.4;cursor:not-allowed}.hint{color:var(--muted);font-size:10px}.ledger{margin-top:15px;overflow:hidden}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:10px 13px;border-bottom:1px solid var(--line);text-align:left;font-size:12px}th{background:#f7f9fb;color:var(--muted);font-size:10px}.cancel{border:1px solid #efc4c8;color:var(--red);background:#fff;border-radius:6px;padding:5px 8px;cursor:pointer}.toast{position:fixed;right:22px;bottom:22px;background:#172337;color:#fff;padding:12px 16px;border-radius:9px;box-shadow:var(--shadow);opacity:0;transform:translateY(70px);transition:.25s;z-index:30}.toast.show{opacity:1;transform:none}.toast.error{background:var(--red)}.empty{max-width:600px;margin:100px auto;text-align:center}.form-page,.report-page{max-width:1250px;margin:20px auto;padding:0 20px}.import-card,.report-card{padding:20px;margin-bottom:16px}.import-card h2,.report-card h2{margin-top:0}.import-card form{display:grid;gap:14px;max-width:620px}.import-card label{font-weight:700}.import-card input{display:block;width:100%;margin-top:6px;padding:10px;border:1px solid var(--line);border-radius:8px}.report-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.warn{color:var(--red);font-weight:700}.muted{color:var(--muted)}.modal{border:0;border-radius:13px;padding:20px;box-shadow:0 20px 60px rgba(0,0,0,.25);max-width:390px}.modal::backdrop{background:rgba(15,25,38,.45)}.modal h3{margin-top:0}.modal>div{display:flex;justify-content:flex-end;gap:8px}.danger{background:var(--red);color:#fff;border:0;border-radius:8px;padding:9px 13px;font-weight:750;cursor:pointer}.inline-form{display:inline-flex;margin:0}.inline-form button{font:inherit}.simple-head>div{display:flex;gap:9px;align-items:center}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 10%,#dce8ff,transparent 38%),var(--bg)}.auth-card{width:min(420px,100%);background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:34px;box-shadow:var(--shadow);text-align:center}.auth-logo{width:58px;height:58px;border-radius:16px;margin:0 auto 16px;display:grid;place-items:center;background:var(--dark);color:white;font-size:26px;font-weight:900}.auth-card h1{margin:0 0 8px}.auth-card p{color:var(--muted)}.auth-card label{display:grid;gap:8px;font-weight:700}.auth-card form{text-align:left;display:grid;gap:16px;margin:24px 0}.auth-card button{width:100%}.auth-card small{color:var(--muted)}.error-box,.success-box{padding:11px 13px;border-radius:9px;margin:14px 0;text-align:left}.error-box{background:#fff0f1;color:#9d3440;border:1px solid #f4cbd0}.success-box{background:#eaf8f2;color:#17694c;border:1px solid #bde8d8}.personnel-report>p{margin-top:-8px}.person-report{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-top:16px;background:#fbfcfe}.person-report-head{display:grid;grid-template-columns:minmax(180px,1fr) repeat(3,minmax(110px,160px));gap:12px;align-items:center;padding:14px 16px;background:#fff;border-bottom:1px solid var(--line)}.person-report-head h3{font-size:18px;margin:0 0 2px}.person-report-head>div:first-child span,.person-summary-item span{color:var(--muted);font-size:11px}.person-summary-item strong{display:block;margin-top:3px;font-size:15px}.person-report-meta{display:flex;justify-content:space-between;gap:18px;padding:11px 16px;background:#f7f9fc;font-size:12px}.person-report-meta .report-pill{margin-right:5px}.person-report h4{margin:14px 16px 9px;font-size:13px}.person-report .table-wrap{background:#fff}.detail-table th,.detail-table td{white-space:nowrap}.detail-table th:nth-child(3),.detail-table td:nth-child(3){white-space:normal;min-width:190px}.person-no-detail{padding:0 16px 15px;margin:0}.test-banner{height:38px;background:#8a4b08;color:#fff;display:flex;align-items:center;justify-content:center;gap:12px;position:relative;z-index:50;letter-spacing:.02em}.test-banner strong{background:#fff;color:#8a4b08;border-radius:5px;padding:2px 7px}.test-banner+ .shell{min-height:calc(100vh - 38px)}.test-banner+ .shell .rail{height:calc(100vh - 38px)}.test-banner+ .auth-page{min-height:calc(100vh - 38px)}.supplemental-modal{width:min(520px,calc(100vw - 30px));max-width:520px}.supplemental-modal form{display:grid;gap:13px}.supplemental-modal label{display:grid;gap:5px;font-weight:700}.supplemental-modal input,.supplemental-modal textarea{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:8px;font:inherit}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.transfer-panel{margin-top:15px;overflow:hidden}.transfer-candidates{max-height:280px;overflow:auto}.transfer-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;padding:11px 16px;border-bottom:1px solid var(--line);cursor:pointer}.transfer-row:hover{background:#f7f9fc}.transfer-row span{min-width:0}.transfer-row b,.transfer-row small{display:block}.transfer-row small{color:var(--muted);margin-top:2px}.transfer-row strong{color:var(--blue)}.transfer-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px}.transfer-empty{padding:4px 16px}.primary:disabled{opacity:.45;cursor:not-allowed}@media(max-width:1100px){.shell{grid-template-columns:280px 1fr}.hero{grid-template-columns:1fr 1fr}.workgrid{grid-template-columns:1fr}.side-panel{margin-top:0}}@media(max-width:760px){.shell{display:block}.rail{height:auto}.hero,.report-metrics{display:block}.hero>* ,.report-metrics>*{margin-bottom:8px}.content{padding:13px}.calendar-body{overflow:auto}.week,.calendar{min-width:610px}.person-report-head{grid-template-columns:1fr 1fr}.person-report-meta{display:block}.person-report-meta>div+div{margin-top:7px}.topbar,.simple-head{padding:0 12px}}
