:root{--teal:#087f78;--teal-2:#18a89c;--ink:#172726;--muted:#71807e;--line:#dce7e5;--soft:#f1f8f6;--orange:#d97528;--danger:#c74b4b;--shadow:0 18px 50px rgba(0,55,51,.14);font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;color:var(--ink);background:#eaf5f2}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit}.signup-body{min-height:100vh;background:radial-gradient(circle at 50% 0,#cae9e2 0,transparent 38%),#edf7f4}.signup-shell{width:min(100%,720px);margin:0 auto;padding-bottom:36px}.hero{height:265px;background:#0a6f68;position:relative;overflow:hidden}.hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;display:block}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,52,44,.08),rgba(0,57,49,.28));pointer-events:none}.hero-copy{position:absolute;inset:49px 24px auto;z-index:1;text-align:center;color:#fff;text-shadow:0 2px 10px rgba(0,45,39,.38)}.hero-copy span{display:inline-block;border:1px solid rgba(255,255,255,.72);border-radius:999px;padding:5px 18px;font-size:14px;letter-spacing:2px}.hero-copy h1{font-family:KaiTi,"STKaiti",serif;margin:14px 0 4px;font-size:36px;letter-spacing:3px}.hero-copy p{margin:0;font-size:14px;letter-spacing:6px}.form-card{margin:-46px 18px 0;position:relative;background:rgba(255,255,255,.98);border:1px solid rgba(255,255,255,.75);border-radius:18px;box-shadow:var(--shadow);padding:28px 30px 24px}.form-title{display:flex;justify-content:center;align-items:center;gap:12px;color:var(--teal);padding-bottom:20px;border-bottom:1px solid var(--line)}.form-title h2{font-size:22px;margin:0;text-align:center;white-space:nowrap;line-height:1.3}.leaf{font-size:28px;transform:rotate(-25deg)}.leaf.mirror{transform:scaleX(-1) rotate(-25deg)}.closed-banner{margin:20px 0 4px;padding:14px 16px;border-radius:10px;background:#fff3e8;color:#97521e;display:flex;gap:8px;flex-wrap:wrap}
.status-gate{margin:18px 0 8px;padding:16px;border:1px solid #d7e7e3;border-radius:12px;background:linear-gradient(180deg,#f7fcfb,#eef7f5)}
.status-gate-head{margin-bottom:12px}.status-gate-head strong{display:block;font-size:15px;color:#1d4f4b}.status-gate-head small{display:block;margin-top:4px;color:var(--muted);font-size:12px}
.status-gate-row{display:flex;gap:10px}.status-gate-row input{flex:1;min-width:0;border:1px solid #cfdcda;border-radius:8px;background:#fff;padding:11px 13px;outline:0}.status-gate-row input:focus{border-color:var(--teal-2);box-shadow:0 0 0 3px rgba(24,168,156,.12)}
.status-check-btn{min-height:44px;padding:0 18px;flex:0 0 auto;box-shadow:none}
.status-panel{margin-top:12px;padding:13px 14px;border-radius:10px}.status-panel strong{display:block;font-size:14px;margin-bottom:6px}.status-panel p{margin:0;font-size:13px;line-height:1.7}
.status-panel.tone-wait{background:#fff7e8;color:#8a641f}.status-panel.tone-bad{background:#fdeeee;color:#a13b3b}.status-panel.tone-ok{background:#e8f6f1;color:#246e54}.status-panel.tone-done{background:#e8f1f8;color:#355f86}.status-panel.tone-miss{background:#f3f5f5;color:#5d6a68}
.upload-panel{margin:8px 0 20px;padding:16px;border:1px solid #d7e7e3;border-radius:12px;background:#fff}
.upload-head{margin-bottom:14px}.upload-head strong{display:block;font-size:15px;color:#1d4f4b}.upload-head small{display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.6}
.upload-drop{display:grid;place-items:center;gap:6px;min-height:120px;border:1.5px dashed #9fc3be;border-radius:12px;background:#f4fbf9;padding:18px;cursor:pointer;text-align:center}.upload-drop input{display:none}.upload-drop-title{color:var(--teal);font-weight:700;font-size:15px}.upload-drop-hint{color:var(--muted);font-size:12px}
.upload-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px;margin:14px 0}
.preview-item{position:relative;border-radius:10px;overflow:hidden;background:#eef4f3;aspect-ratio:1}.preview-item img,.preview-fallback{width:100%;height:100%;object-fit:cover;display:block}.preview-fallback{display:grid;place-items:center;color:#5f7f7a;font-size:12px;font-weight:700;background:#e2efec}.preview-item span{position:absolute;left:6px;bottom:6px;background:rgba(0,0,0,.55);color:#fff;border-radius:999px;padding:2px 7px;font-size:10px}.preview-item button{position:absolute;right:4px;top:4px;width:22px;height:22px;border:0;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-size:14px;line-height:1}
.upload-error{color:var(--danger);font-size:13px;margin:0 0 12px}.upload-panel .submit-button{margin-top:4px}.form-row{border:0;border-bottom:1px dashed #dfe9e7;margin:0;padding:21px 0;display:grid;grid-template-columns:190px 1fr;gap:18px;min-width:0}.form-row legend{display:contents}.label-copy{display:flex;flex-direction:column;padding-left:38px;position:relative;min-height:28px}.label-copy strong{font-size:15px;line-height:1.45}.label-copy em{font-style:normal;font-size:12px;color:var(--orange);margin-left:5px;font-weight:500}.label-copy small{color:var(--muted);font-size:11px;margin-top:4px}.number{position:absolute;width:24px;height:24px;border-radius:50%;background:var(--teal);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:700;margin-top:0}.control{min-width:0}.control input[type=text],.control input[type=tel],.control textarea{width:100%;border:1px solid #cfdcda;border-radius:8px;background:#fff;padding:11px 13px;outline:0;transition:.2s}.control input:focus,.control textarea:focus{border-color:var(--teal-2);box-shadow:0 0 0 3px rgba(24,168,156,.12)}.control textarea{resize:vertical;min-height:112px}.field-hint{display:block;color:var(--muted);font-size:11px;margin:6px 2px 0}.field-error{display:block;color:var(--danger);font-size:12px;margin:6px 2px 0}.option-grid{display:grid;gap:12px 20px}.option-grid.three{grid-template-columns:repeat(3,1fr)}.option-grid.two{grid-template-columns:repeat(2,1fr)}.option-grid.topics{grid-template-columns:1fr}.option-grid.inline{display:flex;gap:35px;align-items:center}.choice{display:flex;align-items:flex-start;gap:7px;font-size:13px;line-height:1.5;cursor:pointer}.choice input{appearance:none;width:18px;height:18px;border:1.5px solid #aebdbb;background:#fff;margin:1px 0 0;flex:0 0 auto;display:grid;place-items:center}.choice input[type=radio]{border-radius:50%}.choice input:checked{border-color:var(--teal);background:var(--teal)}.choice input[type=radio]:checked:after{content:"";width:6px;height:6px;background:#fff;border-radius:50%}.choice input[type=checkbox]{border-radius:4px}.choice input[type=checkbox]:checked:after,.consent input:checked:after{content:"✓";color:#fff;font-size:13px;line-height:1}.warning-note{display:inline-block;margin-top:12px;padding:7px 10px;border-radius:6px;background:#fff0de;color:var(--orange);font-size:11px}.textarea-wrap{position:relative}.char-count{position:absolute;right:12px;bottom:10px;font-size:11px;color:#879391}.char-count b{font-weight:400}.rules{padding:23px 0 8px}.consent{display:flex;gap:11px;font-size:12px;line-height:1.9;cursor:pointer}.consent input{appearance:none;width:20px;height:20px;border:1.5px solid #abbab8;border-radius:4px;flex:0 0 auto;margin-top:2px;display:grid;place-items:center}.consent input:checked{background:var(--teal);border-color:var(--teal)}.rules details{margin:10px 31px;color:#3e6763;font-size:12px}.rules summary{cursor:pointer;color:var(--teal)}.rules details p{line-height:1.8}.consent-tip{font-size:12px;color:var(--muted);margin:12px 0 0 31px}.submit-area{text-align:center;margin-top:18px}.submit-button,.button{border:0;border-radius:9px;background:linear-gradient(110deg,#07877e,#20afa2);color:#fff;min-height:52px;padding:0 26px;font-weight:700;box-shadow:0 8px 22px rgba(7,135,126,.22);transition:.2s}.submit-button{width:100%;font-size:18px;position:relative;overflow:hidden}.submit-button:hover,.button:hover{transform:translateY(-1px);filter:saturate(1.05)}.submit-button:disabled,.button:disabled{opacity:.55;cursor:not-allowed;transform:none}.submit-button i{position:absolute;inset:0;transform:translateX(-110%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent)}.submit-button.loading i{animation:shine 1.1s infinite}.submit-area p{font-size:12px;color:#45817b;letter-spacing:1px;margin:18px 0 0}.modal[hidden]{display:none}.modal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px}.modal-backdrop{position:absolute;inset:0;background:rgba(4,28,26,.54);backdrop-filter:blur(3px)}.modal-card{position:relative;width:min(100%,390px);background:#fff;border-radius:17px;padding:30px 28px 24px;text-align:center;box-shadow:0 25px 70px rgba(0,0,0,.25);animation:pop .25s ease}.modal-close{position:absolute;right:14px;top:10px;background:none;border:0;color:#82908e;font-size:28px}.success-icon{width:70px;height:70px;margin:0 auto 14px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#0a9288,#48c7bb);color:#fff;font-size:40px;box-shadow:0 10px 25px rgba(10,146,136,.25)}.modal-card h2{font-size:24px;margin:0 0 10px}.modal-card>p{font-size:14px;line-height:1.7;color:#566461}.deadline{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;margin:16px 0;color:#344845}.deadline strong{color:var(--teal)}.modal-card .modal-note{font-size:13px}.button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.button.full{width:100%}.button.secondary{color:var(--teal);background:#e5f5f2;box-shadow:none}.alert{border-radius:9px;padding:12px 15px;margin:18px 0;font-size:14px}.alert p{margin:4px 0}.alert.error{background:#fff0f0;color:#a83d3d}.installer-body{background:#eaf4f2;min-height:100vh;padding:40px 18px}.installer-shell{width:min(100%,900px);margin:auto}.installer-brand{text-align:center;margin-bottom:26px}.installer-brand .eyebrow{font-size:12px;letter-spacing:4px;color:var(--teal)}.installer-brand h1{font-size:34px;margin:9px 0}.installer-brand p{color:var(--muted)}.installer-card{background:#fff;border-radius:18px;padding:30px 34px;box-shadow:var(--shadow)}.step-heading{display:flex;align-items:center;gap:13px;margin:8px 0 15px}.step-heading>span{font-size:12px;font-weight:700;color:#fff;background:var(--teal);border-radius:50%;width:32px;height:32px;display:grid;place-items:center}.step-heading h2{margin:0;font-size:19px}.step-heading p{margin:3px 0 0;color:var(--muted);font-size:12px}.requirements{display:grid;grid-template-columns:1fr 1fr;gap:8px 22px;background:var(--soft);border-radius:10px;padding:14px 16px;margin-bottom:28px}.requirements div{display:flex;justify-content:space-between;font-size:13px}.requirements strong.ok{color:var(--teal)}.requirements strong.bad{color:var(--danger)}.install-form>label,.install-form .grid>label{display:grid;gap:7px;font-size:13px;font-weight:600;margin-bottom:16px}.install-form input{border:1px solid #ccd9d7;border-radius:8px;padding:11px 12px;outline:0}.install-form input:focus{border-color:var(--teal)}.grid{display:grid;gap:0 18px}.grid.two{grid-template-columns:1fr 1fr}.install-form .step-heading{margin-top:26px}.install-success{text-align:center;padding:25px 0}.install-success>span{width:72px;height:72px;border-radius:50%;margin:auto;display:grid;place-items:center;background:#daf3ee;color:var(--teal);font-size:38px}.install-success h2{font-size:28px;margin:16px 0 8px}.install-success p{color:var(--muted)}.install-actions{display:flex;justify-content:center;gap:12px}@keyframes shine{to{transform:translateX(110%)}}@keyframes pop{from{opacity:0;transform:scale(.94) translateY(8px)}}
@media(max-width:650px){.signup-shell{padding-bottom:18px}.hero{height:220px}.hero-copy{inset:36px 15px auto}.hero-copy span{font-size:12px}.hero-copy h1{font-size:30px}.form-card{margin:-35px 10px 0;padding:22px 14px 20px;border-radius:16px}.form-title{gap:6px}.form-title .leaf{font-size:18px;flex:0 0 auto}.form-title h2{font-size:clamp(13px,3.7vw,18px);white-space:nowrap}.form-row{grid-template-columns:1fr;gap:11px;padding:18px 0}.number{margin-top:0}.option-grid.three,.option-grid.two{grid-template-columns:1fr}.option-grid.inline{gap:28px}.label-copy{padding-left:34px}.requirements,.grid.two{grid-template-columns:1fr}.installer-body{padding:22px 12px}.installer-card{padding:22px 18px}.installer-brand h1{font-size:28px}}
.form-row{position:relative}.choice input[type=checkbox]:checked:after,.consent input:checked:after{content:"\2713"}
