:root{--ink:#244c58;--muted:#6a858d;--line:#d9e6e7;--paper:#f7faf9;--blue:#367c91;--cream:#f4eee3}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,'Noto Sans TC','Microsoft JhengHei',sans-serif}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button,.button{border:1px solid var(--line);border-radius:999px;background:white;color:var(--ink);padding:11px 20px;cursor:pointer;text-decoration:none;display:inline-block}button:hover,.button:hover{border-color:var(--blue);background:#eaf3f4}button:focus-visible,a:focus-visible{outline:3px solid #e8b968;outline-offset:3px}button:disabled{opacity:.5;cursor:wait}.primary{background:var(--ink);color:white}.danger{color:#a13e3e}.brand{letter-spacing:.14em;font-size:12px;text-transform:uppercase}.shell{max-width:1280px;margin:auto;padding:36px 32px}.top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:20px}.hero{text-align:center;padding:54px 0 30px}.hero .eyebrow{font-size:12px;letter-spacing:.22em;color:var(--blue)}h1{font-size:clamp(28px,4vw,44px);font-weight:500;margin:14px 0 18px;letter-spacing:.06em}.hero p{color:var(--muted);line-height:1.9;font-size:14px}.filters{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin:8px 0 34px}.filters [aria-pressed=true]{background:var(--ink);color:white;border-color:var(--ink)}.meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;font-size:13px;color:var(--muted)}.meta a{color:var(--blue)}.grid{columns:4;column-gap:20px}.card{display:block;position:relative;break-inside:avoid;width:100%;padding:0;margin:0 0 20px;border:0;border-radius:12px;overflow:hidden;background:#e3eded}.card img{display:block;width:100%;height:auto;transition:filter .2s}.card:hover img{filter:brightness(.94)}.badge{position:absolute;bottom:12px;right:12px;color:white;background:#234b58d9;padding:6px 10px;font-size:11px;border-radius:30px}.center{text-align:center;margin:28px 0}.note{font-size:13px;color:var(--muted);line-height:1.8}.error{color:#ac3e3e;white-space:pre-wrap}.footer{margin-top:52px;padding:26px;border-top:1px solid var(--line);text-align:center;font-size:12px;color:var(--muted)}dialog{border:0;border-radius:14px;padding:0;background:#14272c;width:min(96vw,1000px);max-width:1000px;height:94dvh;max-height:94dvh;color:white}dialog::backdrop{background:#102126dc}.viewer{height:100%;display:flex;align-items:center;justify-content:center}.viewer img,.viewer video{max-width:100%;max-height:calc(94dvh - 80px);object-fit:contain}.viewer-controls{position:absolute;bottom:12px;left:0;right:0;display:flex;justify-content:center;gap:18px;align-items:center}.close{position:absolute;top:12px;right:12px;z-index:2}.panel{background:white;border:1px solid var(--line);padding:26px;border-radius:16px;margin:24px 0}.panel h2{font-weight:500;margin-top:0}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}input,select,textarea{border:1px solid var(--line);background:white;border-radius:8px;padding:11px;color:var(--ink);max-width:100%}label{font-size:14px;display:grid;gap:8px;margin:12px 0}.login{max-width:440px;margin:80px auto}.admin-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.admin-card{padding:12px;background:white;border:1px solid var(--line);border-radius:12px}.admin-card img{width:100%;height:210px;object-fit:contain;background:#edf2f2;border-radius:6px}.admin-card .row{gap:6px}.admin-card button{font-size:12px;padding:8px 12px}.admin-card input{width:85px}.admin-card small{display:block;overflow-wrap:anywhere;color:var(--muted);margin:8px 0}.upload{border:2px dashed #a8c7cf;padding:24px;border-radius:12px;background:#f3f9fa}.hidden{display:none!important}progress{width:100%;accent-color:var(--blue)}textarea{width:100%;height:100px;font-family:monospace;font-size:12px}.category-row{border-bottom:1px solid var(--line);padding:10px 0}body.embedded .top,body.embedded .footer{display:none}body.embedded .shell{padding-top:0}.empty{padding:45px;text-align:center;color:var(--muted)}@media(max-width:1000px){.grid{columns:3}.admin-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:700px){.shell{padding:20px 14px}.hero{padding:35px 0 18px}.grid{columns:2;column-gap:10px}.card{margin-bottom:10px;border-radius:8px}.admin-grid{grid-template-columns:repeat(2,1fr)}.panel{padding:18px}.top .brand{letter-spacing:.06em}.hero p{font-size:13px}.filters{gap:8px}.filters button{padding:9px 15px}}@media(max-width:360px){.admin-grid{grid-template-columns:1fr}}
