*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Helvetica Neue,sans-serif;font-size:14px;line-height:1.6}:root{--color-primary:#0a84ff;--color-primary-dark:#006edb;--color-primary-light:#e8f3ff;--color-accent:#34c759;--color-accent-soft:#eaffef;--color-cyan:#32ade6;--color-yellow:#ffd60a;--color-success:#20b486;--color-success-light:#e9fbf2;--color-warning:#ff9f0a;--color-warning-light:#fff5dc;--color-danger:#ff3b30;--color-danger-light:#fff0ef;--color-text:#172033;--color-text-secondary:#5f7085;--color-text-tertiary:#9aa8b8;--color-bg:#f6fbff;--color-bg-soft:#eef7ff;--color-bg-card:#fffffff0;--color-border:#dceaf7;--color-border-light:#edf5fc;--radius-sm:5px;--radius-md:7px;--radius-lg:8px;--radius-xl:8px;--shadow-sm:0 5px 13px #4476aa14;--shadow-md:0 9px 23px #4476aa1f;--shadow-lg:0 14px 35px #4476aa29;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;color:var(--color-text);background-color:var(--color-bg)}button{cursor:pointer;border:none;outline:none;font-family:inherit}input,textarea,select{outline:none;font-family:inherit}a{color:var(--color-primary);text-decoration:none}#app{background:linear-gradient(#e8f7ff 0%,#f7fbff 46%,#fff9ec 100%);justify-content:center;min-height:100dvh;display:flex}.page-container{background:linear-gradient(145deg,#0a84ff24 0%,#34c75914 44%,#0000 44%),linear-gradient(#e9f8ff 0%,#f8fcff 50%,#fff8e8 100%);width:100%;max-width:100%;min-height:100dvh;position:relative;overflow-x:hidden}@media screen and (width>=640px){.page-container{border-radius:16px;width:92vw;max-width:960px;min-height:calc(100dvh - 32px);margin:16px auto;box-shadow:0 0 80px #4476aa14}}.btn{height:40px;padding:0 var(--space-lg);border-radius:var(--radius-md);letter-spacing:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;transition:transform .22s cubic-bezier(.2,.85,.25,1),box-shadow .22s cubic-bezier(.2,.85,.25,1),background .22s cubic-bezier(.2,.85,.25,1);display:inline-flex}.btn:active{transform:scale(.965)translateY(1px)}.btn-primary{color:#fff;background:linear-gradient(135deg,#0a84ff 0%,#32ade6 100%);box-shadow:0 8px 17px #0a84ff38}.btn-primary:active{background:linear-gradient(135deg,#006edb 0%,#2097cf 100%);box-shadow:0 4px 10px #0a84ff2e}.btn-outline{color:var(--color-primary);background:#ffffffb8;border:1px solid #0a84ff3d;box-shadow:inset 0 .5px #ffffffe6}.btn-success{color:#fff;background:linear-gradient(135deg,#34c759 0%,#20b486 100%);box-shadow:0 6px 14px #34c7592e}.btn-danger{color:var(--color-danger);background:#fff1ef;border:1px solid #ff3b3029}.btn-warning{color:#c77800;background:#fff7e6;border:1px solid #ff9f0a2e}.btn-sm{border-radius:var(--radius-sm);height:30px;padding:0 12px;font-size:12px}.btn-xs{height:26px;color:var(--color-primary);background:#0a84ff1a;border:1px solid #0a84ff29;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0 10px;font-size:12px;font-weight:500;display:inline-flex}.btn-link{cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:12px;line-height:1;display:inline-block}.btn-link.warn{color:#c77800}.btn-link.danger{color:var(--color-danger)}.card{background:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid #ffffffc7;overflow:hidden}.tag{letter-spacing:0;border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;font-weight:800;display:inline-flex}.tag-pending{background:var(--color-warning-light);color:#c77800}.tag-approved{background:var(--color-success-light);color:#11845f}.tag-rejected{background:var(--color-danger-light);color:var(--color-danger)}.tag-cancelled{color:var(--color-text-tertiary);background:#edf3f8}.empty-state{border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:#ffffffa3;border:1px dashed #0a84ff2e;flex-direction:column;justify-content:center;align-items:center;min-height:42vh;padding:40px 0;display:flex}.empty-icon{color:var(--color-primary);opacity:.42;margin-bottom:var(--space-md);font-size:38px}.empty-text{color:var(--color-text-tertiary);font-size:14px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes springUp{0%{opacity:0;transform:translateY(17px)scale(.98)}62%{opacity:1;transform:translateY(-1.5px)scale(1.01)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes softPop{0%{opacity:0;transform:scale(.94)}68%{opacity:1;transform:scale(1.018)}to{opacity:1;transform:scale(1)}}@keyframes sheetSpring{0%{opacity:0;transform:translateY(40px)scale(.98)}72%{opacity:1;transform:translateY(-2px)scale(1.006)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes dockRise{0%{opacity:0;transform:translateY(18px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-slide-up{animation:.48s cubic-bezier(.18,.9,.22,1) both springUp}.animate-fade-in{animation:.38s cubic-bezier(.2,.85,.25,1) both softPop}.animate-spring-up{animation:.48s cubic-bezier(.18,.9,.22,1) both springUp}.loading-wrap{flex-direction:column;justify-content:center;align-items:center;padding:40px 0;display:flex}.loading-spinner{border:2px solid #0a84ff1f;border-top-color:var(--color-primary);border-radius:50%;width:22px;height:22px;animation:.68s linear infinite spin}.loading-text{color:var(--color-text-tertiary);margin-top:var(--space-sm);font-size:13px}.modal-mask{z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#17203347;justify-content:center;align-items:flex-end;animation:.22s both fadeIn;display:flex;position:fixed;inset:0}.modal-content{border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:#fffffff5;width:100%;max-width:100%;max-height:80vh;animation:.42s cubic-bezier(.18,.9,.22,1) both sheetSpring;overflow-y:auto}@media screen and (width>=640px){.modal-content{border-radius:14px;max-width:540px;margin-bottom:20px}}.modal-header{padding:var(--space-lg);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.modal-title{color:var(--color-text);font-size:16px;font-weight:800}.modal-close{width:24px;height:24px;color:var(--color-text-secondary);cursor:pointer;background:#f0f7ff;border-radius:50%;justify-content:center;align-items:center;font-size:14px;transition:transform .2s cubic-bezier(.2,.85,.25,1);display:flex}.modal-close:active{background:#e2f1ff;transform:scale(.9)}.modal-body{padding:var(--space-lg)}.modal-tip{color:var(--color-text-secondary);margin-bottom:var(--space-md);font-size:13px;display:block}.modal-footer{gap:var(--space-sm);padding:var(--space-md) var(--space-lg);padding-bottom:calc(var(--space-lg) + 20px);border-top:1px solid var(--color-border-light);display:flex}.modal-footer .btn{border-radius:7px;flex:1;height:40px}.action-sheet{border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:#fffffff5;width:100%;max-width:100%;padding-bottom:20px;animation:.42s cubic-bezier(.18,.9,.22,1) both sheetSpring}@media screen and (width>=640px){.action-sheet{border-radius:14px;max-width:540px;margin-bottom:20px}}.sheet-header{padding:var(--space-lg);text-align:center;color:var(--color-text);border-bottom:1px solid var(--color-border-light);font-size:14px;font-weight:600}.sheet-item{text-align:center;border-bottom:1px solid var(--color-border-light);cursor:pointer;padding:14px;font-size:15px}.sheet-item:active{background:var(--color-bg)}.preview-mask{z-index:200;cursor:pointer;background:#000000eb;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.preview-img{object-fit:contain;max-width:100%;max-height:80vh}.form-group{margin-bottom:var(--space-md)}.form-label{color:var(--color-text-secondary);margin-bottom:5px;font-size:13px;font-weight:800;display:block}.form-label .required{color:var(--color-danger)}.form-input{border-radius:var(--radius-md);width:100%;height:42px;color:var(--color-text);background:#f5faffeb;border:1px solid #96b8d52e;padding:0 10px;font-size:14px;transition:border-color .2s cubic-bezier(.2,.85,.25,1),box-shadow .2s cubic-bezier(.2,.85,.25,1),background .2s cubic-bezier(.2,.85,.25,1)}.form-input:focus{background:#fff;border-color:#0a84ff6b;box-shadow:0 0 0 3px #0a84ff17}.form-textarea{border-radius:var(--radius-md);width:100%;min-height:80px;color:var(--color-text);resize:vertical;background:#f5faffeb;border:1px solid #96b8d52e;padding:10px;font-size:14px;transition:border-color .2s cubic-bezier(.2,.85,.25,1),box-shadow .2s cubic-bezier(.2,.85,.25,1),background .2s cubic-bezier(.2,.85,.25,1)}.form-textarea:focus{background:#fff;border-color:#0a84ff6b;box-shadow:0 0 0 3px #0a84ff17}::placeholder{color:var(--color-text-tertiary);font-size:13px}.picker-wrap{border-radius:var(--radius-md);height:42px;color:var(--color-text);cursor:pointer;background:#f5faffeb;border:1px solid #96b8d52e;justify-content:space-between;align-items:center;padding:0 10px;font-size:14px;transition:all .2s;display:flex}.picker-wrap.selected{background:#fff;border-color:#0a84ff6b;box-shadow:0 0 0 3px #0a84ff17}.picker-placeholder{color:var(--color-text-tertiary);font-size:13px}.picker-arrow{color:var(--color-primary);font-size:10px}.custom-nav{padding:0 16px;padding-top:max(env(safe-area-inset-top), 9px);height:calc(max(env(safe-area-inset-top), 9px) + 56px);box-sizing:border-box;justify-content:space-between;align-items:center;animation:.48s cubic-bezier(.18,.9,.22,1) both springUp;display:flex}.nav-brand{flex-direction:column;min-width:0;display:flex}.nav-title{letter-spacing:0;color:var(--color-text);font-size:20px;font-weight:900;line-height:1.08}.nav-subtitle{color:var(--color-primary);margin-top:3px;font-size:10.5px;font-weight:800}.nav-user{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;background:#ffffffb8;border:1px solid #ffffffc7;border-radius:999px;max-width:150px;padding:5px 9px;transition:transform .22s cubic-bezier(.2,.85,.25,1);box-shadow:0 5px 13px #4476aa1a}.nav-user:active{background:#fff;transform:scale(.96)}.user-name{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:13px;font-weight:700;overflow:hidden}.user-arrow{color:var(--color-primary);margin-left:3px;font-size:9px}.bottom-dock{left:12px;right:12px;bottom:calc(9px + env(safe-area-inset-bottom,0px));z-index:80;box-sizing:border-box;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#ffffffd1;border:1px solid #ffffffe6;border-radius:12px;min-height:49px;padding:5px;animation:.44s cubic-bezier(.18,.9,.22,1) both dockRise;display:flex;position:fixed;box-shadow:0 9px 27px #4476aa2e}@media screen and (width>=640px){.bottom-dock{width:calc(92vw - 24px);max-width:936px;margin:0 auto;left:0;right:0}.dock-tab-icon{width:22px;height:22px;font-size:12px}.dock-tab-text{font-size:12px}}.dock-tab{cursor:pointer;border-radius:9px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2.5px;min-width:0;min-height:39px;padding:4px 2px;transition:transform .22s cubic-bezier(.2,.85,.25,1),background .22s cubic-bezier(.2,.85,.25,1);display:flex}.dock-tab:active{transform:scale(.96)}.dock-tab.active{background:linear-gradient(135deg,#0a84ff 0%,#32ade6 100%);box-shadow:0 5px 14px #0a84ff38}.dock-tab-icon{width:18px;height:18px;color:var(--color-primary);background:#eef7ff;border-radius:6.5px;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:900;display:flex}.dock-tab.active .dock-tab-icon{color:var(--color-primary);background:#ffffffeb}.dock-tab-text{color:var(--color-text-secondary);white-space:nowrap;font-size:11px;font-weight:800;line-height:1.1}.dock-tab.active .dock-tab-text{color:#fff}.toast-container{z-index:999;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;background:#172033e0;border-radius:8px;padding:10px 20px;font-size:14px;font-weight:600;animation:.3s cubic-bezier(.2,.85,.25,1) both softPop;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.confirm-overlay{z-index:200;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#17203347;justify-content:center;align-items:center;animation:.22s both fadeIn;display:flex;position:fixed;inset:0}.confirm-box{background:#fffffffa;border-radius:14px;width:280px;max-width:90vw;animation:.42s cubic-bezier(.18,.9,.22,1) both sheetSpring;overflow:hidden}.confirm-title{text-align:center;color:var(--color-text);padding:20px 20px 10px;font-size:16px;font-weight:800}.confirm-content{color:var(--color-text-secondary);text-align:center;white-space:pre-wrap;padding:10px 20px 20px;font-size:14px;line-height:1.6}.confirm-actions{border-top:1px solid var(--color-border-light);display:flex}.confirm-actions button{cursor:pointer;background:0 0;border:none;flex:1;height:48px;font-size:16px;font-weight:600}.confirm-actions button:first-child{color:var(--color-text-secondary);border-right:1px solid var(--color-border-light)}.confirm-actions button:last-child{color:var(--color-primary);font-weight:700}.confirm-actions button:active{background:var(--color-bg)}.text-center{text-align:center}.text-right{text-align:right}.flex{display:flex}.flex-col{flex-direction:column}.flex-1{flex:1}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.form-row{margin-bottom:var(--space-md);gap:9px;display:flex}.form-half{flex:1}.bottom-spacer{height:calc(80px + env(safe-area-inset-bottom,20px))}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}@media screen and (width>=640px){.custom-nav{padding:0 20px}.form-input{height:46px;font-size:15px}.form-textarea{font-size:15px}.form-label{font-size:14px}.toast-container{padding:12px 24px;font-size:15px}.empty-icon{font-size:44px}.empty-text{font-size:15px}.nav-title{font-size:22px}.nav-subtitle{font-size:11px}.bottom-dock{min-height:54px;padding:6px 8px}.dock-tab{min-height:42px}}
