*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans TC','Microsoft JhengHei',Arial,sans-serif;background:#f5f7fb;color:#172033}.app{max-width:540px;margin:0 auto;min-height:100vh;background:#f8fafc;padding:14px 14px 86px}.top{position:sticky;top:0;background:#f8fafc;z-index:5;padding:10px 0 12px;border-bottom:1px solid #e8edf5}.title{font-size:22px;font-weight:900;color:#0f2d64;margin:0}.sub{font-size:13px;color:#5d6b82;margin-top:4px}.card{background:#fff;border:1px solid #e3e9f3;border-radius:18px;padding:16px;margin:12px 0;box-shadow:0 4px 14px rgba(17,39,75,.06)}.row{display:flex;gap:10px;align-items:center}.between{justify-content:space-between}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat{background:#f4f8ff;border:1px solid #dce8fb;border-radius:16px;padding:12px;text-align:center}.stat b{display:block;font-size:26px;color:#1261c7}.stat span{font-size:13px;color:#51627a}.btn{width:100%;border:0;border-radius:14px;padding:14px 16px;font-weight:900;font-size:17px;background:#0b8f42;color:#fff;box-shadow:0 4px 10px rgba(11,143,66,.18)}.btn:active{transform:translateY(1px)}.btn.secondary{background:#24529a}.btn.light{background:#eef4ff;color:#16427d;box-shadow:none}.btn.danger{background:#d94343}.btn.gray{background:#e8edf5;color:#26364f;box-shadow:none}.input,select,textarea{width:100%;border:1px solid #d5dfed;border-radius:14px;padding:13px;font-size:16px;background:#fff;color:#172033}textarea{min-height:86px;resize:vertical}.label{font-size:14px;font-weight:800;color:#354760;margin:14px 0 7px}.hint{font-size:13px;color:#6c7a8d;line-height:1.55}.pill{display:inline-flex;align-items:center;border-radius:999px;background:#eef4ff;color:#174276;padding:6px 10px;font-weight:800;font-size:13px}.pill.green{background:#e9f8ef;color:#087a36}.pill.red{background:#fff0f0;color:#bd2d2d}.pill.orange{background:#fff6e5;color:#ad6900}.list{display:flex;flex-direction:column;gap:10px}.item{background:#fff;border:1px solid #e4eaf2;border-radius:16px;padding:13px}.item-title{font-size:17px;font-weight:900;color:#172033}.item-sub{font-size:13px;color:#5b6980;margin-top:4px;line-height:1.45}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:540px;background:#fff;border-top:1px solid #dfe7f2;display:grid;grid-template-columns:repeat(4,1fr);z-index:20}.navbtn{padding:10px 4px 9px;text-align:center;font-size:12px;color:#61708a;text-decoration:none;font-weight:800}.navbtn.active{color:#0f5ab8}.navbtn div{font-size:21px;margin-bottom:2px}.hidden{display:none!important}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.photo-tile{height:96px;border-radius:14px;border:1px dashed #b7c7dc;background:#f7faff;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.photo-tile img{width:100%;height:100%;object-fit:cover}.success{border-color:#bde8c9;background:#f0fff4}.error{border-color:#f5b9b9;background:#fff6f6}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.small{font-size:12px}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.center{text-align:center}.login-wrap{display:flex;align-items:center;min-height:100vh}.fixed-action{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:540px;background:#fff;border-top:1px solid #dde6f1;padding:10px 14px;z-index:30}.employee-app{padding-bottom:96px}.big-name{font-size:24px;font-weight:900;color:#112b5b}.upload-box{border:2px dashed #b7c7dc;border-radius:18px;background:#f6faff;padding:20px;text-align:center}.check{color:#07883a;font-weight:900}.warn{color:#d47a00;font-weight:900}

.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mini-btn{border:0;border-radius:12px;padding:10px 8px;font-weight:900;font-size:13px;background:#0b8f42;color:#fff}.mini-btn.light{background:#eef4ff;color:#16427d}.mini-btn.gray{background:#e8edf5;color:#26364f}.mini-btn.danger{background:#d94343;color:#fff}.mini-btn.orange{background:#f0a020;color:#fff}.mini-btn:active{transform:translateY(1px)}


/* V1.0.3 工程師手機底列修正：5 個功能同一行，避免固定底列遮住底部資料 */
.app.engineer-app{padding-bottom:118px;}
.bottom-nav.nav5{grid-template-columns:repeat(5,1fr);padding-bottom:env(safe-area-inset-bottom);}
.bottom-nav.nav5 .navbtn{font-size:11px;padding:9px 2px 8px;line-height:1.15;}
.bottom-nav.nav5 .navbtn div{font-size:20px;margin-bottom:1px;}
@media (max-width:380px){.bottom-nav.nav5 .navbtn{font-size:10px}.bottom-nav.nav5 .navbtn div{font-size:18px}.app.engineer-app{padding-bottom:112px}}

/* V1.0.5 員工密碼登入 */
.password-row{display:flex;align-items:center;gap:8px;width:100%}
.password-row .input{flex:1}
.eye-btn{flex:0 0 52px;border:1px solid #d5dfed;background:#eef4ff;border-radius:14px;font-size:20px;height:50px;line-height:1}
.employee-app #loginBox h2,.employee-app #changeBox h2{font-size:28px;margin:0 0 8px;color:#172033}


/* V1.0.7 登出按鈕與刷新保留登入 */
.top-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.top-title{min-width:0;flex:1}
.top-logout{flex:0 0 auto;border:0;border-radius:999px;background:#e8edf5;color:#26364f;font-weight:900;font-size:13px;padding:8px 12px;margin-top:1px}
.top-logout:active{transform:translateY(1px)}
.logout-card{background:#fff;border:1px solid #e3e9f3;border-radius:18px;padding:18px;margin:12px 0;text-align:center}


/* V1.0.8.1 單張照片刪除按鈕 */
.photo-wrap{position:relative;min-width:0}
.photo-wrap .photo-tile{width:100%}
.photo-del{position:absolute;right:5px;top:5px;border:0;border-radius:999px;background:rgba(217,67,67,.95);color:#fff;font-size:12px;font-weight:900;padding:5px 8px;box-shadow:0 2px 6px rgba(0,0,0,.22);z-index:2}
.photo-del:active{transform:translateY(1px)}
