:root{--teal-900:#08302f;--teal-800:#0d3b3b;--teal-700:#135050;--teal-600:#1c6b66;--gold-600:#9a7322;--gold-500:#b8902f;--gold-400:#cdab4e;--gold-300:#e3c878;--gold-200:#f0dca0;--parchment:#f6efdd;--parchment-2:#efe4c6;--ink:#3a3322;--ink-soft:#6a5f44;--leaf:#5c7a3a;--danger:#9a3b2f;--radius:18px;--shadow:0 10px 30px rgba(0,0,0,.35);--font-serif:"Noto Serif SC","Songti SC","STSong",Georgia,"Times New Roman",serif;--font-sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}body{font-family:var(--font-sans);color:var(--ink);background:radial-gradient(120% 90% at 50% -10%,hsla(45,66%,68%,.18),transparent 55%),radial-gradient(140% 120% at 50% 120%,rgba(28,107,102,.45),transparent 60%),linear-gradient(180deg,var(--teal-900),var(--teal-800) 40%,#061f24 100%);background-attachment:fixed;min-height:100dvh;-webkit-font-smoothing:antialiased}a{color:var(--gold-300);text-decoration:none}.shell{max-width:760px;margin:0 auto;padding:18px 16px 56px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.title-block{display:flex;flex-direction:column;line-height:1;min-width:0}.title-zh{font-family:var(--font-serif);font-weight:700;font-size:clamp(24px,6vw,38px);letter-spacing:.12em;color:var(--gold-200);text-shadow:0 2px 6px rgba(0,0,0,.5),0 0 1px var(--gold-500);overflow-wrap:break-word}html[lang=en] .title-zh{font-size:clamp(20px,5vw,32px);letter-spacing:.02em}.title-en{font-family:var(--font-serif);font-size:clamp(12px,3vw,16px);letter-spacing:.42em;color:var(--gold-400);margin-top:8px;text-transform:uppercase}.lang-switch{display:inline-flex;flex:0 0 auto;border:1.5px solid var(--gold-400);border-radius:12px;overflow:hidden;background:rgba(8,40,40,.5);box-shadow:var(--shadow)}.lang-switch button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--gold-200);font-family:var(--font-sans);font-size:14px;font-weight:600;padding:7px 14px;cursor:pointer;white-space:nowrap;transition:background .2s,color .2s}.lang-switch button.active{background:linear-gradient(180deg,var(--gold-300),var(--gold-500));color:#3a2c08}.card{position:relative;background:linear-gradient(180deg,var(--parchment),var(--parchment-2));border-radius:var(--radius);padding:18px 18px 20px;box-shadow:var(--shadow);border:1px solid rgba(154,115,34,.35)}.card:before{content:"";position:absolute;inset:6px;border:1.5px solid rgba(154,115,34,.45);border-radius:calc(var(--radius) - 6px);pointer-events:none}.card+.card{margin-top:18px}.card-head{display:flex;align-items:center;gap:9px;font-family:var(--font-serif);font-weight:700;font-size:18px;color:var(--gold-600);margin-bottom:14px;position:relative}.card-head .dot{width:10px;height:10px;border-radius:3px;background:linear-gradient(135deg,var(--gold-400),var(--gold-600))}.method-row{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px dashed rgba(154,115,34,.3)}.method-row:last-of-type{border-bottom:none}.method-icon{width:30px;text-align:center;font-size:18px;filter:saturate(.8)}.method-name{flex:1 1;font-size:16px;color:var(--ink);font-weight:600}.method-recorded{font-size:12px;font-weight:600;color:var(--leaf);background:rgba(92,122,58,.12);border-radius:8px;padding:3px 8px;white-space:nowrap}.hours-input{width:84px;text-align:center;font-size:16px;font-weight:600;color:var(--ink);padding:8px 6px;border-radius:10px;border:1.5px solid rgba(154,115,34,.5);background:#fffdf6;outline:none}.hours-input:focus{border-color:var(--gold-500);box-shadow:0 0 0 3px rgba(205,171,78,.25)}.hours-unit{width:34px;font-size:13px;color:var(--ink-soft)}.hall-check{display:flex;align-items:center;gap:10px;margin:14px 2px 4px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.hall-check input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;height:22px;border-radius:6px;border:1.5px solid var(--gold-600);background:#fffdf6;display:grid;place-content:center;cursor:pointer}.hall-check input:after{content:"✓";font-size:15px;font-weight:800;color:#fff;transform:scale(0);transition:transform .15s}.hall-check input:checked{background:linear-gradient(135deg,var(--leaf),#45611f);border-color:#45611f}.hall-check input:checked:after{transform:scale(1)}.hall-label{font-size:15px;font-weight:600;color:var(--ink)}.hall-hint{font-size:12px;color:var(--ink-soft);margin:2px 0 0 32px}.day-total{display:flex;align-items:center;justify-content:space-between;margin:14px 2px 0;padding:9px 12px;border-radius:10px;background:rgba(154,115,34,.12);border:1px solid rgba(154,115,34,.3);font-size:14px;color:var(--ink-soft)}.day-total strong{font-family:var(--font-serif);font-size:17px;color:var(--ink)}.day-total.over{background:rgba(154,59,47,.12);border-color:rgba(154,59,47,.45)}.day-total.over,.day-total.over strong{color:var(--danger)}.day-total-add{color:var(--leaf);font-family:var(--font-sans);font-size:13px;font-weight:700;margin-left:4px}.limit-warn{margin:8px 2px 0;font-size:13px;color:var(--danger);font-weight:600}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;font-family:var(--font-serif);font-weight:700;letter-spacing:.18em;font-size:16px;color:#3a2c08;padding:13px 18px;border-radius:12px;background:linear-gradient(180deg,var(--gold-300),var(--gold-500));box-shadow:0 6px 16px rgba(120,90,20,.4),inset 0 1px 0 hsla(0,0%,100%,.5);transition:transform .08s,filter .2s;width:100%}.btn:hover{filter:brightness(1.05)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:default}.btn-ghost{background:rgba(154,115,34,.08);color:var(--gold-600);border:1.5px solid var(--gold-500);box-shadow:none;letter-spacing:.06em}.btn-ghost:hover{background:rgba(154,115,34,.18);filter:none}.btn-row{display:flex;gap:10px;margin-top:16px}.date-field{display:flex;align-items:center;gap:8px;margin-bottom:8px}.date-field label{font-size:13px;color:var(--ink-soft);font-weight:600}.date-field input[type=date]{font-family:var(--font-sans);font-size:15px;font-weight:600;color:var(--ink);padding:7px 10px;border-radius:10px;border:1.5px solid rgba(154,115,34,.5);background:#fffdf6}.tabs{display:flex;gap:8px;margin:14px 0 16px}.tab{flex:1 1;text-align:center;padding:11px;border-radius:12px;font-weight:700;font-size:15px;color:var(--gold-200);background:rgba(8,40,40,.45);border:1.5px solid rgba(205,171,78,.4);cursor:pointer}.tab.active{background:linear-gradient(180deg,var(--gold-300),var(--gold-500));color:#3a2c08;border-color:var(--gold-500)}.stat-group{margin-bottom:16px}.stat-group:last-child{margin-bottom:0}.stat-group h3{font-family:var(--font-serif);font-size:16px;color:var(--gold-600);margin:0 0 10px;display:flex;align-items:center;gap:8px}.stat-group h3:before{content:"";width:6px;height:18px;border-radius:3px;background:linear-gradient(180deg,var(--gold-400),var(--gold-600))}.stat-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:10px;gap:10px}.tile{background:rgba(255,253,246,.7);border:1px solid rgba(154,115,34,.3);border-radius:12px;padding:12px 14px}.tile .label{font-size:12px;color:var(--ink-soft);font-weight:600}.tile .value{font-family:var(--font-serif);font-size:26px;font-weight:700;color:var(--ink);line-height:1.1;margin-top:4px}.tile .unit{font-size:12px;color:var(--ink-soft);margin-left:4px}.tile.hall .value{color:var(--leaf)}.bars{display:flex;flex-direction:column;gap:11px}.bar-row{display:grid;grid-template-columns:1fr auto;grid-template-areas:"name val" "track track";align-items:baseline;grid-gap:4px 10px;gap:4px 10px}.bar-name{grid-area:name;font-size:13px;font-weight:600;color:var(--ink);line-height:1.25}.bar-track{grid-area:track;height:12px;background:rgba(154,115,34,.18);overflow:hidden}.bar-fill,.bar-track{display:block;border-radius:8px}.bar-fill{height:100%;background:linear-gradient(90deg,var(--gold-400),var(--gold-600));transition:width .4s ease}.bar-val{grid-area:val;font-size:13px;font-weight:700;color:var(--ink-soft);text-align:right;white-space:nowrap}.search-fields{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}.search-fields .date-field{margin-bottom:0}.search-btn{width:auto;flex:0 0 auto;padding:9px 22px;font-size:15px}.search-hint{font-size:12px;color:var(--ink-soft);margin-top:8px}.trend{background:rgba(255,253,246,.6);border:1px solid rgba(154,115,34,.3);border-radius:12px;padding:10px 12px 8px}.trend-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.trend-max{font-weight:700}.trend-legend,.trend-max{font-size:11px;color:var(--ink-soft)}.trend-legend{gap:12px}.trend-legend,.trend-legend .leg{display:inline-flex;align-items:center}.trend-legend .leg{gap:4px}.trend-legend .dot{width:10px;height:10px;border-radius:3px;display:inline-block}.trend-legend .dot.hall{background:var(--leaf)}.trend-legend .dot.rest{background:var(--gold-500)}.trend-plot{position:relative}.trend-svg{display:block;width:100%;height:132px}.trend-axis{stroke:rgba(154,115,34,.4);stroke-width:1}.trend-bar-rest{fill:var(--gold-500)}.trend-bar-hall{fill:var(--leaf)}.trend-empty{position:absolute;inset:0;display:grid;place-content:center;font-size:13px;color:var(--ink-soft)}.trend-ticks{display:flex;margin-top:3px}.trend-tick{flex:1 1;text-align:center;font-size:10px;color:var(--ink-soft);white-space:nowrap;overflow:hidden}.subtabs{display:inline-flex;border:1px solid rgba(154,115,34,.4);border-radius:10px;overflow:hidden;margin-bottom:12px}.subtabs button{border:none;background:transparent;padding:6px 14px;font-size:13px;font-weight:600;color:var(--ink-soft);cursor:pointer}.subtabs button.active{background:linear-gradient(180deg,var(--gold-300),var(--gold-500));color:#3a2c08}.week-days{display:flex;gap:8px;justify-content:space-between}.day-pill{flex:1 1;text-align:center}.day-pill .ring{width:34px;height:34px;margin:0 auto 5px;border-radius:50%;display:grid;place-content:center;border:2px solid rgba(154,115,34,.4);background:rgba(255,253,246,.5);font-size:15px;color:var(--ink-soft)}.day-pill.on .ring{background:linear-gradient(135deg,var(--leaf),#45611f);border-color:#45611f;color:#fff}.day-pill.today .ring{box-shadow:0 0 0 2px var(--gold-400)}.day-pill .lbl{font-size:12px;color:var(--ink-soft);font-weight:600}.big-days{display:flex;align-items:baseline;gap:6px;margin-bottom:12px}.big-days .n{font-family:var(--font-serif);font-size:40px;font-weight:800;color:var(--leaf)}.big-days .of{font-size:14px;color:var(--ink-soft)}.auth-tagline{text-align:center;margin:26px auto 0;max-width:420px;color:var(--gold-200);font-family:var(--font-serif);font-size:15px;letter-spacing:.16em;line-height:1.7;opacity:.95}.brand-footer{text-align:center;margin-top:16px;color:var(--gold-300)}.brand-footer .logo{width:64px;height:64px;margin:0 auto 8px;display:block;filter:drop-shadow(0 4px 10px rgba(0,0,0,.4))}.brand-logo{width:44px;height:44px;margin-right:10px;flex:0 0 auto;filter:drop-shadow(0 2px 6px rgba(0,0,0,.45))}.title-row{display:flex;align-items:center;flex:1 1 auto;min-width:0}.brand-footer .zh{font-family:var(--font-serif);font-size:22px;letter-spacing:.3em;color:var(--gold-200)}.brand-footer .en{font-size:12px;letter-spacing:.34em;color:var(--gold-400);text-transform:uppercase;margin-top:4px}.auth-wrap{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px 48px}.auth-card{width:100%;max-width:400px}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:6px}.field-hint{font-weight:500;color:var(--gold-600);margin-left:6px}.field input{width:100%;font-size:16px;padding:11px 12px;border-radius:11px;border:1.5px solid rgba(154,115,34,.5);background:#fffdf6;color:var(--ink);outline:none}.field input:focus{border-color:var(--gold-500);box-shadow:0 0 0 3px rgba(205,171,78,.25)}.captcha-box{display:flex;align-items:flex-end;gap:10px}.captcha-q{flex:1 1}.captcha-prompt{font-size:12px;color:var(--ink-soft);margin-bottom:6px}.captcha-question{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-serif);font-size:22px;font-weight:700;color:var(--ink);background:rgba(154,115,34,.12);border:1px dashed rgba(154,115,34,.5);border-radius:10px;padding:6px 14px;letter-spacing:.08em;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.captcha-q{display:flex;flex-direction:column;align-items:flex-start}.captcha-refresh{background:none;border:none;color:var(--gold-600);font-size:12px;cursor:pointer;text-decoration:underline;padding:0;margin-top:6px}.captcha-answer{width:92px}.auth-error{background:rgba(154,59,47,.12);border:1px solid rgba(154,59,47,.4);color:var(--danger);border-radius:10px;padding:9px 12px;font-size:14px;margin-bottom:12px}.auth-alt{text-align:center;margin-top:14px;font-size:14px}.auth-alt a{color:var(--gold-600);font-weight:600}.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--teal-700);color:var(--gold-200);border:1px solid var(--gold-400);padding:10px 20px;border-radius:999px;font-weight:600;box-shadow:var(--shadow);z-index:50;animation:rise .25s ease}@keyframes rise{0%{opacity:0;transform:translate(-50%,8px)}}.center-loading{min-height:60vh;display:grid;place-content:center;color:var(--gold-300);font-size:15px}.userline,.userline button{font-size:13px;color:var(--gold-300)}.userline button{background:none;border:none;text-decoration:underline;cursor:pointer;padding:0 0 0 8px}