:root{--bg:#f5f5ef;--surface:#fff;--ink:#203b32;--muted:#7a857e;--green:#315d49;--soft:#e9eee5;--line:#e4e8de;--gold:#d8a767;--red:#ac514c;font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button{border:0;border-radius:12px;background:var(--green);color:#fff;padding:12px 18px;font-size:14px;font-weight:600;transition:filter .15s,transform .15s}button:hover{filter:brightness(.96)}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:default}input,textarea,select{border:1px solid var(--line);border-radius:10px;background:#fafbf8;padding:12px;color:var(--ink);width:100%;outline:none}input:focus,textarea:focus{border-color:var(--green)}textarea{resize:vertical;min-height:120px}label{display:block;font-size:13px;margin:15px 0 7px}.shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#edf0e7;padding:38px 26px;display:flex;flex-direction:column;border-right:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-weight:800;letter-spacing:1px;font-size:21px}.mark{width:39px;height:39px;display:grid;place-items:center;background:var(--green);color:#fff;border-radius:12px;font-size:24px}.subbrand{font-size:10px;letter-spacing:2px;margin:12px 0 44px;color:var(--muted)}nav{display:grid;gap:9px}nav button{display:flex;gap:14px;align-items:center;text-align:left;background:transparent;color:var(--muted);padding:14px 17px}nav button.active{background:#dce5d6;color:var(--green)}.nav-icon{width:23px;text-align:center;font-size:19px}.side-bottom{margin-top:auto;font-size:12px;color:var(--muted);line-height:1.9}.side-bottom a{display:block;margin:14px 0}.main{padding:30px 42px;max-width:1540px;width:100%;margin:auto}.topbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:28px}.breadcrumb{font-size:12px;letter-spacing:1px;color:var(--muted)}.account{display:flex;align-items:center;gap:10px;font-size:12px}.account select{padding:7px;max-width:145px;background:transparent}.avatar{width:37px;height:37px;border-radius:50%;background:#e9e4d3;color:#67664f;display:grid;place-items:center;font-weight:700;flex-shrink:0}.title-row{display:flex;align-items:end;justify-content:space-between;margin-bottom:25px;gap:12px}h1{font-size:30px;letter-spacing:1px;margin:6px 0 10px}h2{font-size:19px;margin:0 0 18px}h3{font-size:17px;margin:0 0 12px}.muted{color:var(--muted);font-size:13px;line-height:1.8}.eyebrow{font-size:10px;letter-spacing:2.5px;color:var(--muted);font-weight:700}.layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:27px;align-items:start}.hero{background:#dde7d6;border-radius:20px;padding:31px;position:relative;overflow:hidden;min-height:184px;margin-bottom:22px;display:flex;align-items:center;justify-content:space-between}.hero h2{font-size:25px;margin:10px 0 14px;line-height:1.5}.hero p{font-size:12px;line-height:1.9;color:#57705c;max-width:360px;margin:0}.hero-art{width:140px;height:140px;flex-shrink:0;position:relative;background:#c9d7bf;border-radius:50%;margin-left:18px;overflow:hidden}.hero-art:before{content:"";position:absolute;width:180px;height:90px;background:#829d76;left:-12px;top:85px;border-radius:50%;transform:rotate(-18deg)}.hero-art:after{content:"";position:absolute;width:50px;height:50px;border:13px solid #f6f3df;border-radius:50%;left:47px;top:28px}.chips{display:flex;gap:9px;margin:19px 0;flex-wrap:wrap}.chip{background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:30px;padding:8px 16px;font-size:12px}.chip.active{background:var(--green);color:#fff;border-color:var(--green)}.card{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:23px;margin-bottom:18px}.post-head{display:flex;align-items:center;gap:11px;margin-bottom:17px}.post-meta{flex:1}.author{font-size:13px;font-weight:650;margin-bottom:5px}.time{font-size:10px;color:#929b92}.badge{border-radius:5px;padding:4px 7px;font-size:10px;background:#f3f0e4;color:#8f7c4e;white-space:nowrap}.badge.approved{color:#4a7150;background:#eaf1e5}.badge.rejected{color:var(--red);background:#fbeeea}.post-title{font-size:18px;margin:0 0 11px;font-weight:700}.post-body{font-size:13px;line-height:1.95;color:#606c61;white-space:pre-wrap;word-break:break-word}.media-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}.media-grid.one{grid-template-columns:1fr}.media-grid img{width:100%;aspect-ratio:16/9;max-height:310px;object-fit:cover;border-radius:11px;cursor:pointer}.media-grid video{width:100%;aspect-ratio:16/9;grid-column:1/-1;border-radius:11px;background:#203b32;max-height:360px}.post-actions{display:flex;gap:20px;border-top:1px solid #f0f1eb;margin-top:20px;padding-top:17px;align-items:center}.post-actions button{background:none;color:#92988f;padding:0;font-size:12px;font-weight:400}.post-actions .liked{color:var(--green);font-weight:700}.post-actions .review{color:#ba9159;margin-left:auto}.post-actions .report{margin-left:auto}.aside-card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:22px;margin-bottom:20px}.aside-title{font-size:14px;font-weight:700;display:flex;justify-content:space-between;margin-bottom:17px}.date-big{font-size:40px;font-weight:600;line-height:1.1}.checkin-row{display:flex;align-items:end;justify-content:space-between;margin:25px 0}.checkin-row .muted{font-size:11px}.full{width:100%}.outline{background:transparent;border:1px solid var(--line);color:var(--green)}.ghost{background:var(--soft);color:var(--green)}.danger{background:#f7e8e3;color:var(--red)}.week{display:grid;grid-template-columns:repeat(7,1fr);margin:19px 0 23px;color:#a6ada1;font-size:10px;text-align:center;gap:4px}.week span{padding:6px 0;border-radius:50%}.week .on{background:#e4ebdc;color:var(--green)}.tool-link{display:flex;gap:12px;align-items:center;padding:13px 0;border-top:1px solid #eef0e8}.tool-icon{background:#f0f1e9;color:#788c70;width:37px;height:37px;border-radius:10px;display:grid;place-items:center;font-size:20px}.tool-name{font-size:12px;font-weight:600}.tool-desc{font-size:10px;color:#a0a69a;margin-top:5px}.notice{background:#f3f0e4;border-radius:12px;padding:16px;font-size:12px;line-height:1.9;color:#837550;margin-top:18px}.section-head{display:flex;justify-content:space-between;align-items:center;margin:12px 0 20px}.section-head span{font-size:11px;color:var(--muted)}.empty{text-align:center;padding:40px 16px;color:var(--muted);font-size:14px}.album-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.album{overflow:hidden;padding:0}.album img{width:100%;height:200px;object-fit:cover}.album-info{padding:17px}.album-info h3{font-size:15px}.form{max-width:800px}.form .card{padding:28px}.form-foot{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:20px}.upload{border:1px dashed #b6c5af;padding:25px;background:#f8faf5;border-radius:14px;margin-top:18px}.upload input{border:0;padding:6px;background:none}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0}.stat{padding:25px;background:#e9eee2;border-radius:15px}.stat strong{display:block;font-size:32px;margin-bottom:8px}.stat span{color:var(--muted);font-size:12px}.comments{padding:17px 0;border-top:1px solid var(--line);font-size:13px;line-height:1.9}.comment-form{display:flex;gap:10px;margin-top:20px}.comment-form input{flex:1}.review-box{margin-top:20px;padding:18px;border:1px solid #dbc6a2;background:#fcfaf3;border-radius:11px}.review-box textarea{margin:10px 0;min-height:65px}.review-actions{display:flex;gap:10px}.back{background:none;color:var(--green);padding:0;margin-bottom:22px}.login-wrap{max-width:460px;margin:12vh auto;padding:36px}.login-wrap h1{font-size:25px}.login-wrap button{margin-top:20px}#toast{pointer-events:none;position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#243c32;color:#fff;padding:13px 23px;border-radius:11px;z-index:100;display:none;max-width:90%;font-size:13px;box-shadow:0 9px 40px #0002}.admin-shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.admin-main{padding:35px 42px;max-width:1400px}.admin-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin:27px 0}.admin-metrics .stat{background:#fff;border:1px solid var(--line)}.admin-controls{display:flex;gap:10px;align-items:center;margin:22px 0}.admin-controls select{width:auto}.audit{width:100%;border-collapse:collapse;font-size:12px}.audit th,.audit td{text-align:left;border-bottom:1px solid var(--line);padding:14px 10px;vertical-align:top}.admin-posts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.admin-posts .card{margin:0}.code{font-family:monospace;overflow-wrap:anywhere;user-select:all;padding:20px;background:var(--soft);border-radius:10px;margin-top:15px}.mobile-nav{display:none}.member-app{padding:20px;border:1px solid var(--line);border-radius:12px;margin-bottom:12px}.member-app .review-actions{margin-top:15px}.error-banner{padding:15px;background:#faeee9;color:var(--red);border-radius:10px;margin-bottom:15px}.gallery-title{margin:8px 0 28px}.preview-img{max-width:100%;border-radius:12px}.role-note{font-size:10px;color:#84907e}
/* Administration: rice paper, ink, gold and coral; scoped to the workbench. */
.admin-page{--bg:#f6f2e9;--surface:#fffdf8;--ink:#262420;--muted:#81796c;--green:#39362f;--soft:#eee7d8;--line:#e5ddce;--gold:#bd9153;--red:#b85f50;background:var(--bg)}
.admin-page .sidebar{background:#ece5d7}.admin-page nav button.active{background:#dfd3bc;color:#383127}.admin-page .stat{background:var(--surface)}.admin-page .post-body{color:#625b50}.admin-page .danger{background:#fae8e1;color:#a34d3f}.admin-page .review-box{background:#faf4e7}.admin-page .badge.suspended{color:#a34d3f;background:#f7e0d7}.admin-page .topbar{flex-wrap:wrap}.admin-page .admin-logout{padding:7px 12px;white-space:nowrap;font-size:12px}.directory-hidden{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.admin-main{min-width:0;width:100%}.member-tools #member-search{display:flex;gap:10px}.member-tools #member-search input{flex:1;min-width:0}.member-tools select{max-width:300px}.member-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.member-row{margin:0;min-width:0;display:flex;flex-direction:column}.member-identity{display:flex;align-items:center;gap:12px;min-width:0}.member-identity>div{min-width:0}.member-identity h3{margin:0 0 5px;overflow-wrap:anywhere}.member-id{font-family:monospace;font-size:11px;overflow-wrap:anywhere;color:var(--muted);margin:0}.member-row-meta{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:16px 0 10px}.member-row .post-body{margin:0 0 15px}.member-row-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:auto}.member-pagination{display:flex;gap:18px;align-items:center;justify-content:center;margin:24px 0}.member-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:22px 0}.member-overview>div{background:var(--soft);border-radius:12px;padding:15px;min-width:0}.member-overview strong{display:block;font-size:23px;overflow-wrap:anywhere}.member-overview span{font-size:12px;color:var(--muted)}.member-detail{border-top:3px solid var(--gold);scroll-margin-top:20px}.member-detail:focus{outline:2px solid var(--gold);outline-offset:3px}.member-detail>.badge{display:inline-block;margin-top:12px}.member-action-form{padding:18px;background:#faf1e5;border:1px solid var(--line);border-radius:12px}.member-action-form label{margin-top:0}.member-action-form input{margin-top:8px}.member-audit-title{margin-top:28px}.member-audit{padding:14px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.member-detail .section-head{gap:12px}.member-detail h2{margin:6px 0;overflow-wrap:anywhere}.member-detail .post-body{overflow-wrap:anywhere}
@media(max-width:850px){.member-list{grid-template-columns:1fr}.member-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.member-tools .section-head,.member-detail .section-head{align-items:flex-start;flex-wrap:wrap}.member-row-foot{flex-wrap:wrap}.admin-page .chips{gap:7px}.admin-page .chip{padding:8px 12px}.member-pagination{gap:10px}.admin-page .login-wrap{margin:8vh 16px}.member-tools #member-search button{padding:12px}.admin-page .topbar a{white-space:nowrap}}
@media(min-width:1700px){.main{padding-top:35px}.hero{min-height:210px}}
@media(max-width:1150px){.main{padding:24px}.layout{grid-template-columns:minmax(0,1fr) 245px;gap:20px}.sidebar{padding:30px 18px}.shell{grid-template-columns:205px minmax(0,1fr)}.brand{font-size:18px}.hero{padding:24px}.hero-art{width:100px;height:100px}.album-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:850px){#toast{bottom:100px}.layout{grid-template-columns:1fr}.right-side{display:none}.shell,.admin-shell{grid-template-columns:1fr}.sidebar{display:none}.main,.admin-main{padding:20px 17px 100px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:#f9faf5f5;border-top:1px solid var(--line);z-index:40;padding:8px 4px max(8px,env(safe-area-inset-bottom));justify-content:space-around}.mobile-nav button{background:none;color:var(--muted);font-size:11px;padding:8px 9px;display:grid;gap:4px}.mobile-nav .active{color:var(--green)}.mobile-nav .nav-icon{font-size:18px;margin:auto}h1{font-size:26px}.topbar{margin-bottom:23px}.breadcrumb{font-size:10px}.account{font-size:10px}.account select{max-width:112px;padding:6px;font-size:11px}.hero{min-height:170px;padding:24px}.hero h2{font-size:22px}.hero-art{width:84px;height:84px;margin-left:8px}.hero-art:after{left:30px;top:18px;width:36px;height:36px;border-width:10px}.hero-art:before{top:60px}.card{padding:19px}.post-actions{gap:15px}.album-grid{gap:12px}.album img{height:140px}.album-info{padding:13px}.admin-posts{grid-template-columns:1fr}.admin-metrics{grid-template-columns:repeat(2,1fr);gap:10px}.admin-metrics .stat{padding:18px}.stat{padding:18px}.stat strong{font-size:27px}.audit{min-width:600px}.audit-wrap{overflow:auto}.form .card{padding:20px}.form-foot{align-items:stretch;flex-direction:column}.login-wrap{margin:8vh 16px}.title-row{align-items:center}.role-note{display:none}}

/* Live workbench notifications: update this strip only, never rerender forms. */
.admin-page .admin-realtime{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:20px 0;padding:13px 16px;background:#f8f1df;border:1px solid #c8ad77;border-radius:14px;font-size:13px;color:#736548;min-width:0}.admin-page #admin-realtime-state::before{content:"●";margin-right:9px;color:#9a9486}.admin-page #admin-realtime-state[data-state="connected"]::before{color:#b28a26}.admin-page #admin-realtime-state[data-state="reconnecting"]::before{color:#de755d}.admin-page #admin-realtime-refresh{background:#ffede0;border-color:#e18c73;color:#843b2e;white-space:normal;text-align:left;line-height:1.6;max-width:100%}.admin-realtime [hidden]{display:none!important}
