:root { --navy:#132238; --navy-soft:#223653; --blue:#2f6bff; --blue-dark:#2255d8; --sky:#eaf1ff; --canvas:#f4f7fb; --white:#fff; --ink:#17243a; --muted:#68758a; --line:#dbe3ef; --success:#087a63; --error:#bd3e4d; --shadow:0 14px 42px rgba(27,52,91,.09); }
* { box-sizing:border-box; }
html { background:var(--canvas); }
body { margin:0; background:radial-gradient(circle at 8% 2%,rgba(47,107,255,.08),transparent 26rem),var(--canvas); color:var(--ink); font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif; -webkit-font-smoothing:antialiased; }
button,input { font:inherit; }
button,label { -webkit-tap-highlight-color:transparent; }
.page-shell { width:min(100%,720px); margin:0 auto; padding:18px 18px calc(30px + env(safe-area-inset-bottom)); }
.masthead { position:relative; overflow:hidden; padding:18px 20px 0; border-radius:24px; background:var(--navy); color:var(--white); box-shadow:var(--shadow); }
.masthead::after { content:""; position:absolute; width:160px; height:160px; right:-58px; top:30px; border-radius:50%; border:30px solid rgba(99,145,255,.12); box-shadow:0 0 0 1px rgba(255,255,255,.12); }
.masthead-top { position:relative; z-index:1; display:flex; align-items:center; gap:10px; }
.brand-mark { display:grid; grid-template-columns:repeat(3,4px); gap:3px; align-items:end; height:16px; }
.brand-mark i { display:block; width:4px; border-radius:3px; background:#79a0ff; }
.brand-mark i:nth-child(1) { height:8px; }
.brand-mark i:nth-child(2) { height:16px; }
.brand-mark i:nth-child(3) { height:11px; }
.eyebrow { margin:0; color:#cedbff; font-size:12px; font-weight:700; letter-spacing:.08em; }
.public-badge { margin-left:auto; padding:5px 9px; border:1px solid rgba(255,255,255,.22); border-radius:999px; color:#dbe5ff; font-size:11px; }
.masthead-copy { position:relative; z-index:1; padding:27px 0 25px; }
.step-label,.section-index { margin:0 0 6px; color:var(--blue); font-size:10px; font-weight:800; letter-spacing:.16em; }
.masthead .step-label { color:#79a0ff; }
h1 { margin:0; font-size:clamp(30px,8vw,42px); line-height:1.15; letter-spacing:-.055em; }
.intro { max-width:420px; margin:10px 0 0; color:#c7d2e5; font-size:13px; line-height:1.65; }
.contact-strip { position:relative; z-index:1; display:grid; grid-template-columns:repeat(5,1fr); gap:8px; height:15px; margin:0 -4px; }
.contact-strip span { border-radius:3px 3px 0 0; background:rgba(255,255,255,.13); }
.contact-strip span:nth-child(2),.contact-strip span:nth-child(4) { background:rgba(99,145,255,.32); }
form { margin-top:14px; }
.entry-panel,.photo-card { border:1px solid var(--line); background:rgba(255,255,255,.94); box-shadow:0 8px 26px rgba(27,52,91,.05); }
.entry-panel { padding:20px; border-radius:20px; }
.panel-heading,.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:14px; }
.panel-heading>p { margin:0 0 2px; color:var(--muted); font-size:12px; }
h2 { margin:0; font-size:21px; line-height:1.25; letter-spacing:-.04em; }
.field-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:18px; }
.field-grid label { min-width:0; }
.field-label { display:block; margin:0 0 7px; color:#44526a; font-size:12px; font-weight:700; }
.text-input { width:100%; min-height:48px; border:1px solid var(--line); border-radius:12px; padding:0 13px; outline:none; background:#f9fbfe; color:var(--ink); font-size:15px; font-weight:650; transition:border-color .18s,box-shadow .18s,background .18s; }
.text-input:focus { border-color:var(--blue); background:var(--white); box-shadow:0 0 0 4px rgba(47,107,255,.12); }
.category-section { margin-top:28px; }
.section-heading { margin:0 2px 13px; }
.summary { margin:0 0 2px; padding:6px 10px; border-radius:999px; background:var(--sky); color:var(--blue-dark); font-size:11px; font-weight:800; white-space:nowrap; }
.categories { display:grid; gap:12px; }
.photo-card { padding:16px; border-radius:18px; transition:border-color .2s,transform .2s,box-shadow .2s; }
.photo-card.has-photo { border-color:#9db7ff; box-shadow:0 10px 28px rgba(47,107,255,.1); }
.card-heading { display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
h3 { margin:0; font-size:16px; letter-spacing:-.02em; }
.photo-count { color:var(--muted); font-size:11px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.has-photo .photo-count { color:var(--success); font-weight:800; }
.photo-slot { margin-top:12px; }
.upload-picker,.preview { position:relative; width:100%; min-height:104px; overflow:hidden; border-radius:14px; display:flex; align-items:center; justify-content:center; }
.upload-picker { flex-direction:column; gap:3px; border:1px dashed #aebbd0; background:linear-gradient(90deg,transparent 49%,rgba(47,107,255,.05) 50%,transparent 51%),linear-gradient(transparent 49%,rgba(47,107,255,.05) 50%,transparent 51%),#f7faff; background-size:28px 28px; color:#4f5f78; cursor:pointer; font-size:13px; font-weight:800; }
.upload-picker::after { content:"JPG · PNG · WEBP"; margin-top:2px; color:#8a98ac; font-size:9px; font-weight:700; letter-spacing:.08em; }
.upload-picker b { display:grid; place-items:center; width:32px; height:32px; border-radius:10px; background:var(--blue); color:#fff; font-size:23px; font-weight:400; line-height:1; box-shadow:0 6px 15px rgba(47,107,255,.24); }
.upload-picker input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.preview { border:1px solid #cdd9ea; background:#e6edf7; }
.preview img { display:block; width:100%; height:170px; object-fit:cover; }
.remove-photo { position:absolute; top:9px; right:9px; width:34px; height:34px; border:1px solid rgba(255,255,255,.35); border-radius:50%; background:rgba(19,34,56,.82); color:#fff; cursor:pointer; font-size:20px; line-height:1; backdrop-filter:blur(8px); }
.retention-note { display:flex; align-items:flex-start; gap:9px; margin:17px 2px 10px; color:var(--muted); }
.retention-note span { flex:0 0 auto; display:grid; place-items:center; width:18px; height:18px; border-radius:50%; background:#dde7f8; color:#4b6388; font:800 11px Georgia,serif; }
.retention-note p { margin:0; font-size:11px; line-height:1.55; }
.submit-dock { position:sticky; z-index:5; bottom:0; padding:8px 0 max(8px,env(safe-area-inset-bottom)); background:linear-gradient(transparent,var(--canvas) 22%); }
.submit-button { width:100%; min-height:54px; display:flex; align-items:center; justify-content:space-between; border:0; border-radius:15px; padding:0 18px; background:var(--blue); color:#fff; cursor:pointer; font-size:15px; font-weight:800; box-shadow:0 12px 26px rgba(47,107,255,.25); transition:transform .18s,background .18s,box-shadow .18s; }
.submit-button b { font-size:23px; line-height:1; }
.submit-button:hover { background:var(--blue-dark); }
.submit-button:active { transform:translateY(1px); box-shadow:0 7px 18px rgba(47,107,255,.2); }
.submit-button:disabled { background:#8f9cb0; box-shadow:none; cursor:not-allowed; }
.status { min-height:18px; margin:7px 2px 0; color:var(--success); font-size:12px; line-height:1.45; }
.status.error { color:var(--error); }
button:focus-visible,.upload-picker:focus-within { outline:3px solid rgba(47,107,255,.28); outline-offset:2px; }
@media (min-width:620px) { .categories { grid-template-columns:1fr 1fr; } .photo-card { min-width:0; } }
@media (max-width:520px) { .page-shell { padding:10px 10px calc(20px + env(safe-area-inset-bottom)); } .masthead { padding:15px 16px 0; border-radius:19px; } .masthead-copy { padding:22px 0 21px; } .entry-panel { padding:17px; border-radius:17px; } .field-grid { grid-template-columns:1fr; gap:14px; } .category-section { margin-top:24px; } .photo-card { border-radius:16px; } .preview img { height:150px; } }
@media (prefers-reduced-motion:no-preference) { .masthead { animation:reveal .34s both; } .photo-card { animation:reveal .32s both; } .photo-card:nth-child(2) { animation-delay:.035s; } .photo-card:nth-child(3) { animation-delay:.07s; } .photo-card:nth-child(4) { animation-delay:.105s; } @keyframes reveal { from { opacity:0; transform:translateY(7px); } to { opacity:1; transform:none; } } }
