:root{--bg:#F5F4F1;--card:#FFFFFF;--line:#E5E2DC;--line-soft:#EFEDE8;--t1:#1F1E1C;--t2:#6B6862;--t3:#9B978F;--accent:#1F3A52;--warm:#B4452F;--ok:#2F6B4F;--warn:#9A6B1F;--warn-bg:#FAF1E1;--risk:#A32D2D;--risk-bg:#FBEAEA;--ok-bg:#EAF3EE;--idle-bg:#F1F0ED;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--t1);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif;font-size:13px;line-height:1.7;font-weight:400;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}.num,input,select,textarea,.v{font-variant-numeric:tabular-nums}.main{flex:1}.app{max-width:1240px;margin:0 auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;padding:0 calc(24px + var(--safe-right)) calc(48px + var(--safe-bottom)) calc(24px + var(--safe-left))}.topbar{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:calc(32px + var(--safe-top)) 0 18px}.brand{font-size:20px;font-weight:500;letter-spacing:.02em}.build-tag{font-size:10px;color:var(--t3);letter-spacing:.04em;margin-left:10px;white-space:nowrap}.meta{color:var(--t2);font-size:12px;text-align:right}.meta .sync{margin-left:10px}.nav{display:flex;gap:6px;margin-bottom:24px;overflow-x:auto}.nav button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:6px;padding:8px 18px;min-height:40px;cursor:pointer;font:inherit;font-size:14px;color:var(--t2);white-space:nowrap}.nav button:hover{color:var(--t1);background:#ebeae6}.nav button.is-active{background:var(--accent);color:#fff;font-weight:500}.nav button.is-active:hover{background:var(--accent);color:#fff}.view{display:none}.view.is-active{display:block}.page-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}.page-head-title{display:flex;align-items:center;gap:12px}h1{font-size:20px;font-weight:500;line-height:1.4}h2{font-size:15px;font-weight:500;line-height:1.5}h3{font-size:13px;font-weight:500;line-height:1.5}.muted{color:var(--t2);font-size:12px}.tertiary{color:var(--t3);font-size:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px}.card:hover{border-color:#cfcbc2}.card+.card{margin-top:12px}:is(.kpi-grid,.cols,.dev-grid,.field-grid,.field-grid-3,.split)>.card+.card{margin-top:0}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}.eyebrow{font-size:11px;letter-spacing:.12em;color:var(--t3);margin-bottom:8px}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:12px}.kpi-num{font-size:30px;font-weight:500;line-height:1.25;letter-spacing:-.01em}.kpi-num small{font-size:15px;color:var(--t2);font-weight:400}.kpi-note{font-size:12px;color:var(--t2);margin-top:6px}.up{color:var(--warm)}.down{color:var(--ok)}.cols{display:grid;grid-template-columns:1.25fr 1fr;gap:12px;align-items:start;margin-bottom:12px}.stack{display:flex;flex-direction:column;gap:12px}.stack>.card+.card{margin-top:0}.row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:13px 0;border-top:1px solid var(--line-soft)}.row:first-of-type{border-top:0}.row-title{font-weight:500;line-height:1.5}.row-sub{color:var(--t2);font-size:12px;margin-top:3px}.row-side{display:flex;align-items:center;gap:14px;flex-shrink:0;padding-top:2px;flex-wrap:wrap;justify-content:flex-end}.badge{display:inline-block;font-size:11px;line-height:1.5;padding:2px 9px;border-radius:6px;border:1px solid transparent;white-space:nowrap}.b-warn{color:var(--warn);background:var(--warn-bg);border-color:#ebdcbc}.b-risk{color:var(--risk);background:var(--risk-bg);border-color:#efcfcf}.b-ok{color:var(--ok);background:var(--ok-bg);border-color:#cfe2d5}.b-idle{color:var(--t2);background:var(--idle-bg);border-color:var(--line)}.b-accent{color:var(--accent);background:#edf2f6;border-color:#d2dfe9}button{font:inherit;cursor:pointer}button:disabled{color:var(--t3);cursor:not-allowed}.btn{border-radius:6px;padding:8px 16px;font-size:13px;border:1px solid var(--accent);background:var(--accent);color:#fff;min-height:44px}.btn:hover{background:#16304a}.btn:disabled{background:var(--idle-bg);border-color:var(--line);color:var(--t3)}.btn-sec{background:var(--card);color:var(--accent);border:1px solid var(--line)}.btn-sec:hover{background:#f7f9fb;border-color:#cfcbc2}.btn-sec:disabled:hover{background:var(--card);border-color:var(--line)}.btn-sm{min-height:36px;padding:5px 12px;font-size:12px}.link{background:none;border:0;color:var(--accent);font-size:12px;padding:2px 0;min-height:44px;display:inline-flex;align-items:center;text-decoration:none;border-bottom:1px solid transparent}.link:hover{border-bottom-color:var(--accent)}.link:disabled{color:var(--t3)}.link:disabled:hover{border-bottom-color:transparent}.btn-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}.seg{display:inline-flex;gap:2px;border:1px solid var(--line);border-radius:6px;padding:2px;background:var(--card)}.seg button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:4px;padding:4px 12px;min-height:34px;font:inherit;font-size:12px;color:var(--t2)}.seg button.is-active{background:#edf2f6;color:var(--accent);font-weight:500}.seg.is-disabled{opacity:.5;pointer-events:none}.split{display:grid;grid-template-columns:320px 1fr;gap:12px;align-items:start}.pane-head{padding-bottom:14px;border-bottom:1px solid var(--line-soft);margin-bottom:6px}.list-item{padding:12px 10px;border-radius:8px;cursor:pointer;border:1px solid transparent}.list-item:hover{background:#faf9f7}.list-item.is-active{background:#f3f6f8;border-color:#dce6ed}.li-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.li-name{font-weight:500}.li-sub{font-size:12px;color:var(--t2);margin-top:2px}.li-meta{font-size:11px;color:var(--t3);margin-top:3px}.pane-foot{margin-top:12px;padding-top:12px;border-top:1px solid var(--line-soft)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line-soft);border:1px solid var(--line-soft);border-radius:8px;overflow:hidden}.cal-h{background:#faf9f7;padding:8px 6px;font-size:11px;color:var(--t2);text-align:center;letter-spacing:.06em}.cell{background:var(--card);min-height:82px;padding:8px 7px}.cell.out{background:#faf9f7}.cell.is-today{background:#fbfcfd}.day{font-size:11px;color:var(--t2)}.cell.is-today .day{color:var(--accent);font-weight:500}.ev{margin-top:6px;font-size:11px;line-height:1.4;padding:4px 5px;border-radius:4px;background:#edf2f6;color:var(--accent);border:1px solid #DCE6ED;word-break:break-all;cursor:pointer}.ev.free{background:var(--idle-bg);color:var(--t2);border-color:var(--line);cursor:default}.ev.risk{background:var(--risk-bg);color:var(--risk);border-color:#efcfcf}.ev.done{background:var(--ok-bg);color:var(--ok);border-color:#cfe2d5}.field{margin-bottom:14px;min-width:0}.field:last-child{margin-bottom:0}label{display:block;font-size:12px;color:var(--t2);margin-bottom:6px}input,select,textarea{width:100%;min-width:0;font:inherit;font-size:13px;color:var(--t1);background:var(--card);border:1px solid var(--line);border-radius:6px;padding:9px 11px}input[type=date],input[type=month],input[type=time],input[type=datetime-local]{display:block;max-width:100%;min-width:0;min-inline-size:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:left}input[type=date]::-webkit-datetime-edit,input[type=date]::-webkit-date-and-time-value{min-width:0;max-width:100%;overflow:hidden;text-align:left}input[type=date]::-webkit-calendar-picker-indicator{flex:0 0 auto;max-width:20px;margin:0;padding:0}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}textarea{resize:vertical;min-height:76px;line-height:1.7}.field-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.field-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.data-line{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;border-top:1px solid var(--line-soft);gap:12px}.data-line:first-of-type{border-top:0}.data-line .k{color:var(--t2);font-size:12px}.data-line .v{font-weight:500;text-align:right}.data-line .v.strong{font-size:15px}.notice{font-size:12px;padding:10px 12px;border-radius:6px;border:1px solid var(--line);background:#faf9f7;margin-top:12px;line-height:1.7}.notice.risk{background:var(--risk-bg);border-color:#efcfcf;color:var(--risk)}.notice.ok{background:var(--ok-bg);border-color:#cfe2d5;color:var(--ok)}.notice.warn{background:var(--warn-bg);border-color:#ebdcbc;color:var(--warn)}.dev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.tagline{font-size:12px;color:var(--t2);margin-top:10px;padding-top:10px;border-top:1px solid var(--line-soft)}.empty{padding:22px 0;color:var(--t2);font-size:12px}.empty .link{margin-top:6px}.table{width:100%;border-collapse:collapse;font-size:12px}.table th{text-align:left;font-weight:400;color:var(--t3);font-size:11px;letter-spacing:.06em;padding:8px 10px;border-bottom:1px solid var(--line)}.table td{padding:11px 10px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.table th.r,.table td.r{text-align:right}.table tr:last-child td{border-bottom:0}.table .amount{font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}.table-wrap{overflow-x:auto}.bar{height:2px;background:var(--line);border-radius:2px;margin-top:8px;overflow:hidden}.bar>span{display:block;height:100%;background:var(--accent)}.bar.warm>span{background:var(--warm)}.inline{min-height:24px;padding:1px 3px;border-radius:3px;display:inline-block;min-width:40px}.inline:focus{outline:2px solid var(--accent);outline-offset:2px;background:#f7f9fb}.inline-num-box{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:6px;background:#fff;padding:2px 6px;min-height:30px;white-space:nowrap}.inline-num-field{border:0;padding:0;min-height:24px;width:76px;outline:none;background:transparent;font-size:13px;color:var(--t1)}.inline-num-field:focus{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.foot{margin-top:28px;padding-top:14px;border-top:1px solid var(--line);color:var(--t3);font-size:11px}.toast{position:fixed;right:24px;bottom:calc(24px + var(--safe-bottom));background:var(--card);border:1px solid var(--line);border-radius:8px;padding:11px 16px;font-size:12px;color:var(--t1);opacity:0;pointer-events:none;transition:opacity .18s;z-index:20}.toast.show{opacity:1}.tabbar,.hamburger,.drawer,.drawer-mask{display:none}.brand-wrap{display:flex;align-items:center}.back-link{display:none;margin-bottom:8px}button:focus-visible,[contenteditable]:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.confirm-line{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:12px}.hr{height:1px;background:var(--line-soft);margin:16px 0}.pill-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.chip{font-size:11px;color:var(--t2);border:1px solid var(--line);border-radius:6px;padding:3px 10px;background:#faf9f7}@media (hover:none){.card:hover{border-color:var(--line)}.list-item:hover{background:transparent}.list-item.is-active:hover{background:#f3f6f8}.link:hover{border-bottom-color:transparent}.btn:hover{background:var(--accent)}.btn-sec:hover{background:var(--card);border-color:var(--line)}.nav button:hover{color:var(--t2);background:none}.nav button.is-active:hover{background:var(--accent);color:#fff}}@media (pointer:coarse) and (min-width:768px){.list-item{padding:14px 12px}.cell{min-height:90px}}@media (max-width:1023px),(pointer:coarse){input,select,textarea{font-size:16px;min-height:44px}.inline-num-field{font-size:16px;min-height:44px;width:88px}.inline-num-box{min-height:44px}}@media (max-width:1199px){.split{grid-template-columns:300px 1fr}}@media (max-width:1023px){.split{grid-template-columns:260px 1fr}.kpi-grid,.dev-grid{grid-template-columns:repeat(2,1fr)}.cols{display:flex;flex-direction:column;align-items:stretch;gap:12px}.cols>.stack{display:contents}.dash-todo{order:1}.dash-week{order:2}.dash-money{order:3}}@media (min-width:768px){.page-head{display:none}}@media (max-width:767px){.split{grid-template-columns:1fr}.split>section{display:none}.split.show-detail>aside{display:none}.split.show-detail>section{display:block}.back-link{display:inline-flex}.kpi-grid{grid-template-columns:repeat(2,1fr)}.field-grid-3{grid-template-columns:minmax(0,1fr)}}@media (max-width:599px){.app{padding:0 calc(16px + var(--safe-right)) calc(8px + var(--safe-bottom)) calc(16px + var(--safe-left))}.topbar{padding-top:calc(18px + var(--safe-top));padding-bottom:14px}.brand{font-size:18px}.meta,.nav{display:none}.hamburger{display:flex;flex-direction:column;justify-content:center;gap:4px;width:40px;height:40px;margin-right:0;padding:0;flex:0 0 auto;background:var(--card);border:1px solid var(--line);border-radius:8px}.hamburger span{display:block;width:18px;height:2px;background:var(--t1);border-radius:2px;margin:0 auto}.drawer-mask{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#1f1e1c6b;z-index:30;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.drawer-mask.is-open{opacity:1;visibility:visible}.drawer{display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100%;height:100dvh;width:80%;max-width:320px;background:var(--card);border-right:1px solid var(--line);z-index:31;transform:translate(-100%);transition:transform .24s ease;padding:calc(18px + var(--safe-top)) 14px calc(18px + var(--safe-bottom));box-shadow:16px 0 40px #1f1e1c29}.drawer.is-open{transform:translate(0)}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:14px;margin-bottom:10px;border-bottom:1px solid var(--line-soft)}.drawer-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;font-size:26px;line-height:1;color:var(--t2);width:40px;height:40px}.drawer-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;text-align:left;padding:15px 12px;border-radius:8px;font:inherit;font-size:16px;color:var(--t1);min-height:52px}.drawer-item.is-active{background:var(--accent);color:#fff;font-weight:500}.card{padding:16px}.kpi-num{font-size:26px}.dev-grid,.field-grid{grid-template-columns:minmax(0,1fr)}.row{flex-direction:column;gap:8px}.row-side{width:100%;justify-content:space-between;padding-top:0}.cell{min-height:64px;padding:6px 4px}.ev{font-size:11px;line-height:1.35}.foot{display:none}.toast{left:16px;right:16px;bottom:calc(76px + var(--safe-bottom));text-align:center}.table th,.table td{padding:9px 6px}}@media (max-height:480px) and (orientation:landscape){.topbar{padding-top:calc(10px + var(--safe-top));padding-bottom:8px}.brand{font-size:16px}.tabbar button{min-height:40px}}.chip-ok{color:var(--ok);background:var(--ok-bg);border-color:#cfe2d5}.shot-phase-note{font-size:12px;color:var(--t2);margin:12px 0 4px}.shot-row{border-top:1px solid var(--line-soft);padding:14px 0}.shot-row:first-of-type{border-top:0}.shot-head{display:flex;gap:10px;align-items:flex-start}.shot-no{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:1px solid var(--line);border-radius:6px;font-size:11px;color:var(--t2);background:#faf9f7;margin-right:6px}.shot-title{flex:1;min-width:0}.shot-label{font-weight:500}.shot-hint{font-size:12px;color:var(--t2);line-height:1.6;margin-top:2px}.shot-thumbs{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 8px}.shot-thumb{position:relative;width:88px;height:88px;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#faf9f7}.shot-thumb-open{width:100%;height:100%;border:0;background:none;padding:0;min-height:0;display:flex;align-items:center;justify-content:center}.shot-thumb-open img,.shot-thumb-open video{width:100%;height:100%;object-fit:cover;display:block}.shot-thumb-missing{font-size:11px;color:var(--risk);text-align:center;line-height:1.4;padding:4px}.shot-thumb-kind{position:absolute;left:0;bottom:0;background:#1f1e1cb8;color:#fff;font-size:10px;padding:1px 6px;border-radius:0 4px 0 0;pointer-events:none}.shot-thumb-del{position:absolute;right:2px;top:2px;width:22px;height:22px;min-height:0;padding:0;border:0;border-radius:4px;background:#1f1e1cb8;color:#fff;font-size:15px;line-height:1}.shot-thumb-save{position:absolute;right:2px;bottom:2px;height:18px;min-height:0;padding:0 6px;border:0;border-radius:4px;background:#1677c0e6;color:#fff;font-size:10px;line-height:18px;cursor:pointer}.shot-thumb-save:active{background:#1677c0}.shot-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.shot-capture{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;white-space:nowrap}.shot-capture.is-busy{opacity:.6;pointer-events:none}.shot-compare{margin-top:10px}.shot-compare-head,.shot-compare-row{display:grid;grid-template-columns:150px minmax(0,1fr) minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid var(--line-soft)}.shot-compare-head{border-top:0;color:var(--t2);font-size:11px;letter-spacing:.06em;padding-bottom:6px}.shot-compare-label{font-size:12px;font-weight:500;line-height:1.5}.shot-compare-label .muted{font-weight:400}.shot-compare-cell{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start;min-width:0}.shot-compare-cell .shot-thumb{width:72px;height:72px}.shot-compare-cell:before{display:none}.shot-none{font-size:11px;color:var(--t3);border:1px dashed var(--line);border-radius:6px;padding:6px 10px}.media-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#1f1e1c9e;display:flex;align-items:center;justify-content:center;padding:calc(16px + var(--safe-top)) 16px calc(16px + var(--safe-bottom))}.media-modal-inner{background:var(--card);border-radius:12px;padding:16px;width:min(720px,100%);max-height:88dvh;overflow:auto}.media-modal-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px}.media-modal-file{display:block;max-width:100%;max-height:66dvh;object-fit:contain;background:#faf9f7;border:1px solid var(--line);border-radius:6px;margin:0 auto}a.btn{display:inline-flex;align-items:center;text-decoration:none}.evidence-extra summary{cursor:pointer;color:var(--accent);font-size:12px;padding:4px 0;min-height:36px}.evidence-extra-body{margin-top:10px}.shot-points-head{font-size:12px;color:var(--t2);margin-bottom:8px}.shot-point-item{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid var(--line-soft);font-size:12px}@media (max-width:599px){.shot-thumb{width:76px;height:76px}.shot-compare-cell .shot-thumb{width:64px;height:64px}.shot-compare-head{display:none}.shot-compare-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.shot-compare-label{grid-column:1/-1}.shot-compare-cell:before{display:block;width:100%;font-size:11px;color:var(--t2)}.shot-compare-row .shot-compare-cell:nth-child(2):before{content:"租出前"}.shot-compare-row .shot-compare-cell:nth-child(3):before{content:"寄回后"}.shot-capture{min-height:44px;padding:6px 12px}.media-modal-inner{padding:12px}}
