@import url('/fonts/fonts.css');
:root{color-scheme:light;--primary:#000000;--paper:#fff;--surface:#fff;--ink:var(--primary);--line:var(--primary);--divider:#ddd;--muted:#666;--deep-red:var(--primary);--link:#333;--success:#008000;--warning:#ffa500;--error:#ff0000;--sunken:#f0f0f0;--headline:'Archivo Black','PingFang SC','Microsoft YaHei',sans-serif;--body:'Work Sans','PingFang SC','Microsoft YaHei',sans-serif;--mono:'Space Mono','PingFang SC','Microsoft YaHei',monospace}
*,*::before,*::after{box-sizing:border-box;border-radius:0!important;box-shadow:none!important;text-shadow:none!important}
html{scroll-padding-top:calc(var(--header-height,0px) + 24px)}body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.6 var(--body);min-width:0}h1,h2,h3,h4,p{margin:0}h1,h2,h3{font-family:var(--headline);font-weight:900;overflow-wrap:anywhere}h1{font-size:64px;line-height:1}h2{font-size:48px;line-height:1.05}h3{font-size:32px;line-height:1.1}h4{font:600 22px/1.2 var(--body)}small,.small{font-size:14px;line-height:1.5}a{color:var(--link);text-underline-offset:4px}a:hover{text-decoration-thickness:3px}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}[hidden]{display:none!important}
button,a.secondary-button,.primary-action,.download,.export-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;max-width:100%;--button-x:24px;--button-y:10px;padding:var(--button-y) var(--button-x);border:3px solid var(--primary);background:var(--primary);color:#fff;font:600 14px/1.3 var(--body);letter-spacing:2px;text-transform:uppercase;text-decoration:none;white-space:nowrap;cursor:pointer}
button:hover,a.secondary-button:hover,.primary-action:hover,.download:hover,.export-link:hover{background:#fff;color:var(--primary);text-decoration:none}button:active,a.secondary-button:active,.primary-action:active,.download:active{background:var(--primary);color:#fff;border-width:5px;padding:calc(var(--button-y) - 2px) calc(var(--button-x) - 2px)}
.secondary-button,a.secondary-button,.quiet{background:#fff;color:var(--primary)}.secondary-button:hover,.quiet:hover{background:var(--primary);color:#fff}.ghost{border:0;background:transparent;color:var(--primary);text-decoration:underline;letter-spacing:0;padding:10px 0}.ghost:hover{color:var(--link);background:transparent}.danger{background:var(--error);color:#fff;border-color:var(--primary)}.danger:hover{background:var(--primary);color:var(--error)}
button:disabled,input:disabled,select:disabled,textarea:disabled{opacity:1;cursor:not-allowed;color:#777;border-color:#ccc;background:#f5f5f5}button:disabled:hover{color:#777;background:#f5f5f5}
label{display:block;font:900 14px/1.5 var(--headline);letter-spacing:1px;text-transform:uppercase}label>input,label>select,label>textarea{margin-top:4px}input,select,textarea{display:block;width:100%;min-width:0;min-height:52px;padding:10px 12px;border:3px solid var(--primary);background:var(--sunken);color:var(--primary);font:400 16px/1.5 var(--mono)}input:hover,select:hover,textarea:hover{background-color:#e8e8e8}input:focus,select:focus,textarea:focus{border-width:5px;padding:8px 10px;outline:none}input::placeholder,textarea::placeholder{color:#666;opacity:1}textarea{min-height:120px;resize:vertical}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--error)}input[type=file]{font:400 16px/1.5 var(--body);overflow:hidden}input::file-selector-button{border:0;border-right:3px solid var(--primary);padding:8px 12px;margin:-10px 12px -10px -12px;background:var(--primary);color:#fff;font:600 14px var(--body);cursor:pointer}
input[type=checkbox],input[type=radio]{appearance:none;display:inline-grid;place-content:center;width:20px;height:20px;min-height:0;padding:0;border:3px solid var(--primary);background:white;flex:none}input[type=checkbox]:checked,input[type=radio]:checked{background:var(--primary)}input[type=checkbox]:checked::after{content:'';width:8px;height:11px;border-right:3px solid white;border-bottom:3px solid white;transform:translateY(-1px) rotate(45deg)}input[type=radio]:checked::after{content:'';width:8px;height:8px;background:white}
:focus-visible{outline:3px solid var(--primary);outline-offset:4px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none}input[type=range]:focus-visible{outline:3px solid var(--primary);outline-offset:4px}
.service-header{position:sticky;top:0;z-index:10;background:#000;color:#fff;border-bottom:1px solid #000}.header-inner{width:min(1120px,calc(100% - 48px));margin:auto;display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:16px 0}.service-brand{margin-right:auto;color:#fff;text-decoration:none;display:grid;gap:4px}.service-brand span{font-size:12px}.service-brand strong{font:900 22px/1.2 var(--headline)}.service-header nav{display:flex;flex-wrap:wrap;gap:8px}.service-header nav a{display:flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border:0;color:#fff;font-weight:600;text-decoration:none;white-space:nowrap}.service-header nav a[aria-current=page]{text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:8px}.service-header nav a:hover{background:#fff;color:#000}.service-header form{margin:0}.service-header button{min-height:44px;--button-x:16px;background:#000;color:#fff;border-color:#fff}.service-header button:hover,.service-header button:active{background:#fff;color:#000}.service-header :focus-visible{outline-color:#fff}
.shell{width:min(1120px,calc(100% - 48px));margin:0 auto;padding:64px 0 80px}.shell.narrow{max-width:760px}.shell.wide{max-width:1200px}.panel{border:3px solid var(--primary);padding:24px;background:#fff;min-width:0}.panel>h1{margin-bottom:40px}.page-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:40px}.page-heading p{margin-top:16px}.eyebrow{font:400 12px/1.4 var(--mono);letter-spacing:2px;text-transform:uppercase;margin-bottom:16px}.hint,.privacy-note,.optional-label{font:400 12px/1.5 var(--body);color:var(--muted)}.optional-label{letter-spacing:0}.privacy-note{margin-top:8px}.status-message,[role=status]{font:400 14px/1.5 var(--body);overflow-wrap:anywhere}.status-message:not(:empty),[role=status]:not(:empty){margin:16px 0;padding:12px;border-left:5px solid var(--primary);background:var(--sunken)}[data-error=true],[role=alert]{color:var(--error)}[data-state=success]{color:var(--success);border-color:var(--success)}.empty,.empty-state{padding:24px;border:3px solid var(--primary);font-size:16px}.status-chip{display:inline-block;padding:2px 10px;border:2px solid currentColor;font:600 11px/1.5 var(--body);letter-spacing:1px;white-space:nowrap}.status-chip[data-status=approved]{color:var(--success)}.status-chip[data-status=pending]{color:var(--primary);border-color:var(--warning)}.status-chip[data-status=rejected]{color:var(--error)}
.skip{position:absolute;left:16px;top:-100px;background:white;padding:12px;border:3px solid var(--primary);z-index:5}.skip:focus{top:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:760px){.header-inner{gap:16px;padding:16px 0}.service-header nav{order:3;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;gap:0;border-top:1px solid #333;padding-top:8px}.service-header nav a{padding:10px 4px;font-size:14px}.service-header button{--button-x:12px;letter-spacing:0}.shell{padding:40px 0 64px}h1{font-size:48px}h2{font-size:36px}h3{font-size:28px}}
@media(max-width:390px){.header-inner,.shell{width:calc(100% - 32px)}.panel{padding:16px}.service-brand span{font-size:12px}.service-brand strong{font-size:20px}}

input::file-selector-button{border-radius:0!important;box-shadow:none!important}input::file-selector-button:hover{background:white;color:var(--primary)}input::-webkit-slider-thumb,input::-webkit-slider-runnable-track{border-radius:0!important;box-shadow:none!important}input::-moz-range-thumb,input::-moz-range-track{border-radius:0!important;box-shadow:none!important}h1,h2,h3,label{font-synthesis:none}

.ghost:active{border:0;padding:10px 0;background:transparent;color:var(--link)}

.service-brand{min-width:0;flex:1 1 140px}.service-brand strong{overflow-wrap:anywhere}.service-header form{flex:none}

/* Keep scrolling and pinch zoom; prevent page-edge bounce from moving pinned bars. */
html,body{overscroll-behavior:none}body{touch-action:manipulation}

.guide-editor{font-size:16px;line-height:1.7}.guide-content pre{overflow:auto;max-width:100%}.guide-content img{max-width:100%;height:auto}

.guide-editor-page{padding-bottom:180px}.guide-editor{min-height:calc(100dvh - var(--header-height,146px) - 180px)}.action-bar{position:fixed;bottom:0;left:0;right:0;z-index:20;padding:16px 0 max(16px,env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--divider)}.action-bar>div{width:min(900px,calc(100% - 48px));margin:auto}.action-bar button{width:100%}.action-bar .status-message{margin:0 0 8px}

html:has(dialog[open]){overflow:hidden}
.app-dialog{width:min(600px,calc(100vw - 32px));max-height:calc(100dvh - 32px);margin:auto;padding:24px;border:3px solid #000;background:#fff;color:#000;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;box-shadow:none;border-radius:0}
.app-dialog::backdrop{background:rgba(0,0,0,.35);}
.dialog-heading{display:flex;justify-content:space-between;align-items:start;gap:16px;margin-bottom:24px}.dialog-heading h2{font-size:24px;margin:0;overflow-wrap:anywhere}.dialog-heading button{flex:none;min-height:44px;padding:8px 12px;letter-spacing:0;font-size:14px}.app-dialog p{white-space:pre-wrap;overflow-wrap:anywhere}.app-dialog .dialog-action{width:100%;margin-top:24px}.app-dialog .field-list{margin-top:16px}.contact-qr{display:block;width:100%;height:auto;max-height:calc(100dvh - 160px);object-fit:contain}.with-action-bar{padding-bottom:160px}.breadcrumb{margin-bottom:40px;min-height:44px;display:flex;align-items:center}
.local-review-badge{position:relative;overflow-wrap:anywhere;border-bottom:1px solid #fff;background:#000;color:#fff;text-align:center;font:600 13px/1.4 system-ui,-apple-system,sans-serif;padding:6px 12px;letter-spacing:.02em}
.conflict-body{display:flex;flex-direction:column;gap:16px}.conflict-row{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;padding:12px;border:2px solid var(--primary);background:var(--sunken)}.conflict-row strong{grid-column:1/-1}.conflict-row span{overflow-wrap:anywhere}.conflict-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}.conflict-actions button{flex:1 1 auto}

select{appearance:none;-webkit-appearance:none;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m3 6 5 5 5-5' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat}select:focus{padding-right:34px}
/* Native backdrop blur is unreliable in WebKit; body portals keep dialogs sharp. */
body:has(dialog[open])>:not(dialog):not(script):not(style){filter:blur(8px)}
.dialog-heading button:focus-visible{outline:none;border-width:5px;padding:6px 10px}

.field-list{grid-template-columns:minmax(0,1fr)}.field-list>label{min-width:0}input[type=date],input[type=time],input[type=datetime-local]{appearance:none;-webkit-appearance:none;min-width:0;max-width:100%;width:100%}input::-webkit-date-and-time-value{min-width:0;text-align:left}

/* v4: native controls and one shared dialog; ordinary lists retain thin borders. */
.admin-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:16px 0}
.admin-toolbar label{flex:1;min-width:130px}.admin-toolbar .admin-search{flex:3;min-width:min(100%,240px)}
.admin-toolbar button{min-height:52px}
.member-list{list-style:none;padding:0;margin:0}
.member-list li{border:1px solid;padding:12px;min-width:0;display:flex;flex-direction:column;gap:8px;overflow-wrap:anywhere}
/* 紧凑名单＝卡片内容的密集版：同一套标题行与字段表，字段排成多列，行与行共用分隔线。 */
.member-list.compact li{border:1px solid var(--divider);border-bottom:0;padding:12px 16px;gap:0}
.member-list.compact li:last-child{border-bottom:1px solid var(--divider)}
.member-list.compact .member-card-header{align-items:center}
.member-list.compact .member-card-fields{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:4px 24px;margin:12px 0 0;font-size:14px}
.member-list.compact .member-card-fields>div{grid-template-columns:64px minmax(0,1fr);gap:8px}
.member-list.compact .member-card-fields dd{overflow-wrap:anywhere}
.check-label{display:flex!important;align-items:center;gap:8px;font-weight:normal!important}.check-label input{width:20px!important;height:20px;flex-shrink:0;min-height:20px!important}
input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:5px solid #000!important;outline-offset:3px}
.filter-options{display:flex;flex-wrap:wrap;gap:12px}.field-list fieldset{border:1px solid;padding:12px}.member-details div,.audit-list li{border-bottom:1px solid;padding:8px 0;overflow-wrap:anywhere}.member-details dd{margin:4px 0}.action-confirm{border:3px solid;padding:12px;margin-top:16px}.app-dialog{overflow-wrap:anywhere}.app-dialog form,.app-dialog fieldset{min-width:0}.admin-group small{font-size:14px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
/* 手机上紧凑名单只留名字与右侧「编辑」，其余字段收起（要看资料请用卡片或点名字）。 */
@media(max-width:760px){.member-list.compact .member-card-fields{display:none}.member-list.compact .member-card-header{flex-wrap:nowrap;align-items:center;gap:12px}.member-list.compact .member-card-name{flex:1;min-width:0}}
@media(max-width:600px){.admin-toolbar>button{flex:1}.admin-toolbar label{min-width:0;flex-basis:40%}}

.member-page .form-fields{border:0;padding:0;margin:0}

/* ponytail: keep the existing confirmation form; only the trigger needs compact sizing. */
.service-header .service-logout{width:44px;height:44px;padding:0;display:flex;align-items:center;justify-content:center;flex:none}
@media(max-width:760px){.service-header .service-brand{flex:1 1 0}}

.service-brand strong .service-name{display:inline-block;max-width:100%;font:inherit;vertical-align:top}

/* Repeat records share the existing form controls and native mobile inputs. */
.survey-repeat,.survey-group-editor,.survey-record{min-width:0;max-width:100%}
.survey-repeat legend{overflow-wrap:anywhere}
.survey-record{border-top:1px solid var(--divider);padding-top:16px}
.survey-record-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}
.survey-record-heading h3{margin:0}.survey-record-heading button{width:auto;min-height:44px}
.survey-total{font-weight:700;border-top:1px solid var(--divider);padding-top:12px}
.survey-answer-text{white-space:pre-wrap;overflow-wrap:anywhere}
.survey-group-editor .survey-question{border-width:1px;padding:12px 0}
@media(max-width:600px){.field-list .survey-repeat,.field-list .survey-group-editor{padding:10px}.survey-question .action-row{flex-wrap:wrap}}
