@charset "UTF-8";
:root{--bg:#f5f4ef;--paper:#fff;--ink:#181917;--muted:#73756e;--line:#dcded6;--red:#d53d28;--green:#29704c;--mono:ui-monospace,"SFMono-Regular",Consolas,"Liberation Mono",monospace;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 var(--sans);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{cursor:pointer;background:transparent;color:inherit;border:1px solid var(--line);padding:7px 12px;border-radius:3px;touch-action:manipulation}button:hover{border-color:var(--ink);background:#eeeee8}button:focus-visible,a:focus-visible{outline:2px solid var(--red);outline-offset:3px}button:disabled{opacity:.5;cursor:default}.dark{background:var(--ink);border-color:var(--ink);color:#fff}.dark:hover{background:#373930;color:#fff}.danger{color:var(--red)}.app-shell{height:100dvh;max-width:1600px;margin:auto;display:flex;flex-direction:column;padding:0 clamp(20px,3vw,52px)}
.topbar{height:70px;flex-shrink:0;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--ink)}.brand{color:inherit;text-decoration:none;display:flex;align-items:center;gap:12px;font-size:15px;font-weight:750}.mark{background:var(--ink);color:var(--bg);width:36px;height:36px;display:grid;place-content:center;font:700 27px var(--mono);letter-spacing:-3px;padding-right:3px}.brand small{display:block;font:9px var(--mono);letter-spacing:1.5px;color:var(--muted);margin-top:2px}.top-actions{display:flex;gap:22px;align-items:center}.clock{font:11px var(--mono);color:var(--muted)}.top-actions button{display:flex;align-items:center;gap:10px;font:12px var(--mono)}.key-dot{width:6px;height:6px;border-radius:50%;background:#b2b5aa}.key-dot.on{background:var(--green)}
main{flex:1;min-height:0;display:flex;flex-direction:column}.overview{display:grid;grid-template-columns:1fr 1.5fr;align-items:center;gap:24px;flex-shrink:0;padding:clamp(18px,3vh,32px) 0}.eyebrow{font:10px var(--mono);letter-spacing:1.2px;color:var(--muted);display:flex;align-items:center;gap:8px}.red-square{background:var(--red);width:6px;height:6px;display:inline-block;flex-shrink:0}h1{font-size:clamp(28px,3.4vw,46px);line-height:1.2;letter-spacing:-1.5px;margin:12px 0 8px;font-weight:800}.intro p{color:var(--muted);font-size:12px;margin:0}.metrics{display:grid;grid-template-columns:1fr 1fr 1.5fr;background:#eeeee7;border:1px solid var(--line)}.metric{padding:16px 20px;border-right:1px solid var(--line);min-width:0}.metric:last-child{border-right:0}.metric>span{color:var(--muted);font-size:11px;display:flex;align-items:center;justify-content:space-between;gap:8px}.metric strong{display:block;font:500 clamp(27px,3vw,43px)/1.35 var(--mono);letter-spacing:-1.7px;white-space:nowrap}.metric strong small{font:12px var(--mono);letter-spacing:0;margin-left:5px}.metric em{font:10px var(--mono);font-style:normal;color:var(--muted)}.rate strong{color:var(--red)}.rate b{font-size:9px;font-weight:500}.progress{height:4px;background:#d8dad0;position:relative;margin-top:7px}.progress div{height:100%;width:0;background:var(--red);transition:width .25s}.progress i{height:10px;width:1px;background:var(--ink);position:absolute;left:60%;top:-3px}
.schedule{flex:1;min-height:0;display:flex;flex-direction:column}.toolbar{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--ink);padding:13px 0;gap:10px;flex-shrink:0}.section-title{display:flex;align-items:baseline;gap:10px}.section-title>span{font:10px var(--mono);color:var(--red)}h2{font-size:15px;font-weight:700;margin:0}.section-title small{font-size:10px;color:var(--muted)}.tools{display:flex;gap:6px}.tools button{font-size:11px;padding:6px 10px}.day-nav{display:none}.days-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;flex:1;min-height:0}.day-card{border:1px solid var(--line);background:var(--paper);display:flex;flex-direction:column;min-height:0}.day-card.today{border-color:var(--ink)}.day-head{padding:12px 12px 9px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:5px}.day-name{font-weight:750;font-size:14px}.day-name small{font:10px var(--mono);color:var(--muted);display:block;margin-top:1px}.today-label{display:inline-block;background:var(--ink);color:var(--paper);font-size:8px;font-weight:400;padding:1px 4px;margin-left:3px;vertical-align:middle}.day-total{font:10px var(--mono);color:var(--muted);white-space:nowrap}.slot{padding:clamp(7px,1.5vh,15px) 11px;border-bottom:1px solid #edeee9;display:flex;flex-direction:column;justify-content:center;flex:1;min-height:0}.slot:last-child{border-bottom:0}.slot-head{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-bottom:7px}.slot-head span:last-child{font:10px var(--mono);color:var(--muted)}.time-row{display:flex;gap:6px;align-items:center;margin-bottom:5px}.time-label{font-size:9px;color:var(--muted);width:49px;flex-shrink:0;line-height:1.25}.time-label b{font:10px var(--mono);color:#53574e;display:block;margin-top:2px}.time-input{width:100%;min-width:0;height:32px;background:#fafbf8;border:1px solid var(--line);padding:0 3px;text-align:center;font:500 16px var(--mono);border-radius:3px;color:var(--ink);outline:none}.time-input::placeholder{font:11px var(--sans);color:#a2a59b}.time-input:focus{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink);background:#fff}.time-input.pending{border-color:#b28436;background:#fff9eb}.time-input.invalid{border-color:var(--red);background:#fff1ee}.time-input:disabled{background:#f1f2ed;border-style:dashed;color:#9b9e94;opacity:1}.slot-note{font-size:9px;color:var(--muted);min-height:14px;line-height:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slot-note.warning{color:var(--red)}
.bottom-strip{padding:14px 0;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-shrink:0}.gap{display:flex;align-items:baseline;gap:10px;font-size:12px}.gap strong{font:700 20px var(--mono);color:var(--red)}.gap.achieved strong{color:var(--green)}.missing{font-size:10px;color:var(--muted)}.record-btn{display:flex;align-items:center;gap:10px;border-color:var(--ink);font-size:12px;padding:8px 14px}.record-btn>span:last-child{margin-left:12px;font-size:17px;line-height:1}.record-btn:hover{background:var(--ink);color:#fff}footer{border-top:1px solid var(--ink);height:42px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;margin-bottom:env(safe-area-inset-bottom,0px);font-size:10px;color:var(--muted)}.sync{display:flex;align-items:center;gap:7px}.sync i{width:5px;height:5px;border-radius:50%;background:#b2b5aa}.sync.ok i{background:var(--green)}.sync.warn{color:#956f27}.sync.warn i{background:#b28436}.sync.error{color:var(--red)}.sync.error i{background:var(--red)}footer button{border:none;font:10px var(--mono);padding:4px 0}
dialog{border:1px solid var(--ink);border-radius:6px;background:var(--bg);padding:24px;width:calc(100% - 32px);max-width:470px;max-height:85dvh;overflow-y:auto;color:var(--ink);box-shadow:0 20px 80px #0003}dialog::backdrop{background:#17191566;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.dialog-head h2{font-size:23px;margin-top:6px}.close{font-size:23px;line-height:1;width:36px;height:36px;padding:0;border-color:transparent}dialog p{font-size:12px;color:var(--muted);line-height:1.8}.form-label{font-size:12px;display:block;margin:15px 0 6px}dialog input,dialog select{width:100%;border:1px solid var(--line);background:#fff;border-radius:3px;font-size:16px;min-height:44px;padding:9px 10px;color:var(--ink)}.form-message{min-height:20px;margin-top:8px;font-size:12px;color:var(--red)}.dialog-actions{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:22px}.dialog-actions button{min-height:42px;font-size:12px}.settings-grid{display:grid;gap:14px}.settings-grid label{font-size:12px;color:var(--muted)}.settings-grid input{margin-top:6px}.fineprint{font-size:10px!important}.copy-row{display:flex;justify-content:space-between;align-items:center;margin-top:14px;font-size:11px}.copy-row button{font-size:10px;padding:4px 9px}.code-box{display:block;background:#eaece3;border:1px solid #d6d9cc;border-radius:3px;padding:10px;font:11px/1.7 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}.shortcut-steps{margin-top:18px}.shortcut-steps>div{display:flex;gap:12px;align-items:baseline}.shortcut-steps b{font:12px var(--mono);color:var(--red)}.shortcut-steps p{margin:6px 0}code{font-family:var(--mono)}.quick-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.quick-fields button{text-align:left;min-height:58px;background:#fff}.quick-fields button b{display:block;font-size:13px}.quick-fields button small{color:var(--muted);font:11px var(--mono)}.quick-fields button.recommended{border-color:var(--ink)}.toast{position:fixed;bottom:65px;left:50%;transform:translate(-50%,10px);max-width:calc(100% - 32px);padding:10px 18px;border-radius:4px;background:var(--ink);color:#fff;font-size:12px;opacity:0;transition:.2s;pointer-events:none;z-index:10;text-align:center}.toast.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:781px){.topbar{height:60px}.overview{padding:16px 0}.slot{padding:10px 11px}.slot-fields{display:grid;grid-template-columns:1fr 1fr;gap:7px}.time-row{display:block;margin:0}.time-label{width:auto;display:flex;justify-content:space-between;gap:3px;margin-bottom:5px;font-size:9px}.time-label b{display:inline;margin:0;font-size:9px}.time-input{height:36px}.slot-note{margin-top:7px}.slot-head{margin-bottom:10px}}
@media(min-width:781px) and (max-height:720px){.topbar{height:48px}.overview{padding:12px 0}.metric{padding:9px 16px}.metric strong{font-size:30px}h1{font-size:31px;margin:7px 0 4px}.toolbar{padding:9px 0}.slot{padding:6px 8px}.slot-head{margin-bottom:4px}.slot-note{margin-top:3px}.time-label{margin-bottom:3px}.time-input{height:28px;font-size:14px}.day-head{padding:8px}.bottom-strip{padding:9px 0}footer{height:32px}}
@media(min-width:781px) and (max-width:1120px){.app-shell{padding:0 20px}.overview{grid-template-columns:1fr 1.7fr}.metric{padding-left:12px;padding-right:12px}.days-grid{gap:6px}.slot{padding-left:7px;padding-right:7px}.time-row{gap:4px}.time-label{width:auto;font-size:8px}.time-label b{font-size:9px}.time-input{font-size:14px}.day-head{padding-left:8px;padding-right:8px}.today-label{display:none}.section-title small{display:none}}
@media(min-width:781px){.slot-note:empty{min-height:0;height:0;margin-top:0}}
@media(min-width:781px) and (max-height:720px){.slot{padding-top:4px;padding-bottom:4px}.slot-head{font-size:10px;line-height:14px}.time-label{font-size:8px;line-height:11px}.slot-note{font-size:8px;line-height:11px;min-height:11px;margin-top:2px}}
@media(max-width:780px){.app-shell{height:auto;min-height:100dvh;padding:0 18px}.topbar{height:62px}.clock{display:none}.top-actions button{min-height:38px}.overview{display:block;padding:24px 0 20px}h1{font-size:34px;margin:12px 0 7px}.intro p{font-size:11px}.metrics{margin-top:22px;grid-template-columns:1fr 1fr 1.3fr}.metric{padding:12px 10px}.metric strong{font-size:27px;letter-spacing:-1px}.metric strong small{font-size:10px;margin-left:2px}.metric>span{font-size:10px}.rate b{display:none}.metric em{font-size:8px}.schedule{min-height:auto}.toolbar{padding:14px 0;gap:5px}.section-title small{display:none}.tools{gap:4px}.tools button{font-size:10px;padding:7px 9px;min-height:34px}.section-title{gap:7px}h2{font-size:14px}.day-nav{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin:2px 0 14px}.day-nav button{font-size:11px;padding:8px 0;min-height:40px}.day-nav button.today{background:var(--ink);color:#fff;border-color:var(--ink)}.days-grid{display:grid;grid-template-columns:1fr;gap:16px;flex:none}.day-card{scroll-margin-top:14px;border-radius:4px;overflow:hidden}.day-head{padding:13px 16px}.day-name{font-size:16px}.day-name small{display:inline;margin-left:9px;font-size:11px}.day-total{font-size:12px}.today-label{font-size:9px}.slot{padding:12px 16px;flex:none}.slot-head{margin-bottom:10px;font-size:13px}.slot-head span:last-child{font-size:11px}.time-row{display:inline-flex;width:calc(50% - 6px);gap:8px;vertical-align:top;margin-right:8px}.time-row:last-of-type{margin-right:0}.slot-fields{display:flex;gap:12px}.slot-fields .time-row{width:50%;margin:0}.time-label{width:42px;font-size:10px}.time-label b{font-size:11px}.time-input{height:44px;font-size:18px;padding:0 5px}.time-input::placeholder{font-size:13px}.slot-note{margin-top:7px;font-size:10px;min-height:15px}.bottom-strip{margin-top:14px;padding:16px 0;flex-wrap:wrap}.gap{width:100%;gap:8px}.gap strong{font-size:22px}.missing{margin-left:auto;font-size:10px}.record-btn{width:100%;justify-content:center;min-height:46px;margin-top:6px}footer{height:auto;min-height:60px;flex-wrap:wrap;padding:10px 0;gap:4px 12px}.footer-note{order:3;width:100%;font-size:9px}.toast{bottom:28px}dialog{padding:20px}.dialog-head h2{font-size:21px}.dialog-actions button{font-size:11px}}
@media(max-width:350px){.app-shell{padding:0 12px}.metric{padding:10px 7px}.metric strong{font-size:24px}.time-label{width:38px}.slot{padding:12px}.tools button{padding:6px 7px}.gap{flex-wrap:wrap}.missing{margin-left:0}}
.top-actions .record-btn{font:12px var(--sans);min-height:36px;gap:7px}.link-box{font-size:11px}.top-actions{gap:12px}
@media(max-width:780px){.top-actions{gap:6px}.top-actions .record-btn{width:auto;margin:0;padding:7px 9px;font-size:11px;min-height:38px}.top-actions button{padding:7px 9px;font-size:11px}.top-actions .record-btn>.red-square{width:5px;height:5px}.bottom-strip{margin-top:4px}.brand{gap:8px;font-size:13px}.brand small{font-size:8px;letter-spacing:.5px}.mark{width:32px;height:32px;font-size:24px}}
@media(max-width:350px){.brand small{display:none}.top-actions .record-btn{padding:7px;font-size:10px}.top-actions button{font-size:10px}.top-actions{gap:4px}}
