:root{--accent:#007aff;--accent-pressed:#0064d1;--danger:#ff3b30;--green:#34c759;--bg:#f2f2f7;--card:#fff;--text:#000;--text-secondary:#3c3c4399;--text-tertiary:#3c3c434d;--separator:#3c3c434a;--fill:#7878801f;--fill-pressed:#78788033;--fill-danger:#ff3b301f;--bar-bg:#f2f2f7c7;--shadow-card:0 1px 2px #0000000a, 0 2px 8px #00000008;--shadow-thumb:0 1px 2px #00000014;--radius-card:20px;--radius-cell:12px;--radius-input:10px}@media (prefers-color-scheme:dark){:root{--accent:#0a84ff;--accent-pressed:#409cff;--danger:#ff453a;--green:#30d158;--bg:#000;--card:#1c1c1e;--text:#fff;--text-secondary:#ebebf599;--text-tertiary:#ebebf54d;--separator:#54545899;--fill:#7878803d;--fill-pressed:#7878805c;--fill-danger:#ff453a29;--bar-bg:#000000b8;--shadow-card:none;--shadow-thumb:none}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro SC,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:17px;line-height:1.4}.page{max-width:720px;margin:0 auto;padding:0 16px 48px}.page.has-upload-bar{padding-bottom:130px}.topbar{z-index:20;padding:max(14px, env(safe-area-inset-top)) 16px 12px;background:var(--bar-bg);-webkit-backdrop-filter:blur(20px)saturate(180%);backdrop-filter:blur(20px)saturate(180%);border-bottom:.5px solid var(--separator);justify-content:space-between;align-items:center;gap:12px;margin:0 -16px 16px;display:flex;position:sticky;top:0}.topbar h1{letter-spacing:-.5px;margin:0;font-size:30px;font-weight:700}.subtitle{color:var(--text-secondary);margin:2px 0 0;font-size:13px}.topbar-spacer{width:68px}.card{background:var(--card);border-radius:var(--radius-card);box-shadow:var(--shadow-card);margin-bottom:16px;padding:16px}input,textarea{border-radius:var(--radius-input);background:var(--fill);width:100%;color:var(--text);appearance:none;border:none;padding:12px 14px;font-family:inherit;font-size:17px;transition:background .15s}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}input:focus,textarea:focus{background:var(--fill-pressed);outline:none;box-shadow:0 0 0 3px #007aff38}@media (prefers-color-scheme:dark){input:focus,textarea:focus{box-shadow:0 0 0 3px #0a84ff4d}}.btn{background:var(--fill);color:var(--text);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;border:none;border-radius:999px;padding:11px 20px;font-family:inherit;font-size:17px;transition:opacity .15s,background .15s}.btn:active{opacity:.6}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:active{background:var(--accent-pressed);opacity:1}.btn-danger{background:var(--fill-danger);color:var(--danger)}.btn-block{width:100%;padding:14px;font-size:17px;font-weight:600}.btn-slot{background:var(--accent);color:#fff;width:100%;margin-top:10px;font-weight:600}.btn-slot:active{background:var(--accent-pressed);opacity:1}.filter-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.filter-actions{gap:10px;margin-top:12px;display:flex}.filter-actions .btn{flex:1}.slot-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.slot-head{flex-direction:column;margin-bottom:8px;display:flex}.slot-label{font-size:15px;font-weight:600}.slot-hint{color:var(--text-secondary);font-size:13px}.slot-body{aspect-ratio:4/3;border-radius:var(--radius-cell);background:var(--fill);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.slot-body.tappable{cursor:pointer}.slot-body img{object-fit:cover;width:100%;height:100%;display:block}.slot-empty{color:var(--text-secondary);font-size:15px}.slot-uploading{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;display:flex}.spinner{border:2px solid var(--fill-pressed);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.slot-time{color:var(--text-secondary);margin-top:6px;font-size:13px}.slot-count{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;pointer-events:none;background:#0000008c;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:600;position:absolute;top:6px;right:6px}.record-card{cursor:pointer;padding:16px;transition:transform .15s}.record-card:active{transform:scale(.985)}.record-head{justify-content:space-between;gap:12px;margin-bottom:14px;display:flex}.record-project{font-size:17px;font-weight:600}.record-meta{color:var(--text-secondary);margin-top:3px;font-size:15px}.record-date{color:var(--text-secondary);white-space:nowrap;font-size:15px}.form label{color:var(--text-secondary);margin-bottom:16px;font-size:15px;font-weight:500;display:block}.form label input{color:var(--text);margin-top:6px;font-weight:400}.req{color:var(--danger)}.record-info{padding:4px 16px}.record-info .info-row{border-bottom:.5px solid var(--separator);justify-content:space-between;align-items:baseline;gap:12px;padding:13px 0;display:flex}.record-info .info-row:last-child{border-bottom:none}.info-label{color:var(--text-secondary);flex:none;font-size:17px}.info-value{text-align:right;word-break:break-all;font-size:17px}.phase-card .slot-head{margin-bottom:12px}.phase-photos{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.phase-empty{color:var(--text-secondary);background:var(--fill);border-radius:var(--radius-cell);text-align:center;grid-column:1/-1;padding:20px 0;font-size:15px}.thumb{aspect-ratio:4/3;border-radius:var(--radius-cell);background:var(--fill);box-shadow:var(--shadow-thumb);position:relative;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%;display:block}.thumb-pending{outline:2px solid var(--accent);outline-offset:-2px}.thumb-del{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;cursor:pointer;background:#0000008c;border:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:15px;line-height:1;display:flex;position:absolute;top:5px;right:5px}.thumb-del:active{opacity:.7}.thumb-time{color:#fff;white-space:nowrap;text-overflow:ellipsis;background:linear-gradient(#0000,#0009);padding:4px 7px;font-size:11px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.phase-actions{gap:10px;margin-top:12px;display:flex}.phase-actions .btn{flex:1;font-weight:600}.phase-actions .btn:first-child{background:var(--accent);color:#fff}.phase-actions .btn:first-child:active{background:var(--accent-pressed);opacity:1}.upload-bar{padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:var(--bar-bg);-webkit-backdrop-filter:blur(20px)saturate(180%);backdrop-filter:blur(20px)saturate(180%);border-top:.5px solid var(--separator);z-index:30;position:fixed;bottom:0;left:0;right:0}.upload-bar .btn{max-width:680px;margin:0 auto;display:block}.notice{border-radius:var(--radius-cell);background:var(--fill);color:var(--text-secondary);text-align:center;margin-bottom:16px;padding:14px 16px;font-size:15px}.notice.error{background:var(--fill-danger);color:var(--danger)}.tip{color:var(--text-secondary);text-align:center;margin-top:4px;font-size:13px}@media (width<=560px){.page{padding:0 12px 48px}.topbar{padding:max(12px, env(safe-area-inset-top)) 12px 10px;margin:0 -12px 16px}.topbar h1{font-size:27px}.filter-grid{grid-template-columns:1fr}.slot-hint{display:none}}
