:root{--bg:#f8f8f0;--paper:#fffef9;--ink:#203831;--muted:#6d7c70;--green:#16745b;--green-dark:#0d5944;--lime:#d9ef87;--line:#e1e6da;--orange:#efac75;--radius:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Microsoft YaHei UI","PingFang SC",sans-serif;font-size:15px;line-height:1.65}button,input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid var(--orange);outline-offset:4px}button,a{touch-action:manipulation}button{color:inherit}img{max-width:100%;display:block}#header{height:88px;border-bottom:1px solid var(--line);background:rgba(255,254,249,.94)}.header-inner{max-width:1240px;margin:auto;display:flex;align-items:center;justify-content:space-between;height:100%;padding:0 32px;gap:20px}.brand{display:flex;align-items:center;gap:10px;white-space:nowrap}.brand img{width:42px}.brand b{font-size:20px;letter-spacing:1px;display:block;line-height:1.4}.brand small{font-size:9px;letter-spacing:2px;color:var(--muted);display:block}.nav{display:flex;align-items:center;gap:28px}.nav a{position:relative;font-size:14px;white-space:nowrap}.nav a.on{font-weight:bold;color:var(--green)}.nav a.on:after{content:"";position:absolute;left:35%;right:35%;bottom:-12px;height:3px;background:var(--green);border-radius:3px}.header-actions{display:flex;align-items:center;gap:12px}.user-link{font-size:13px;max-width:130px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;border-radius:9px;border:1px solid var(--line);background:var(--paper);font-weight:600;font-size:14px;line-height:1.5;transition:transform .15s,background .15s}.btn:hover{transform:translateY(-1px);background:#f0f2e9}.btn.primary{background:var(--green);border-color:var(--green);color:white}.btn.primary:hover{background:var(--green-dark)}.btn.lime{background:var(--lime);border-color:var(--lime);color:var(--ink)}.btn.small{min-height:34px;padding:6px 12px;font-size:12px}.btn.danger{color:#b84130;border-color:#efd7ce}.text-btn{background:none;border:0;padding:5px;color:var(--green);font-size:13px}.container{max-width:1240px;margin:auto;padding:0 32px}.hero{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:20px;padding:46px 0 36px;position:relative}.eyebrow{display:flex;gap:10px;align-items:center;font-size:11px;font-weight:bold;letter-spacing:2px;color:var(--green)}.eyebrow:before{content:"";width:22px;height:1px;background:var(--green)}h1,h2,h3,p{margin-top:0}.hero h1{font-size:clamp(32px,3.6vw,52px);line-height:1.35;letter-spacing:-1px;margin:21px 0 18px;font-weight:800}.hero h1 em{font-style:normal;position:relative;white-space:nowrap;color:var(--green)}.hero h1 em:after{content:"";position:absolute;bottom:-3px;left:0;width:100%;height:7px;border-radius:50%;border-top:3px solid #c3d77c;transform:rotate(-2deg)}.hero p{color:var(--muted);font-size:14px;max-width:400px;line-height:1.9}.hero-actions{display:flex;gap:12px;margin:24px 0 20px}.hero-note{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted)}.hero-note .dots{display:flex}.dots i{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:#e9c2a1;border:2px solid var(--bg);margin-right:-7px;font-style:normal;font-size:12px}.dots i:nth-child(2){background:#c4d6a1}.dots i:nth-child(3){background:#d1c6e1}.hero-art{padding-left:12px}.hero-art img{width:100%;max-height:400px}.steps{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:12px;margin:2px 0 44px;background:#fffef9}.step{display:flex;align-items:center;gap:14px;padding:18px 24px}.step+.step{border-left:1px solid var(--line)}.step-number{font-family:Georgia,serif;font-size:30px;font-style:italic;color:#94ad92}.step strong{display:block;font-size:14px}.step small{color:var(--muted);font-size:11px}.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin:28px 0 22px}.section-head h2{font-size:25px;margin:0 0 4px;letter-spacing:1px}.section-head p{color:var(--muted);font-size:12px;margin:0}.search{display:flex;align-items:center;gap:8px}.search input{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:11px 14px;width:235px;min-width:0;font-size:13px}.gallery-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:20px;font-size:12px;color:var(--muted)}.pill{display:inline-flex;border-radius:50px;padding:5px 12px;background:#edf3e5;color:var(--green);font-size:11px}.pill.orange{background:#fff0df;color:#a75f23}.pill.gray{background:#f0f0e9;color:var(--muted)}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px;padding-bottom:30px}.project-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;overflow:hidden;transition:transform .18s,box-shadow .18s}.project-card:hover{transform:translateY(-4px);box-shadow:0 12px 24px #23412d0a}.card-cover{display:block;aspect-ratio:4/3;position:relative;background:#edf3e5;overflow:hidden}.card-cover img{width:100%;height:100%;object-fit:cover}.card-cover .play-icon{position:absolute;right:14px;bottom:14px;display:grid;place-items:center;width:38px;height:38px;background:#fffef9ee;border-radius:50%;color:var(--green);font-size:13px}.card-cover .pill{position:absolute;top:12px;left:12px;background:#fffef9e8}.card-body{padding:18px}.card-title{font-size:17px;font-weight:bold;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:7px}.card-description{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:17px}.card-meta{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:13px;font-size:11px;color:var(--muted);gap:8px}.avatar{width:24px;height:24px;border-radius:50%;background:#e3ebd3;display:inline-grid;place-items:center;color:var(--green);font-size:11px;margin-right:7px}.author{display:flex;align-items:center;min-width:0;overflow-wrap:anywhere}.card-actions{display:flex;gap:8px;margin-top:13px;flex-wrap:wrap}.empty{border:1px dashed #c7d3bd;border-radius:16px;min-height:250px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:30px;background:#f2f5e9;margin-bottom:30px}.empty-icon{font-size:30px;color:var(--green)}.empty h2{font-size:22px;margin:4px 0}.empty p{color:var(--muted);font-size:13px;margin-bottom:12px}.footer{max-width:1176px;padding:24px 0 28px;margin:50px auto 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;font-size:11px;color:var(--muted)}.footer a{font-weight:bold;color:var(--ink)}.page-head{padding:38px 0 24px}.page-head .eyebrow{margin-bottom:12px}.page-head h1{font-size:32px;margin-bottom:8px}.page-head p{color:var(--muted);font-size:13px;margin:0}.back-link{display:inline-block;color:var(--muted);font-size:12px;margin:24px 0 8px}.panel{background:var(--paper);border:1px solid var(--line);padding:26px;border-radius:14px}.panel h2{font-size:19px;margin-bottom:18px}.form-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:24px;align-items:start}.field{margin-bottom:22px}.field label,.field-label{display:block;font-size:13px;font-weight:bold;margin-bottom:7px}.field input:not([type=radio]):not([type=checkbox]),.field textarea,.field select{display:block;width:100%;border:1px solid #d4ddce;background:#fff;border-radius:8px;padding:11px 12px;color:var(--ink);outline:none;font-size:14px}.field input:focus,.field textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #16745b12}.field textarea{resize:vertical;min-height:100px}.field small,.hint{display:block;font-size:11px;color:var(--muted);margin-top:7px}.drop-zone{display:flex;position:relative;flex-direction:column;align-items:center;justify-content:center;padding:30px 16px;border:2px dashed #bcccac;border-radius:10px;background:#f5f8ed;cursor:pointer;gap:7px;min-height:150px;text-align:center}.drop-zone.dragging{background:#e4efcc}.drop-zone input{position:absolute;width:100%;height:100%;inset:0;opacity:0;cursor:pointer}.drop-zone strong{font-size:14px}.drop-zone .drop-icon{font-size:28px;color:var(--green)}.file-name{font-size:12px;color:var(--green);word-break:break-all}.visibility-options{display:grid;gap:10px}.choice{display:flex;align-items:flex-start;gap:9px;border:1px solid var(--line);padding:13px;border-radius:9px;font-size:13px;cursor:pointer}.choice:has(input:checked){border-color:var(--green);background:#f0f6e8}.choice input{accent-color:var(--green);margin-top:6px}.choice span{display:block}.choice small{font-weight:normal;margin:2px 0 0}.check-keys{display:flex;gap:8px;flex-wrap:wrap}.key-choice{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:7px;padding:6px 10px;font-size:12px;cursor:pointer}.key-choice:has(input:checked){background:#eaf4db;border-color:#9fbb8e}.key-choice input{accent-color:var(--green)}.form-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px;border-top:1px solid var(--line)}.guide-list{padding-left:19px;font-size:13px;color:var(--muted);line-height:2}.note{background:#edf3e5;border-radius:8px;padding:13px 15px;font-size:12px;color:#456344}.note.warn{background:#fff1df;color:#916033}.error-text{color:#b74332;font-size:13px}.auth-wrap{max-width:470px;margin:65px auto;padding:0 20px}.auth-wrap .panel{padding:34px}.auth-wrap h1{font-size:27px;margin-bottom:8px}.auth-wrap p{font-size:13px;color:var(--muted)}.auth-wrap .btn{width:100%}.detail-header{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:12px 0 24px}.detail-header h1{font-size:30px;margin-bottom:9px;overflow-wrap:anywhere}.detail-meta{display:flex;gap:15px;align-items:center;color:var(--muted);font-size:12px;flex-wrap:wrap}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:24px;align-items:start}.player-shell{border-radius:13px;overflow:hidden;background:#143f35;padding:8px;box-shadow:0 8px 24px #1d463511}.player-shell iframe{display:block;border:0;width:100%;height:650px;background:#102f2c;border-radius:7px}.detail-side{display:grid;gap:18px}.share-panel{text-align:center;background:#f0f5df}.share-panel h2{margin-bottom:5px}.share-panel p{font-size:12px;color:var(--muted)}.qr-image{width:160px;height:160px;margin:16px auto;background:#fff;padding:4px;border-radius:7px}.share-panel .btn{width:100%;margin-top:9px}.share-panel .share-status{font-size:10px;margin:12px 0 0;color:#6d7c70}.detail-section{padding:24px 0;border-bottom:1px solid var(--line)}.detail-section h2{font-size:18px;margin-bottom:10px}.prose{font-size:13px;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}.comment-box{margin-top:28px}.comment-box h2{font-size:20px}.comment-form{padding:20px;background:#f0f4e8;border-radius:12px}.comment-form textarea{min-height:85px}.comment-form .field{margin-bottom:12px}.comment-item{display:flex;gap:10px;padding:20px 0;border-bottom:1px solid var(--line)}.comment-item .comment-main{flex:1;min-width:0}.comment-item strong{font-size:13px}.comment-item time{font-size:10px;color:var(--muted);margin-left:10px}.comment-item p{font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0}.comment-item .pill{margin-left:8px}.admin-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}.admin-tabs button.on{background:var(--green);color:white;border-color:var(--green)}.admin-summary{display:flex;gap:20px;margin-bottom:22px;flex-wrap:wrap}.admin-summary span{font-size:12px;color:var(--muted)}.admin-summary strong{font-family:Georgia,serif;font-size:28px;color:var(--green);margin-right:6px}.admin-list{display:grid;gap:12px}.admin-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 22px;border:1px solid var(--line);background:var(--paper);border-radius:10px;overflow-wrap:anywhere}.admin-row h3{font-size:14px;margin:0 0 4px}.admin-row p{font-size:12px;margin:0;color:var(--muted)}.admin-row .row-actions{display:flex;gap:8px;flex-wrap:wrap;flex-shrink:0}.admin-comment{align-items:flex-start}.admin-comment .content{min-width:0;flex:1}.admin-comment blockquote{margin:12px 0;white-space:pre-wrap;font-size:14px;overflow-wrap:anywhere}#toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,20px);max-width:90vw;background:var(--ink);color:white;padding:12px 22px;border-radius:10px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:100;font-size:13px}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);border-radius:16px;width:min(94vw,440px);padding:28px;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#132c2866;backdrop-filter:blur(3px)}dialog h2{font-size:22px}dialog .dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}dialog .qr-image{width:240px;height:240px}dialog textarea{width:100%;font-size:12px;border:1px solid var(--line);border-radius:6px;padding:10px;resize:none}.loading{padding:100px;text-align:center;color:var(--muted)}.honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.alert{padding:12px 16px;border-radius:8px;background:#fff0df;color:#855728;margin-bottom:20px;font-size:13px}.upload-preview{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;margin-top:10px}.mobile-label{display:none}.account-name{overflow-wrap:anywhere}.gallery-more{text-align:center;color:var(--muted);font-size:12px;margin-bottom:25px}
@media(min-width:900px){.hero-copy{animation:rise .5s ease both}.hero-art{animation:rise .6s .1s ease both}.project-card{animation:rise .35s ease both}}@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
@media(max-width:1000px){.nav{gap:18px}.header-inner,.container{padding-left:24px;padding-right:24px}.detail-layout{grid-template-columns:minmax(0,1fr) 245px}.player-shell iframe{height:570px}.hero h1{font-size:39px}.footer{margin-left:24px;margin-right:24px}.hero-note{font-size:11px}.header-actions .user-link{max-width:80px}.step{padding:15px 18px}}
@media(max-width:760px){#header{height:auto;min-height:76px}.header-inner{padding:15px 20px;flex-wrap:wrap;gap:14px}.brand b{font-size:17px}.brand img{width:35px}.header-actions{margin-left:auto;gap:8px}.header-actions .btn{padding:8px 12px;min-height:38px;font-size:12px}.nav{order:3;width:100%;justify-content:center;border-top:1px solid var(--line);padding-top:12px;gap:30px}.nav a{font-size:12px}.nav a.on:after{bottom:-4px}.container{padding:0 20px}.hero{padding:30px 0 20px;gap:0;grid-template-columns:1fr}.hero h1{font-size:36px;line-height:1.4;margin-top:15px}.hero p{max-width:100%;font-size:13px}.hero-art{max-width:440px;margin:auto;padding:0;width:100%}.hero-art img{max-height:300px}.hero-actions{margin-top:20px}.hero-note{font-size:11px}.steps{margin-bottom:30px}.step{padding:14px 10px;gap:6px;align-items:flex-start}.step-number{font-size:22px}.step strong{font-size:11px}.step small{font-size:9px;line-height:1.5;display:block}.section-head{align-items:flex-start;flex-direction:column;gap:15px;margin-top:25px}.section-head h2{font-size:23px}.search{width:100%}.search input{flex:1;width:100%}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.card-body{padding:12px}.card-title{font-size:14px}.card-description{font-size:11px;margin-bottom:12px}.card-meta{font-size:10px;flex-wrap:wrap;padding-top:10px}.card-cover .play-icon{width:30px;height:30px;bottom:8px;right:8px}.card-cover .pill{font-size:9px;top:8px;left:8px;padding:3px 7px}.avatar{width:20px;height:20px;margin-right:4px}.card-actions{gap:5px}.card-actions .btn{padding:6px 8px}.footer{margin:30px 20px 0;flex-direction:column;gap:7px;font-size:10px;padding-bottom:25px}.page-head{padding-top:27px}.page-head h1{font-size:27px}.form-layout,.detail-layout{grid-template-columns:1fr}.panel{padding:20px}.form-layout aside{order:2}.detail-header{align-items:flex-start;flex-direction:column}.detail-header h1{font-size:25px}.detail-header .btn{align-self:flex-start}.player-shell iframe{height:580px}.detail-side{grid-template-columns:1fr}.share-panel{display:grid;grid-template-columns:1fr 110px;column-gap:15px;text-align:left;align-items:center}.share-panel h2,.share-panel p{grid-column:1}.share-panel .qr-image{grid-column:2;grid-row:1/5;width:110px;height:110px;margin:0}.share-panel .btn{grid-column:1;font-size:12px;margin-top:6px;padding:8px}.share-panel .share-status{grid-column:1/-1}.comment-form{padding:16px}.comment-item time{display:block;margin:0}.auth-wrap{margin:35px auto}.auth-wrap .panel{padding:26px}.admin-row{padding:15px;align-items:flex-start;flex-direction:column;gap:12px}.admin-row .row-actions{width:100%}.admin-summary{gap:18px}.admin-summary strong{font-size:23px}.page-head .eyebrow{font-size:10px}.form-actions{flex-wrap:wrap}.loading{padding:70px 10px}}
@media(max-width:380px){.hero h1{font-size:31px}.header-inner{padding-left:15px;padding-right:15px}.container{padding-left:15px;padding-right:15px}.gallery{gap:10px}.nav{gap:24px}.step small{font-size:8px}.step{gap:4px;padding:12px 7px}.hero-actions .btn{padding:10px 15px}.header-actions .user-link{max-width:60px}}

@media(max-width:760px){.detail-layout>div,.detail-layout>.detail-side{display:contents}.detail-layout>.detail-side>.share-panel{grid-row:2}.share-panel h2{font-size:17px}}

.pagination{display:flex;align-items:center;justify-content:center;gap:18px;margin:8px 0 30px;font-size:13px;color:var(--muted)}

/* 窄屏把「上传/分享/扫码」三栏改为单列：390px 下三栏各只剩约 60px 文字宽度，
   「分享一份骄傲」会被拆成「骄/傲」两行。单列后每栏文字有完整宽度。 */
@media(max-width:760px){
  .steps{grid-template-columns:1fr}
  .step{padding:13px 18px;gap:14px;align-items:center}
  .step+.step{border-left:0;border-top:1px solid var(--line)}
  .step-number{font-size:24px;min-width:36px}
  .step strong{font-size:13px;white-space:nowrap}
  .step small{font-size:11px;line-height:1.6}
}
