:root{--bg: #f5f7fb;--card-bg: #ffffff;--border: #e2e8f0;--text: #1e293b;--text-light: #64748b;--primary: #2563eb;--primary-hover: #1d4ed8;--error: #dc2626;--grad-start: #6366f1;--grad-end: #06b6d4}*{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}body{font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(1100px 550px at 12% -8%,rgb(99 102 241 / 16%),transparent 60%),radial-gradient(900px 480px at 88% -4%,rgb(6 182 212 / 14%),transparent 60%),radial-gradient(800px 520px at 50% 108%,rgb(236 72 153 / 9%),transparent 65%),var(--bg);background-attachment:fixed}.app-header{text-align:center;padding:48px 16px 22px}.app-header h1{font-size:38px;font-weight:800;letter-spacing:2px;background:linear-gradient(120deg,var(--grad-start),var(--primary) 50%,var(--grad-end));-webkit-background-clip:text;background-clip:text;color:transparent}.app-header .subtitle{color:var(--text-light);margin-top:8px;font-size:14px;letter-spacing:6px}.container{flex:1;width:100%;max-width:1440px;margin:0 auto;padding:24px 16px 48px}.tool-nav{position:sticky;top:12px;z-index:10;display:flex;gap:6px;margin-bottom:24px;flex-wrap:wrap;justify-content:center;padding:10px;border-radius:16px;border:1px solid rgb(255 255 255 / 60%);background:#ffffffb8;backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);box-shadow:0 8px 28px #0f172a14}.tool-nav .nav-btn{background:transparent;color:var(--text-light);border:none;padding:8px 18px;border-radius:999px;font-size:14px;font-weight:500;transition:background .2s,color .2s,box-shadow .2s}.tool-nav .nav-btn:hover:not(.active){background:#2563eb14;color:var(--primary)}.tool-nav .nav-btn.active{background:linear-gradient(120deg,var(--grad-start),var(--primary));color:#fff;box-shadow:0 4px 14px #2563eb59}.tool-nav .nav-btn.active:hover{background:linear-gradient(120deg,var(--grad-start),var(--primary-hover))}.tool-card{background:#ffffffeb;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgb(226 232 240 / 80%);border-radius:16px;padding:28px;box-shadow:0 6px 30px #0f172a12}.tool-card h2{font-size:20px;margin-bottom:8px}.tool-desc{color:var(--text-light);font-size:13px;margin-bottom:20px;line-height:1.6}.field-label{display:block;margin:10px 0 4px;font-size:13px;color:var(--text-light)}.checkbox{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;-webkit-user-select:none;user-select:none}.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}@media(max-width:800px){.tool-grid{grid-template-columns:1fr}}@media(max-width:480px){.calc-units{grid-template-columns:repeat(2,1fr)}}.panel{display:flex;flex-direction:column;gap:12px}.panel h3{font-size:15px}.converter-panel{margin-top:24px;padding-top:20px;border-top:1px dashed var(--border)}.drop-zone{border:2px dashed var(--border);border-radius:10px;padding:28px 16px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s}.drop-zone:hover,.drop-zone.dragover{border-color:var(--primary);background:#eff6ff}.drop-zone .hint{color:var(--text-light);font-size:12px;margin-top:6px}textarea{width:100%;min-height:160px;resize:vertical;border:1px solid var(--border);border-radius:8px;padding:10px;font-family:Consolas,Monaco,monospace;font-size:12px;line-height:1.5;word-break:break-all}textarea:focus{outline:none;border-color:var(--primary)}.row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-light);flex-wrap:wrap}.num-input{width:68px;padding:6px 8px}.unit-group{display:inline-flex;align-items:center;gap:6px}.calc-form{display:flex;flex-direction:column;gap:14px}.calc-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-light)}.calc-field select{width:100%}.calc-units{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.calc-unit{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-light)}.calc-unit .num-input{width:100%}.stepper{display:flex;align-items:stretch}.stepper .num-input{border-radius:0;text-align:center;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.stepper .num-input::-webkit-outer-spin-button,.stepper .num-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.stepper .stepper-btn{flex:none;width:34px;padding:0;border:1px solid var(--border);background:#f1f5f9;color:var(--text);font-size:18px;line-height:1;cursor:pointer;transition:background .15s}.stepper .stepper-btn:first-child{border-radius:8px 0 0 8px}.stepper .stepper-btn:last-child{border-radius:0 8px 8px 0}.stepper .stepper-btn+.num-input{border-left:none;border-right:none}.stepper .stepper-btn:hover{background:#e2e8f0}.stepper .stepper-btn:active{background:#cbd5e1}.calc-result-box{border:1px solid var(--border);border-radius:10px;background:#f8fafc;padding:12px;min-height:44px}.result-text{line-height:1.8;word-break:break-all}.now-box{border:1px solid var(--border);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:6px}.row .hint{font-size:12px}select{border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:13px;color:var(--text);background:#fff;cursor:pointer}select:focus{outline:none;border-color:var(--primary)}.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}button{border:none;border-radius:8px;padding:8px 16px;font-size:13px;background:var(--primary);color:#fff;cursor:pointer;transition:background .2s}button:hover:not(:disabled){background:var(--primary-hover)}button:disabled{background:#cbd5e1;cursor:not-allowed}.info{font-size:12px;color:var(--text-light)}#translate-status{color:var(--error);font-weight:700}.error{font-size:12px;color:var(--error)}.preview-wrap{border:1px solid var(--border);border-radius:10px;padding:12px;text-align:center;background:repeating-conic-gradient(#f1f5f9,#f1f5f9 25%,#fff 0%,#fff 50%) 50% / 20px 20px}.preview-wrap img{max-width:100%;max-height:260px;border-radius:4px}.preview-wrap .info{margin-top:8px;background:var(--card-bg);display:inline-block;padding:2px 8px;border-radius:4px}.text-input{width:100%;border:1px solid var(--border);border-radius:8px;padding:10px;font-family:Consolas,Monaco,monospace;font-size:13px}.text-input:focus{outline:none;border-color:var(--primary)}.text-input[readonly]{background:#f8fafc}.combo-input{position:relative;display:flex;align-items:center;flex:1;min-width:260px;border:1px solid var(--border);border-radius:8px;background:#fff;overflow:hidden}.combo-input:focus-within{border-color:var(--primary)}.combo-text{flex:1;min-width:0;border:none;outline:none;padding:10px;font-family:Consolas,Monaco,monospace;font-size:13px}.combo-input .combo-picker-btn{border:none;border-radius:0;padding:8px 12px;background:#f1f5f9;color:var(--text-light);font-size:14px;cursor:pointer}.combo-input .combo-picker-btn:hover{background:#e2e8f0}.combo-picker{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;pointer-events:none}.color-preview{border:1px solid var(--border);border-radius:10px;padding:12px;text-align:center;background:repeating-conic-gradient(#f1f5f9,#f1f5f9 25%,#fff 0%,#fff 50%) 50% / 20px 20px}.color-swatch{height:72px;border-radius:8px;border:1px solid var(--border)}.color-preview .info{margin-top:8px;background:var(--card-bg);display:inline-block;padding:2px 8px;border-radius:4px}.qrcode-preview{border:1px solid var(--border);border-radius:10px;padding:16px;text-align:center;background:#fff}.qrcode-preview canvas{border-radius:4px}.app-footer{text-align:center;padding:16px;color:var(--text-light);font-size:12px}.zoomable{cursor:zoom-in}.img-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#000c;cursor:zoom-out}.img-lightbox[hidden]{display:none}.img-lightbox img{max-width:100%;max-height:100%;object-fit:contain;border-radius:4px}body:before,body:after{content:"";position:fixed;z-index:-1;border-radius:50%;filter:blur(60px);pointer-events:none;will-change:transform}body:before{width:480px;height:480px;left:-120px;top:12%;background:radial-gradient(circle,rgb(99 102 241 / 30%),transparent 70%);animation:aurora-drift 18s ease-in-out infinite alternate}body:after{width:560px;height:560px;right:-160px;top:45%;background:radial-gradient(circle,rgb(6 182 212 / 26%),transparent 70%);animation:aurora-drift 24s ease-in-out infinite alternate-reverse}@keyframes aurora-drift{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(60px,40px,0) scale(1.15)}}@media(prefers-reduced-motion:reduce){body:before,body:after{animation:none}body.theme-fancy,body.theme-fancy .app-header h1{animation:none}}.auth-account{position:fixed;top:14px;right:16px;z-index:30}.auth-fab,.auth-chip{border:1px solid rgb(255 255 255 / 60%);border-radius:999px;padding:7px 16px;font-size:13px;background:#ffffffd1;color:var(--text);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 16px #0f172a1a;cursor:pointer;transition:transform .2s,box-shadow .2s}.auth-fab:hover:not(:disabled),.auth-chip:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #0f172a24;background:#fffffff2}.auth-chip{display:inline-flex;align-items:center;gap:8px;padding-left:6px}.auth-avatar{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:linear-gradient(120deg,var(--grad-start),var(--primary));color:#fff;font-size:12px;font-weight:700;flex:none}.auth-avatar-lg{width:34px;height:34px;font-size:15px}.auth-chip-email{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.auth-caret{font-size:11px;color:var(--text-light);transition:transform .2s}.auth-chip.open .auth-caret{transform:rotate(180deg)}.auth-menu{position:absolute;top:calc(100% + 10px);right:0;min-width:300px;background:var(--card-bg);border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 44px #0f172a3d;padding:8px;opacity:.9;animation:auth-menu-in .15s ease}@keyframes auth-menu-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.auth-menu-head{display:flex;align-items:center;gap:12px;padding:8px 10px 10px}.auth-menu-id{display:flex;flex-direction:column;gap:2px;min-width:0}.auth-menu-label{font-size:11px;color:var(--text-light)}.auth-menu-email{font-size:13px;font-weight:600;color:var(--text);word-break:break-all}.auth-menu-divider{height:1px;background:var(--border);margin:2px 4px 6px}.auth-menu-item{display:block;width:100%;text-align:left;border:none;background:transparent;color:var(--text);padding:9px 10px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer}.auth-menu-item:hover{background:#2563eb14}.auth-menu-item.danger{color:var(--error)}.auth-menu-item.danger:hover{background:#dc262614}.checkin-topbar{display:flex;align-items:center;gap:10px;padding:4px 6px 0}.checkin-back{border:none;background:transparent;padding:2px 4px;font-size:13px;font-weight:600;color:var(--primary);cursor:pointer}.checkin-back:hover{color:var(--primary-hover)}.checkin-topbar-title{font-size:14px;font-weight:700;color:var(--text)}.checkin{padding:4px 8px 8px}.checkin-summary{display:flex;gap:10px;margin-bottom:12px}.checkin-stat{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 6px;background:#2563eb0f;border-radius:10px}.checkin-num{font-size:20px;font-weight:800;color:var(--primary);line-height:1}.checkin-cap{font-size:11px;color:var(--text-light)}.checkin-btn{display:block;width:100%;padding:10px 16px;border:none;border-radius:10px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(120deg,var(--grad-start),var(--primary));box-shadow:0 6px 16px #2563eb47;cursor:pointer;transition:transform .15s,box-shadow .15s,filter .15s}.checkin-btn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.05)}.checkin-btn.done,.checkin-btn:disabled{background:#64748b2e;color:var(--text-light);box-shadow:none;cursor:default;transform:none;filter:none}.checkin-msg{min-height:16px;margin:8px 0 4px;text-align:center;font-size:12px;color:var(--text-light)}.checkin-msg.ok{color:#16a34a}.checkin-msg.error{color:var(--error)}.cal{margin-top:4px}.cal-head{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:8px}.cal-title{font-size:13px;font-weight:700;color:var(--text)}.cal-nav{width:24px;height:24px;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--card-bg);color:var(--text-light);font-size:15px;line-height:1;cursor:pointer}.cal-nav:hover:not(:disabled){background:#2563eb14;color:var(--primary)}.cal-nav:disabled{opacity:.4;cursor:default}.cal-week,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.cal-week span{text-align:center;font-size:11px;color:var(--text-light);padding:2px 0}.cal-cell{display:flex;align-items:center;justify-content:center;height:26px;font-size:12px;border-radius:6px;color:var(--text)}.cal-cell.cal-empty{color:transparent}.cal-cell.future{color:var(--text-light);opacity:.5}.cal-cell.signed{background:linear-gradient(120deg,var(--grad-start),var(--primary));color:#fff;font-weight:700}.cal-cell.today{outline:2px solid var(--primary);outline-offset:-2px;font-weight:700}body.theme-fancy .auth-fab,body.theme-fancy .auth-chip{background:#180c34a6;border-color:#ffffff38;color:var(--text)}body.theme-fancy .auth-fab:hover:not(:disabled),body.theme-fancy .auth-chip:hover:not(:disabled){background:#180c34d9}.theme-toggle{position:fixed;bottom:14px;left:16px;z-index:20;border:1px solid rgb(255 255 255 / 60%);border-radius:999px;padding:8px 16px;font-size:13px;background:#ffffffd1;color:var(--text);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 16px #0f172a1a;cursor:pointer;transition:transform .2s,box-shadow .2s}.theme-toggle:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #0f172a24;background:#fffffff2}body.theme-fancy .theme-toggle{background:#180c34a6;border-color:#ffffff38;color:var(--text)}body.theme-fancy .theme-toggle:hover:not(:disabled){background:#180c34d9}body.theme-fancy{--bg: #130a2a;--card-bg: rgb(40 22 80 / 55%);--border: rgb(255 255 255 / 16%);--text: #f4f1ff;--text-light: #b3a8d9;--primary: #d946ef;--primary-hover: #e879f9;--error: #fb7185;--grad-start: #f43f5e;--grad-end: #22d3ee;color-scheme:dark;background:linear-gradient(-45deg,#ff0080,#7928ca,#2563eb,#00dfd8,#ff8a00);background-size:400% 400%;animation:fancy-flow 18s ease infinite}@keyframes fancy-flow{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}body.theme-fancy:before{background:radial-gradient(circle,rgb(255 0 128 / 45%),transparent 70%)}body.theme-fancy:after{background:radial-gradient(circle,rgb(0 223 216 / 40%),transparent 70%)}body.theme-fancy .app-header h1{background:linear-gradient(120deg,#ff0080,#ff8a00,#ffe600,#00ff85,#00cfff,#a26bff);-webkit-background-clip:text;background-clip:text;color:transparent;animation:hue-spin 8s linear infinite}@keyframes hue-spin{to{filter:hue-rotate(360deg)}}body.theme-fancy .tool-nav{background:#180c349e;border-color:#ffffff2e;box-shadow:0 8px 28px #00000059}body.theme-fancy .tool-nav .nav-btn:hover:not(.active){background:#d946ef2e;color:#f0abfc}body.theme-fancy .tool-nav .nav-btn.active{background:linear-gradient(120deg,#f43f5e,#d946ef,#22d3ee);box-shadow:0 4px 16px #d946ef73}body.theme-fancy .tool-nav .nav-btn.active:hover{background:linear-gradient(120deg,#f43f5e,#d946ef,#22d3ee);filter:brightness(1.12)}body.theme-fancy .tool-card{background:#160c3099;border-color:#ffffff24;box-shadow:0 8px 32px #00000059}body.theme-fancy textarea,body.theme-fancy select,body.theme-fancy .text-input{background:#0c061e99;color:var(--text);border-color:var(--border)}body.theme-fancy .text-input[readonly]{background:#0c061e73}body.theme-fancy .combo-input{background:#0c061e99}body.theme-fancy .combo-text{background:transparent;color:var(--text)}body.theme-fancy .combo-input .combo-picker-btn{background:#ffffff14}body.theme-fancy .combo-input .combo-picker-btn:hover{background:#ffffff29}body.theme-fancy .stepper .stepper-btn{background:#ffffff14}body.theme-fancy .stepper .stepper-btn:hover{background:#ffffff29}body.theme-fancy .stepper .stepper-btn:active{background:#ffffff3d}body.theme-fancy .calc-result-box{background:#ffffff0f}body.theme-fancy .drop-zone:hover,body.theme-fancy .drop-zone.dragover{background:#d946ef1f}body.theme-fancy button:disabled{background:#ffffff2e;color:#ffffff73}body.img-active,body.img-active:before,body.img-active:after,body.img-active .app-header h1,body.theme-fancy.img-active,body.theme-fancy.img-active .app-header h1{animation-play-state:paused}.auth-title{text-align:center;font-size:22px;font-weight:800;color:var(--text);margin-bottom:20px}.auth-form{width:100%}.auth-form .field-label{display:block;margin:16px 0 6px;font-size:13px;font-weight:600;color:var(--text)}.auth-form .field-label:first-of-type{margin-top:0}.auth-form .text-input{width:100%;padding:12px 14px;font-family:inherit;font-size:14px;border-radius:10px}.auth-form .actions{margin-top:26px;justify-content:center}#auth-submit{width:100%;padding:12px 16px;font-size:15px;font-weight:600;color:#fff;background:linear-gradient(120deg,var(--grad-start),var(--primary));border-radius:10px;box-shadow:0 6px 18px #2563eb52;transition:transform .15s,box-shadow .15s,filter .15s}#auth-submit:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.05);box-shadow:0 10px 24px #2563eb66}#auth-submit:disabled{opacity:.7;cursor:default}#auth-msg{flex-basis:100%;text-align:center}#auth-guest{display:flex;flex-direction:column}.auth-switch{margin-top:20px;text-align:center;font-size:13px;color:var(--text-light)}.auth-link{border:none;background:none;padding:0 2px;font-size:13px;font-weight:600;color:var(--primary);cursor:pointer}.auth-link:hover{color:var(--primary-hover);text-decoration:underline}.auth-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:20px;background:#0f172a73;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.auth-modal-overlay[hidden]{display:none}.auth-modal{position:relative;width:100%;max-width:420px;background:var(--card-bg);border:1px solid var(--border);border-radius:20px;padding:34px 30px 30px;box-shadow:0 24px 60px #0f172a4d}.auth-modal-close{position:absolute;top:12px;right:12px;width:30px;height:30px;padding:0;border:none;border-radius:50%;background:#0f172a0f;color:var(--text-light);font-size:20px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.auth-modal-close:hover{background:#0f172a1f;color:var(--text)}.honors-container{max-width:860px}.honors-toolbar{margin-bottom:16px}.honors-back{display:inline-block;padding:6px 14px;border-radius:999px;background:#2563eb14;color:var(--primary);font-size:13px;font-weight:600;text-decoration:none;transition:background .15s}.honors-back:hover{background:#2563eb29}.honors-table{width:100%;border-collapse:collapse;font-size:13px}.honors-table th,.honors-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.honors-table th{color:var(--text-light);font-weight:600;background:#f8fafc}.honors-table tbody tr:hover{background:#2563eb0a}.honors-empty{padding:24px 0;text-align:center;color:var(--text-light);font-size:13px}.hb-create{background:linear-gradient(120deg,#f43f5e,#fb7185);color:#fff;border:none;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600;cursor:pointer;transition:transform .15s,box-shadow .15s}.hb-create:hover{transform:translateY(-1px);box-shadow:0 6px 16px #f43f5e59}#hb-balance{margin-top:12px}.hb-card{max-width:460px;margin:0 auto;text-align:center}.hb-note{padding:24px 0;color:var(--text-light);font-size:14px}.hb-sender{font-size:13px;color:var(--text-light)}.hb-packet-title{font-size:22px;margin:8px 0 6px}.hb-meta{font-size:12px;color:var(--text-light);margin-bottom:20px}.hb-open-btn{width:100%;padding:14px 16px;border:none;border-radius:12px;font-size:17px;font-weight:700;letter-spacing:4px;color:#fff;background:linear-gradient(135deg,#f43f5e,#e11d48);box-shadow:0 10px 26px #e11d4859;cursor:pointer;transition:transform .15s,box-shadow .15s,filter .15s}.hb-open-btn:hover:not(:disabled){transform:translateY(-2px);filter:brightness(1.05)}.hb-open-btn:disabled{opacity:.7;cursor:default}.hb-result{margin-top:14px;font-size:15px;font-weight:700;color:#e11d48}.hb-footer{margin-top:20px;justify-content:center}
