:root{--paper:#f6f5f0;--ink:#263b31;--green:#305c46;--muted:#737f77;--line:#dedfd6;--white:#fffefa;--accent:#d5e7aa;--red:#ad4740;font-family:"Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,textarea{ -webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #9cb780;outline-offset:3px}.sidebar{position:fixed;inset:0 auto 0 0;width:244px;background:#eef0e7;border-right:1px solid var(--line);padding:36px 24px;display:flex;flex-direction:column}.brand{text-decoration:none;display:flex;align-items:center;gap:12px;font-weight:800;font-size:25px;letter-spacing:2px}.brand-mark{width:48px;height:48px;background:var(--green);color:#fff;border-radius:14px;display:grid;place-items:center;transform:rotate(-6deg);font-size:26px}.brand small{display:block;font-size:9px;letter-spacing:2px;margin-top:3px}.workspace-label{font-size:11px;color:var(--muted);letter-spacing:1.6px;margin:52px 12px 18px}.nav-item{width:100%;display:flex;align-items:center;gap:13px;padding:13px 16px;margin-bottom:7px;background:none;border:0;color:var(--muted);font-size:15px;text-decoration:none;text-align:left;border-radius:8px}.nav-item.active{background:#dae3d3;color:var(--green);font-weight:700}.nav-item:hover{background:#e2e7dc}.sidebar-note{margin-top:auto;padding:24px 8px 30px;border-bottom:1px solid var(--line);font-size:12px}.sidebar-note p{color:var(--muted);line-height:1.9}.sidebar-note b{display:block;margin-top:10px}.tiny-stamp{font-size:36px;color:#75916a}.account{padding-top:22px;font-size:12px;overflow-wrap:anywhere;display:flex;flex-wrap:wrap;gap:10px;align-items:center}.account button{border:0;background:none;color:var(--green);text-decoration:underline}main{margin-left:244px;padding:0 48px;max-width:1700px}header{height:92px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);font-size:12px}.breadcrumb{color:var(--muted)}.breadcrumb>span:first-child{padding:0 15px;color:#bac0b7}.status-dot{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px}.status-dot:before{content:'';width:6px;height:6px;background:#6b8b51;border-radius:50%}#content{min-height:calc(100vh - 160px);padding:36px 0 52px}.eyebrow{font-size:11px;letter-spacing:2.8px;color:var(--green);font-weight:700;margin:0 0 12px}h1{font-size:32px;letter-spacing:-1px;margin:0 0 12px;line-height:1.35}h2{font-size:21px;margin:0 0 12px}h3{font-size:18px;margin:0 0 10px}p{line-height:1.8}.muted{color:var(--muted);font-size:14px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px}.page-heading p{margin:0}.button{border:1px solid var(--line);background:var(--white);color:var(--ink);padding:11px 18px;border-radius:7px;text-decoration:none;font-size:13px;display:inline-flex;justify-content:center;align-items:center;gap:8px;font-weight:600}.button:hover{filter:brightness(.96)}.button.primary{background:var(--green);border-color:var(--green);color:white}.button.line{background:#06c755;color:white;border-color:#06c755}.button.danger{color:var(--red);border-color:#e3c5bd}.button.small{font-size:12px;padding:8px 12px}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.hero{background:#e7ecde;border:1px solid #d5deca;border-radius:12px;min-height:184px;padding:30px 34px;display:flex;align-items:center;justify-content:space-between;gap:20px;overflow:hidden;margin-bottom:28px}.hero p{max-width:460px;margin-bottom:0}.hero-art{position:relative;min-width:185px;height:150px}.ticket{position:absolute;width:130px;height:145px;background:var(--white);border:1px solid #c7d1be;border-radius:12px;display:grid;place-content:center;gap:8px;text-align:center;box-shadow:0 8px 20px #2943220b;transform:rotate(-12deg);right:52px;top:6px}.ticket.second{transform:rotate(13deg);right:0;top:4px;background:#d9e8be}.ticket .seal{width:62px;height:62px;border:2px dashed #6d8b59;border-radius:50%;display:grid;place-items:center;font-size:32px;color:#58754b}.ticket small{font-size:8px;letter-spacing:2px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:34px}.stat{padding:20px 24px;border:1px solid var(--line);border-radius:9px;background:var(--white);display:flex;align-items:center;justify-content:space-between}.stat b{font-size:30px;font-weight:500}.stat span{font-size:12px;color:var(--muted)}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-heading h2{font-size:17px;margin:0}.search{max-width:220px;font-size:12px!important;padding:9px 12px!important}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(265px,1fr));gap:18px}.card{background:var(--white);border:1px solid var(--line);border-radius:10px;overflow:hidden}.card-body{display:block;width:100%;padding:25px 24px;background:transparent;border:0;text-align:left;color:inherit}.card-body:hover{background:#f4f6ee}.card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.stamp-icon{width:43px;height:43px;display:grid;place-items:center;background:#edf0e2;color:var(--green);border:1px solid #dce3ce;border-radius:12px;font-size:24px}.badge{font-size:10px;color:#667851;background:#eff3e6;border-radius:20px;padding:5px 9px}.card p{margin:0;min-height:44px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--muted);font-size:12px}.card-meta{margin-top:18px;font-size:11px;color:var(--muted);display:flex;justify-content:space-between}.card-footer{display:flex;gap:10px;padding:14px 24px;border-top:1px solid var(--line);background:#fafbf6}.card-footer .button{flex:1}.empty{border:1px dashed #c8cebe;border-radius:10px;padding:42px 24px;text-align:center;background:#f1f3e9}.empty p{font-size:13px;color:var(--muted)}.empty .stamp-icon{margin:0 auto 20px}.auth-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:56px;align-items:center;padding:34px 0}.auth-intro h1{font-size:44px;line-height:1.5}.auth-intro .hero-art{width:210px;margin-top:25px}.auth-panel{padding:34px;background:var(--white);border:1px solid var(--line);border-radius:12px}.tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);margin-bottom:24px}.tabs button{border:0;border-bottom:2px solid transparent;background:none;padding:0 4px 12px;color:var(--muted)}.tabs button.active{border-color:var(--green);color:var(--green);font-weight:700}label{display:block;font-size:12px;font-weight:600;margin:16px 0 7px}input,textarea,select{width:100%;border:1px solid #d5dbcf;background:#fff;border-radius:6px;padding:11px 12px;color:var(--ink);outline:none}input:focus,textarea:focus{border-color:#7e9c6f;box-shadow:0 0 0 3px #7e9c6f16}textarea{resize:vertical;min-height:90px}.full{width:100%;margin-top:22px}.hint{font-size:11px;color:var(--muted);line-height:1.8}.panel{padding:24px;background:var(--white);border:1px solid var(--line);border-radius:10px;margin:18px 0}.stamp-row{display:flex;gap:15px;align-items:center;padding:18px 0;border-bottom:1px solid var(--line)}.stamp-row:last-child{border-bottom:0}.stamp-row .details{flex:1;min-width:0}.stamp-row h3{font-size:15px}.stamp-row p{margin:0;font-size:12px;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}.stamp-row .actions{justify-content:flex-end}.code{font-family:Consolas,monospace;font-size:11px;overflow-wrap:anywhere;background:#edf0e6;padding:10px;border-radius:5px;display:block;white-space:pre-wrap}.back{border:0;background:none;padding:0;margin-bottom:22px;font-size:12px;color:var(--muted)}.description{white-space:pre-wrap;overflow-wrap:anywhere}.qr-image{display:block;width:min(100%,340px);margin:15px auto;image-rendering:pixelated}.qr-status{text-align:center;font-size:13px;color:var(--green)}dialog{position:fixed;border:1px solid var(--line);border-radius:14px;max-width:540px;width:calc(100% - 32px);padding:32px;background:var(--white);color:var(--ink);max-height:90vh;overflow:auto}dialog::backdrop{background:#172a2166;backdrop-filter:blur(3px)}.dialog-close{position:absolute;right:13px;top:10px;border:0;background:none;font-size:26px;color:var(--muted)}#toast{position:fixed;bottom:28px;left:calc(50% + 90px);transform:translateX(-50%);padding:13px 22px;border-radius:8px;background:var(--ink);color:white;font-size:13px;z-index:20;max-width:90vw;box-shadow:0 6px 20px #0002}#toast.error{background:#933e39}footer{padding:22px 0;border-top:1px solid var(--line);font-size:9px;letter-spacing:1.5px;color:var(--muted);display:flex;justify-content:space-between}table{border-collapse:collapse;width:100%;font-size:12px}th,td{padding:12px;text-align:left;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.table-scroll{overflow:auto}.scan-page{max-width:560px;margin:0 auto;padding:25px 20px}.scan-page .brand{font-size:20px;margin-bottom:30px}.scan-page .brand-mark{width:40px;height:40px}.scan-page h1{font-size:28px}.scan-status{padding:16px;background:#eaf0df;border-radius:8px;line-height:1.6;font-size:14px;margin:15px 0}.scan-status.error{background:#f8e6df;color:#9d3934}.collection-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}.collect-stamp{border:1px dashed #c5cdbb;border-radius:9px;padding:20px 8px;text-align:center;min-height:125px;display:flex;flex-direction:column;justify-content:center;gap:10px;color:#8e9887;background:#f4f5ee;font-size:12px}.collect-stamp.collected{background:#e8efd8;border:1px solid #a7bc90;color:var(--green)}.collect-stamp strong{font-size:27px}.progress-track{background:#e3e6d9;height:6px;border-radius:6px;overflow:hidden}.progress-track div{background:var(--green);height:100%;transition:width .4s}.hidden{display:none!important}#reader{overflow:hidden;border-radius:9px}#reader button,#reader select{padding:10px;border-radius:5px;border:1px solid #cad2be;margin:5px}#reader img{max-width:80px}.form-error{font-size:12px;color:var(--red);line-height:1.6;min-height:18px}.notice{padding:13px 16px;border:1px solid #dedcc5;background:#f5f2e4;border-radius:6px;font-size:12px;line-height:1.8}.step{display:flex;gap:15px;align-items:start;margin:18px 0}.step b{background:#e7ecde;border-radius:50%;min-width:28px;height:28px;display:grid;place-items:center}.step p{margin:0;font-size:13px}.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.nowrap{white-space:nowrap}@media(min-width:1450px){main{padding:0 70px}}@media(max-width:1000px){.sidebar{width:200px;padding:30px 18px}main{margin-left:200px;padding:0 28px}.auth-layout{gap:24px}.auth-intro h1{font-size:34px}.auth-panel{padding:24px}.stamp-row{flex-wrap:wrap}.stamp-row .actions{width:100%;justify-content:flex-start}}@media(max-width:720px){.sidebar{position:relative;width:100%;padding:18px 20px;display:block;border-right:0;border-bottom:1px solid var(--line)}.brand{font-size:21px}.brand-mark{height:40px;width:40px}.sidebar nav{display:flex;margin-top:20px;gap:6px}.nav-item{font-size:12px;padding:10px 9px;margin:0;justify-content:center;gap:5px}.workspace-label,.sidebar-note{display:none}.account{position:absolute;right:20px;top:16px;max-width:160px;font-size:10px;padding:0;justify-content:flex-end}main{margin:0;padding:0 20px}header{height:58px}.status-dot{display:none}#content{padding-top:26px}.page-heading{align-items:flex-start}h1{font-size:26px}.hero{padding:24px;min-height:160px}.hero h2{font-size:18px}.hero-art{min-width:112px;transform:scale(.7);transform-origin:right center;margin-left:-45px}.hero p{font-size:12px}.stats{gap:8px;margin-bottom:26px}.stat{padding:15px 12px;display:block}.stat b{display:block;font-size:25px;margin-top:8px}.stat span{font-size:10px}.auth-layout{display:block;padding:0}.auth-intro h1{font-size:30px}.auth-intro .hero-art{display:none}.auth-intro{margin-bottom:30px}.auth-panel{padding:24px}.search{max-width:145px}.split{grid-template-columns:1fr}#toast{left:50%;width:max-content}.page-heading .button{padding:10px 12px;white-space:nowrap}footer span{display:none}.collection-grid{gap:8px}.collect-stamp{font-size:11px}.card-body{padding:22px}}
.card-share{display:grid;grid-template-columns:minmax(0,88px) minmax(0,1fr);align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line);min-width:0;overflow:hidden}
.card-share img{display:block;width:100%;max-width:88px;height:auto;aspect-ratio:1;object-fit:contain;border-radius:6px;background:#fff;flex:none}
.card-share>div{min-width:0;max-width:100%;display:grid;gap:5px;overflow:hidden}
.card-share .hint{display:block;overflow-wrap:anywhere}
.copy-url{appearance:none;-webkit-appearance:none;display:block;box-sizing:border-box;width:100%;max-width:100%;min-width:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--ink);font-family:Consolas,monospace;font-size:10px;line-height:1.5;text-align:left;white-space:normal;overflow-wrap:anywhere;word-break:break-word;cursor:pointer}
.copy-url:hover{text-decoration:underline}
.allowlist{margin-top:14px}.allowlist-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--line)}.allowlist-row:last-child{border-bottom:0}.allowlist-row>div{min-width:0;overflow-wrap:anywhere}.allowlist-row p{margin:4px 0 0}.invite-qr{width:min(100%,260px);image-rendering:pixelated}hr{border:0;border-top:1px solid var(--line);margin:24px 0}
.share-switcher{border-top:1px solid var(--line);min-width:0;overflow:hidden}.share-track{display:flex;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;touch-action:pan-x}.share-track::-webkit-scrollbar{display:none}.share-slide{flex:0 0 100%;width:100%;min-width:100%;scroll-snap-align:start;border-top:0}.share-controls{display:flex;align-items:center;gap:12px;padding:7px 14px;border-top:1px solid var(--line);background:#fafbf6}.share-arrow{width:30px;height:28px;border:1px solid var(--line);border-radius:6px;background:var(--white);color:var(--green);font-size:20px;line-height:1}.share-position{display:flex;align-items:center;gap:7px;margin-left:auto}.share-dot{width:8px;height:8px;padding:0;border:0;border-radius:50%;background:#cbd0c4}.share-dot.active{background:var(--green);transform:scale(1.2)}.share-count{font-size:10px;color:var(--muted);min-width:26px;text-align:center}
.progress-actions{margin-top:16px}
.uid-copy-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin:6px 0 16px}.uid-copy-row .code{margin:0;user-select:all;-webkit-user-select:all}
.key-copy-button{display:block;width:100%;padding:0;border:0;background:transparent;text-align:left}.key-copy-button .code{margin:0;user-select:all;-webkit-user-select:all}.key-copy-button:focus-visible{outline:3px solid #9cb780;outline-offset:3px;border-radius:5px}#close-created-key{margin:10px 0 0 auto}
.local-admin{max-width:1080px;margin:0 auto;padding:32px 24px}.local-admin-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:36px 0 24px}.local-admin-heading h1{margin:4px 0}.local-member-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:14px}.local-member-form label{margin-top:0}.local-member-form .button{margin-bottom:1px;white-space:nowrap}.local-admin .section-heading h2{margin-bottom:3px}.local-admin .actions{gap:8px}.local-admin .actions .button{white-space:nowrap}@media(max-width:720px){.local-admin{padding:22px 16px}.local-admin-heading{align-items:flex-start;margin:26px 0 18px}.local-member-form{grid-template-columns:1fr}.local-admin .section-heading{gap:12px}}

.qr-preview{display:block;width:100%;max-width:88px;padding:0;border:0;background:transparent;line-height:0;cursor:zoom-in}.qr-preview img{display:block;width:100%;max-width:88px;height:auto;aspect-ratio:1;object-fit:contain;border-radius:6px;background:#fff;image-rendering:pixelated}.qr-preview:focus-visible{outline:3px solid #9cb780;outline-offset:3px}.qr-image-large{width:min(100%,460px);max-width:460px;margin:12px auto 18px}.qr-image-caption{text-align:center;margin:0}

.backup-settings{display:grid;grid-template-columns:minmax(170px,1fr) minmax(140px,1fr) minmax(120px,.7fr) auto;align-items:end;gap:14px}.backup-toggle{display:flex;align-items:center;gap:9px;margin:0 0 12px}.backup-toggle input{width:auto}.backup-list-heading{margin:22px 0 10px}.backup-list-heading h3{margin:0;font-size:14px}.backup-list-heading .button{margin:0}@media(max-width:720px){.backup-settings{grid-template-columns:1fr}.backup-toggle{margin:0}.backup-list-heading{align-items:flex-start}}
