:root{--bg: #faf7f4;--card: #ffffff;--ink: #2c2620;--ink-soft: #7a6f63;--line: #ece4da;--accent: #b28a5a;--accent-deep: #96703f;--danger: #c0392b;--ok: #3d8a5a;--warn: #c47f17;--radius: 14px;font-size:16px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--ink);font-family:-apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.page{max-width:560px;margin:0 auto;padding:20px 16px 64px;display:flex;flex-direction:column;gap:16px}.page-loading{min-height:60vh;display:grid;place-items:center;color:var(--ink-soft)}.page-header h1{font-size:1.4rem}.page-header .form-hint{margin-top:4px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.card h2{font-size:1.05rem;margin-bottom:10px}.empty-card{text-align:center;display:grid;gap:10px;justify-items:center}.form-stack{display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:6px;flex:1}.field>span{font-size:.85rem;color:var(--ink-soft)}.field-row{display:flex;gap:10px}.field-row .field{min-width:0}.form-hint{font-size:.82rem;color:var(--ink-soft)}.form-hint.debug{color:var(--warn)}.form-error{font-size:.88rem;color:var(--danger)}.form-notice{font-size:.88rem;color:var(--ok);word-break:break-all}.check-line{display:flex;gap:10px;align-items:flex-start;font-size:.9rem}.check-line input{width:auto;margin-top:4px}.check-line small{display:block;color:var(--ink-soft)}.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:12px;padding:13px;font-size:1rem;text-align:center;text-decoration:none;display:block;width:100%}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:#fff;color:var(--accent-deep);border:1px solid var(--accent);border-radius:12px;padding:11px;display:block;width:100%}.btn-danger{background:#fff;color:var(--danger);border:1px solid var(--danger);border-radius:12px;padding:11px;display:block;width:100%;margin-top:10px}.btn-link{background:none;border:none;color:var(--accent-deep);padding:10px;text-align:center;display:block;width:100%;text-decoration:none}.btn-link:disabled{color:var(--ink-soft)}.text-link{color:var(--accent-deep);text-decoration:none}.auth-page{min-height:100vh;display:grid;place-items:center;padding:20px}.auth-card{width:100%;max-width:420px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:28px 22px}.brand-title{font-size:1.6rem;letter-spacing:2px}.brand-subtitle{color:var(--ink-soft);font-size:.85rem;margin-top:4px}.access-notice{margin:16px 0;padding:10px 12px;background:#f6efe6;border-radius:10px;font-size:.88rem;color:var(--accent-deep)}.privacy-hint{font-size:.78rem;color:var(--ink-soft)}.consent-scroll{height:55vh;overflow-y:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.consent-section{margin-bottom:18px}.consent-section h2{font-size:.98rem;margin-bottom:8px}.consent-section p{font-size:.88rem;margin-bottom:8px;color:#4a4239}.project-card{display:grid;gap:10px}.project-card-top{display:flex;justify-content:space-between;align-items:center}.striae-tag{color:var(--accent-deep);font-size:.9rem}.cycle-progress{font-size:1.05rem}.progress-track{height:8px;background:var(--line);border-radius:99px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:99px}.status-badge{font-size:.78rem;padding:3px 10px;border-radius:99px;background:var(--line);color:var(--ink-soft)}.status-in_progress{background:#e7f0e9;color:var(--ok)}.status-not_started{background:var(--line)}.status-report_pending{background:#fbf1dd;color:var(--warn)}.status-completed{background:#e8eef7;color:#3a6ea5}.action-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.action-tile{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;text-decoration:none;color:var(--ink);display:grid;gap:2px}.action-tile.primary{border-color:var(--accent);background:#fbf6ee}.action-tile .tile-icon{font-size:1.4rem}.action-tile span:nth-child(2){font-weight:600}.action-tile small{color:var(--ink-soft)}.capture-page{min-height:100vh;display:flex;flex-direction:column;background:#111}.camera-viewport{position:relative;flex:1;overflow:hidden}.camera-video{width:100%;height:100%;object-fit:cover}.frame-overlay{position:absolute;inset:0;pointer-events:none;display:grid;place-items:center}.abdomen-frame{width:72%;aspect-ratio:4 / 5;border:2px dashed rgba(255,255,255,.85);border-radius:46%/40%;box-shadow:0 0 0 9999px #00000040}.refcard-zone{position:absolute;left:4%;bottom:4%;width:22%;aspect-ratio:3 / 4;border:2px solid rgba(255,220,130,.9);border-radius:8px;color:#ffdc82f2;font-size:.75rem;display:grid;place-items:center}.capture-controls{background:#1b1712;color:#f5efe6;padding:16px;display:grid;gap:8px;text-align:center}.capture-controls .form-hint{color:#b9ac9c}.shot-tip{font-weight:600}.qc-failures{background:#c0392b26;border-radius:10px;padding:8px}.shutter-btn{justify-self:center;width:72px;height:72px;border-radius:50%;border:4px solid #fff;background:var(--accent);color:#fff;font-size:.9rem}.preview-image{border-radius:var(--radius);border:1px solid var(--line)}.timeline{display:grid;gap:12px}.timeline-head{display:flex;gap:10px;align-items:baseline;margin-bottom:10px}.timeline-head time{margin-left:auto;color:var(--ink-soft);font-size:.8rem}.kind-tag{font-size:.75rem;padding:2px 8px;border-radius:99px;background:var(--line);color:var(--ink-soft)}.kind-attack_pre{background:#f6efe6;color:var(--accent-deep)}.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.photo-cell img{width:100%;aspect-ratio:3 / 4;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#f4efe9}.photo-cell figcaption{font-size:.78rem;color:var(--ink-soft);text-align:center;margin-top:4px}.photo-placeholder{aspect-ratio:3 / 4;display:grid;place-items:center;background:#f4efe9;border-radius:10px;color:var(--ink-soft);font-size:.85rem}.compare-controls{display:grid;gap:12px}.compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.compare-cell img{width:100%;aspect-ratio:3 / 4;object-fit:cover;border-radius:10px;border:1px solid var(--line)}.compare-cell figcaption{font-size:.78rem;color:var(--ink-soft);text-align:center;margin-top:4px}.report-card .report-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.report-content{margin:12px 0;display:grid;gap:8px}.outcome-badge{font-size:.78rem;padding:3px 10px;border-radius:99px;background:var(--line)}.outcome-met{background:#e7f0e9;color:var(--ok)}.outcome-not_met_refund{background:#fbe7e4;color:var(--danger)}.outcome-extended{background:#fbf1dd;color:var(--warn)}.feedback-history{display:grid;gap:12px}.hq-response{margin-top:10px;background:#f6f9f6;border-left:3px solid var(--ok);border-radius:8px;padding:10px 12px;font-size:.9rem}.fb-submitted{background:#fbf1dd;color:var(--warn)}.fb-processing{background:#e8eef7;color:#3a6ea5}.fb-resolved{background:#e7f0e9;color:var(--ok)}.info-list{display:grid;gap:8px}.info-list div{display:flex;gap:12px;font-size:.92rem}.info-list dt{color:var(--ink-soft);min-width:96px}.danger-zone{border-color:#efd9d5}.delete-confirm{margin-top:12px;display:grid;gap:8px}.done-page{justify-content:center;min-height:80vh}.done-card{text-align:center;display:grid;gap:12px;justify-items:center}.done-icon{width:56px;height:56px;border-radius:50%;background:#e7f0e9;color:var(--ok);font-size:1.6rem;display:grid;place-items:center}.admin-page{min-height:100vh;background:#f5f3f0}.admin-header{background:var(--card);border-bottom:1px solid var(--line);padding:14px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px}.admin-header h1{font-size:1.15rem}.admin-header-right{display:flex;align-items:center;gap:12px}.admin-header-right .btn-link{width:auto;padding:6px 10px}.admin-tabs{display:flex;gap:4px;padding:10px 24px 0;flex-wrap:wrap}.tab{background:none;border:none;padding:9px 16px;border-radius:10px 10px 0 0;color:var(--ink-soft)}.tab.active{background:var(--card);color:var(--ink);font-weight:600}.admin-main{margin:0 24px 48px;background:var(--card);border:1px solid var(--line);border-radius:0 var(--radius) var(--radius) var(--radius);padding:20px}.toolbar{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}.toolbar input,.toolbar select{width:auto;min-width:160px}.toolbar .btn-secondary,.toolbar .btn-primary{width:auto;padding:9px 18px}.data-table{width:100%;border-collapse:collapse;font-size:.88rem}.data-table th,.data-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}.data-table th{color:var(--ink-soft);font-weight:500;font-size:.8rem}.desc-cell{max-width:320px;white-space:pre-wrap;word-break:break-word}.overdue-days{color:var(--danger);font-weight:600}.btn-col{display:grid;gap:4px}.btn-col .btn-link{width:auto;padding:4px 8px;text-align:left}.admin-create-form{margin-bottom:18px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;background:none;border:none;padding:20px 0;margin:0 24px 48px}.detail-wide{grid-column:1 / -1}.admin-records{display:grid;gap:14px}.admin-record{border-top:1px solid var(--line);padding-top:12px}.admin-record .photo-cell img{max-height:320px}@media(max-width:720px){.detail-grid{grid-template-columns:1fr}.admin-main,.detail-grid{margin:0 8px 32px}.admin-tabs{padding:10px 8px 0}.data-table{font-size:.8rem}}
