:root{--tf-brand: #6f8f2e;--tf-brand-strong: #54701d;--tf-brand-deep: #415719;--tf-brand-soft: #eaf1d8;--tf-brand-tint: #f1f5e6;--tf-sun: #e0a32a;--tf-sun-soft: #fbeecb;--tf-leaf: #6f8f2e;--tf-leaf-soft: #eaf1d8;--tf-sky: #2f7dc4;--tf-sky-soft: #dcebf8;--tf-plum: #8257c9;--tf-plum-soft: #ece2fb;--tf-slate: #5f7184;--tf-slate-soft: #e6ebf1;--tf-ink: #3d3f39;--tf-ink-2: #4f5544;--tf-muted: #7c8270;--tf-line: #e9ecdd;--tf-line-strong: #d8ddc6;--tf-cream: #fafbf3;--tf-cream-2: #f0f3e2;--tf-surface: #ffffff;--tf-danger: #cb4444;--tf-danger-soft: #fbe3e3;--tf-warn: #b9821a;--tf-ok: var(--tf-brand);--tf-font-display: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--tf-font-body: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--tf-r-sm: 10px;--tf-r-md: 16px;--tf-r-lg: 22px;--tf-r-xl: 30px;--tf-r-pill: 999px;--tf-shadow-sm: 0 1px 2px rgba(60, 70, 30, .06), 0 2px 6px rgba(60, 70, 30, .05);--tf-shadow-md: 0 6px 18px rgba(60, 75, 25, .1);--tf-shadow-lg: 0 18px 48px rgba(55, 70, 20, .16);--tf-ring: 0 0 0 3px rgba(111, 143, 46, .4);--tf-sp-1: 4px;--tf-sp-2: 8px;--tf-sp-3: 12px;--tf-sp-4: 16px;--tf-sp-5: 24px;--tf-sp-6: 32px;--tf-sp-7: 48px;--tf-sp-8: 64px;--tf-maxw: min(94vw, 1640px)}.src-totalfree{--src: var(--tf-leaf);--src-soft: var(--tf-leaf-soft)}.src-sponsored{--src: var(--tf-sky);--src-soft: var(--tf-sky-soft)}.src-partner{--src: var(--tf-plum);--src-soft: var(--tf-plum-soft)}.src-learning,.src-external{--src: var(--tf-slate);--src-soft: var(--tf-slate-soft)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--tf-font-body);color:var(--tf-ink);background:radial-gradient(1200px 600px at 100% -10%,var(--tf-cream-2),transparent 60%),radial-gradient(900px 500px at -10% 0%,#eef3df,transparent 55%),var(--tf-cream);background-attachment:fixed;line-height:1.55;min-height:100vh;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--tf-font-display);line-height:1.1;letter-spacing:-.01em;color:var(--tf-ink);font-weight:600}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font-family:inherit;cursor:pointer}:focus-visible{outline:none;box-shadow:var(--tf-ring);border-radius:var(--tf-r-sm)}::selection{background:var(--tf-brand-soft)}.container{width:100%;max-width:var(--tf-maxw);margin:0 auto;padding:0 var(--tf-sp-5)}.stack{display:flex;flex-direction:column}.row{display:flex;align-items:center}.wrap{flex-wrap:wrap}.gap-1{gap:var(--tf-sp-1)}.gap-2{gap:var(--tf-sp-2)}.gap-3{gap:var(--tf-sp-3)}.gap-4{gap:var(--tf-sp-4)}.gap-5{gap:var(--tf-sp-5)}.muted{color:var(--tf-muted)}.center{text-align:center}.hide{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.skip-link{position:absolute;left:12px;top:-48px;z-index:100;background:var(--tf-brand-strong);color:#fff;padding:10px 16px;border-radius:var(--tf-r-md);font-weight:700;transition:top .15s ease}.skip-link:focus{top:12px;box-shadow:var(--tf-shadow-md)}#main:focus{outline:none}.spacer{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--tf-r-md);padding:11px 18px;font-weight:600;font-size:.95rem;transition:transform .08s ease,box-shadow .15s ease,background .15s ease,border-color .15s ease;white-space:nowrap}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--tf-brand-strong);color:#fff;box-shadow:var(--tf-shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--tf-brand-deep);box-shadow:var(--tf-shadow-md)}.btn-secondary{background:var(--tf-surface);color:var(--tf-ink);border-color:var(--tf-line-strong)}.btn-secondary:hover:not(:disabled){border-color:var(--tf-brand);color:var(--tf-brand-strong)}.btn-ghost{background:transparent;color:var(--tf-ink-2)}.btn-ghost:hover:not(:disabled){background:var(--tf-brand-tint);color:var(--tf-brand-strong)}.btn-danger{background:var(--tf-danger-soft);color:var(--tf-danger)}.btn-danger:hover:not(:disabled){background:#f7d2d2}.btn-sm{padding:7px 13px;font-size:.85rem;border-radius:var(--tf-r-sm)}.btn-lg{padding:14px 24px;font-size:1.02rem}.btn-block{width:100%}.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--tf-line-strong);background:var(--tf-surface);color:var(--tf-ink-2);border-radius:var(--tf-r-pill);padding:7px 14px;font-size:.85rem;font-weight:600;transition:all .12s ease}.chip:hover{border-color:var(--tf-brand);color:var(--tf-brand-strong)}.chip.active{background:var(--tf-ink);color:#fff;border-color:var(--tf-ink)}.chip .dot{width:9px;height:9px;border-radius:50%;background:var(--src, var(--tf-brand))}.chip.active .dot{box-shadow:0 0 0 2px #fff6}.badge{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;padding:4px 10px;border-radius:var(--tf-r-pill);background:var(--src-soft, var(--tf-cream-2));color:var(--src, var(--tf-ink));border:1px solid color-mix(in srgb,var(--src, var(--tf-brand)) 35%,transparent)}.badge .dot{width:7px;height:7px;border-radius:50%;background:var(--src, var(--tf-brand))}.badge-kind{background:var(--tf-cream-2);color:var(--tf-ink-2);border-color:var(--tf-line-strong);text-transform:none}.badge-donation{background:#fff4d6;color:#8a5a00;border-color:#e8c879;text-transform:none}.pill-soft{background:var(--tf-brand-tint);color:var(--tf-brand-strong);border-radius:var(--tf-r-pill);padding:4px 12px;font-size:.78rem;font-weight:700}.card{background:var(--tf-surface);border:1px solid var(--tf-line);border-radius:var(--tf-r-lg);box-shadow:var(--tf-shadow-sm)}.panel{background:var(--tf-surface);border:1px solid var(--tf-line);border-radius:var(--tf-r-lg);padding:var(--tf-sp-5);box-shadow:var(--tf-shadow-sm)}.section-label{font-size:.76rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--tf-brand-strong)}.field{display:flex;flex-direction:column;gap:6px}.field>span,.field-label{font-size:.85rem;font-weight:600;color:var(--tf-ink-2)}.input,.select,.textarea{width:100%;border:1.5px solid var(--tf-line-strong);background:var(--tf-surface);border-radius:var(--tf-r-md);padding:11px 14px;font-size:.96rem;color:var(--tf-ink);font-family:inherit;transition:border-color .12s ease,box-shadow .12s ease}.input::placeholder,.textarea::placeholder{color:#b7a99b}.input:focus,.select:focus,.textarea:focus{border-color:var(--tf-brand);box-shadow:var(--tf-ring);outline:none}.textarea{resize:vertical;min-height:96px;line-height:1.5}.field-hint{font-size:.78rem;color:var(--tf-muted)}.field-error{font-size:.8rem;color:var(--tf-danger);font-weight:600}.toast-wrap{position:fixed;left:50%;bottom:26px;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;width:min(440px,calc(100vw - 32px))}.toast{background:var(--tf-ink);color:#fff;border-radius:var(--tf-r-md);border:0;width:100%;padding:13px 16px;font:inherit;font-size:.92rem;text-align:left;cursor:pointer;box-shadow:var(--tf-shadow-lg);display:flex;gap:10px;align-items:flex-start;animation:toastIn .22s ease}.toast.ok{background:#1d6f4f}.toast.error{background:#b13b3b}.toast:focus-visible{outline:3px solid var(--tf-focus);outline-offset:2px}@keyframes toastIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b201773;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:90;display:flex;align-items:center;justify-content:center;padding:20px;animation:toastIn .15s ease}.modal-scrim{position:absolute;top:0;right:0;bottom:0;left:0;border:0;padding:0;background:transparent;cursor:default}.modal{position:relative;z-index:1;background:var(--tf-surface);border-radius:var(--tf-r-xl);width:min(520px,100%);max-height:90vh;overflow:auto;box-shadow:var(--tf-shadow-lg)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 6px}.modal-body{padding:8px 24px 24px}.nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--tf-cream) 80%,transparent);-webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid var(--tf-line)}.nav-inner{display:flex;align-items:center;gap:var(--tf-sp-4);height:68px}.brand{display:flex;align-items:center;gap:11px}.brand-mark{width:42px;height:42px;display:block;object-fit:contain;-webkit-user-select:none;user-select:none}.brand-name{font-family:var(--tf-font-display);font-weight:700;font-size:1.22rem;line-height:1}.brand-tag{font-size:.72rem;color:var(--tf-muted);font-weight:600}.nav-links{display:flex;gap:4px;margin-left:8px}.nav-links a{padding:8px 13px;border-radius:var(--tf-r-pill);font-weight:600;font-size:.92rem;color:var(--tf-ink-2)}.nav-links a:hover{background:var(--tf-brand-tint);color:var(--tf-brand-strong)}.nav-links a.active{background:var(--tf-brand-soft);color:var(--tf-brand-strong)}.avatar{width:38px;height:38px;border-radius:50%;background:var(--tf-leaf-soft);color:var(--tf-leaf);display:grid;place-items:center;font-weight:700;border:2px solid #fff;box-shadow:var(--tf-shadow-sm)}.menu{position:relative}.menu-pop{position:absolute;right:0;top:calc(100% + 8px);background:#fff;border:1px solid var(--tf-line);border-radius:var(--tf-r-md);box-shadow:var(--tf-shadow-lg);min-width:210px;overflow:hidden;z-index:60}.menu-pop a,.menu-pop button{display:flex;width:100%;text-align:left;gap:10px;padding:11px 15px;background:none;border:none;font-size:.92rem;color:var(--tf-ink);font-weight:600}.menu-pop a:hover,.menu-pop button:hover{background:var(--tf-brand-tint);color:var(--tf-brand-strong)}.menu-pop .sep{height:1px;background:var(--tf-line)}.bell{position:relative;width:40px;height:40px;border-radius:12px;border:1px solid var(--tf-line-strong);background:#fff;font-size:1.1rem;display:grid;place-items:center}.bell:hover{border-color:var(--tf-brand);background:var(--tf-brand-tint)}.bell-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--tf-coral, #e8521f);background:#d9534f;color:#fff;font-size:.68rem;font-weight:800;display:grid;place-items:center;border:2px solid var(--tf-cream)}.notif-pop{width:min(340px,calc(100vw - 24px))}.notif-list{max-height:380px;overflow:auto}.notif-item{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;padding:11px 15px;background:none;border:none;border-bottom:1px solid var(--tf-line)}.notif-item:hover{background:var(--tf-brand-tint)}.notif-item.unread{background:var(--tf-brand-soft)}.notif-ic{font-size:1.1rem;line-height:1.2}.notif-text{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.notif-text strong{font-size:.9rem}.notif-body{font-size:.82rem;color:var(--tf-ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notif-time{font-size:.72rem;color:var(--tf-muted)}.notif-dot{width:8px;height:8px;border-radius:50%;background:var(--tf-brand);margin-top:6px;flex:none}.nav-biz{flex:none;font-size:.85rem;font-weight:600;color:var(--tf-muted);padding:7px 12px;border-radius:var(--tf-r-pill);border:1px solid var(--tf-line-strong)}.nav-biz:hover{color:var(--tf-brand-strong);border-color:var(--tf-brand);background:var(--tf-brand-tint)}.nav-biz-mobile,.nav-toggle{display:none}.page{padding:var(--tf-sp-6) 0 var(--tf-sp-8);animation:fade .25s ease}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.grid-2{display:grid;grid-template-columns:2.4fr 1fr;gap:var(--tf-sp-5);align-items:start}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--tf-sp-5)}.hero{position:relative;border-radius:var(--tf-r-lg);overflow:hidden;padding:clamp(18px,2vw,28px) clamp(22px,3vw,44px) calc(clamp(18px,2vw,28px) + 32px);color:#fff;background:linear-gradient(120deg,#7a9b33,#4f8f5a 60%,#38743f);box-shadow:var(--tf-shadow-md)}.hero:after{content:"";position:absolute;right:-60px;top:-80px;width:280px;height:280px;background:radial-gradient(circle,rgba(255,255,255,.22),transparent 70%)}.hero h1{color:#fff;font-size:clamp(1.4rem,2.2vw,1.9rem);max-width:34ch}.hero p{color:#ffffffeb;max-width:78ch;margin-top:6px;font-size:.95rem}.hero-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.hero-badge{background:#ffffff2e;border:1px solid rgba(255,255,255,.3);color:#fff;padding:6px 13px;border-radius:var(--tf-r-pill);font-size:.82rem;font-weight:700}.search-console{margin-top:-28px;position:relative;z-index:2}.search-row{display:grid;grid-template-columns:2fr 1.2fr auto;gap:var(--tf-sp-3)}.filter-block{margin-top:var(--tf-sp-4)}.filter-block .filter-label{font-size:.78rem;font-weight:700;color:var(--tf-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;display:block}.chips{display:flex;gap:8px;flex-wrap:wrap}.legend-toggle{background:none;border:none;color:var(--tf-brand-strong);font-weight:700;font-size:.8rem;text-decoration:underline;text-underline-offset:2px}.legend-toggle:hover{color:var(--tf-brand-deep)}.source-legend{list-style:none;padding:14px 16px;margin-top:12px;display:grid;gap:10px;background:var(--tf-brand-tint);border:1px solid var(--tf-line);border-radius:var(--tf-r-md)}.source-legend li{display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:center;font-size:.88rem;color:var(--tf-ink-2)}@media (max-width: 560px){.source-legend li{grid-template-columns:1fr;gap:4px}}.listing{display:flex;flex-direction:column;overflow:hidden;transition:transform .12s ease,box-shadow .15s ease}.listing:hover{transform:translateY(-3px);box-shadow:var(--tf-shadow-md)}.listing-media{aspect-ratio:16/10;background:linear-gradient(135deg,var(--src-soft, var(--tf-cream-2)),#fff);display:grid;place-items:center;position:relative;overflow:hidden}.listing-media img{width:100%;height:100%;object-fit:cover}.listing-media img.as-logo{width:auto;height:auto;max-width:82%;max-height:74%;object-fit:contain;background:#fff;padding:10px;border-radius:10px}.listing-media .emoji{font-size:2.6rem;filter:saturate(1.1)}.tile-fallback{display:flex;flex-direction:column;align-items:center;gap:6px}.tile-fallback .tile-cap{font-family:var(--tf-font-display);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--src, var(--tf-muted));font-weight:700;opacity:.85}.perm-matrix{border-collapse:separate;border-spacing:0;font-size:.88rem;width:100%}.perm-matrix th,.perm-matrix td{border-right:1px solid var(--tf-line);border-bottom:1px solid var(--tf-line);padding:9px 12px;vertical-align:middle}.perm-matrix thead th{background:var(--tf-cream-2);text-align:center;border-top:1px solid var(--tf-line);font-weight:700}.perm-matrix thead th:first-child,.perm-matrix td:first-child{text-align:left;border-left:1px solid var(--tf-line)}.perm-matrix th:not(:first-child),.perm-matrix td:not(:first-child){text-align:center;width:130px}.perm-matrix .cat-row td{background:var(--tf-cream-2);font-weight:700;font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:var(--tf-ink-2)}.perm-matrix tbody tr:not(.cat-row):hover td{background:var(--tf-brand-soft, #f3f6ea)}.perm-matrix input[type=checkbox]{width:17px;height:17px}.perm-matrix .role-del{margin-left:6px;border:none;background:none;color:var(--tf-warn, #c0392b);cursor:pointer;font-size:1rem;line-height:1}.sec-list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--tf-line);border-radius:var(--tf-r-md);margin-bottom:8px;cursor:pointer;background:#fff;transition:border-color .12s ease,box-shadow .12s ease}.sec-list-row:hover{border-color:var(--tf-brand);box-shadow:var(--tf-shadow-sm, 0 1px 4px rgba(0,0,0,.06))}.sec-list-row:focus-visible{outline:3px solid var(--tf-focus);outline-offset:2px}.switch-row{display:flex;align-items:flex-start;gap:12px;margin-bottom:20px;background:var(--tf-brand-soft);padding:12px 14px;border-radius:var(--tf-r-md)}.subgrid{margin-bottom:22px}.subgrid-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}.btn-add-existing{flex:none;border:1px solid var(--tf-brand);color:var(--tf-brand-strong);background:#fff;font-weight:700;font-size:.82rem;padding:7px 12px;border-radius:var(--tf-r-pill);cursor:pointer;white-space:nowrap;transition:background .12s ease}.btn-add-existing:hover:not(:disabled){background:var(--tf-brand-soft)}.btn-add-existing:disabled{opacity:.45;cursor:not-allowed}.btn-add-existing.open{background:var(--tf-brand);color:#fff}.add-picker{position:relative;z-index:2;width:max-content;min-width:250px;max-width:340px;margin:6px 0 14px auto;background:#fff;border:1.5px solid var(--tf-brand);border-radius:var(--tf-r-md);box-shadow:0 14px 32px #2b201738;overflow:hidden;animation:pickerPop .12s ease}.add-picker:before{content:"";position:absolute;top:-7px;right:26px;width:12px;height:12px;background:var(--tf-brand-soft);border-left:1.5px solid var(--tf-brand);border-top:1.5px solid var(--tf-brand);transform:rotate(45deg)}@keyframes pickerPop{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}.add-picker-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px 9px 14px;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--tf-brand-strong);background:var(--tf-brand-soft);border-bottom:1px solid var(--tf-line)}.add-picker-close{border:none;background:none;color:var(--tf-brand-strong);cursor:pointer;font-size:.8rem;line-height:1;padding:2px 4px;border-radius:6px}.add-picker-close:hover{background:#0000000f}.add-picker-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:none;background:none;padding:11px 16px;font-size:.92rem;color:var(--tf-ink);cursor:pointer}.add-picker-item+.add-picker-item{border-top:1px solid var(--tf-line)}.add-picker-item:hover{background:var(--tf-brand-soft);color:var(--tf-brand-strong)}.add-picker-plus{display:inline-grid;place-items:center;width:19px;height:19px;border-radius:50%;background:var(--tf-brand-soft);color:var(--tf-brand-strong);font-weight:800;font-size:.9rem;line-height:1;flex:none}.add-picker-item:hover .add-picker-plus{background:var(--tf-brand);color:#fff}.add-picker-empty{padding:11px 16px;color:var(--tf-muted);font-size:.85rem}.related-list{display:flex;flex-direction:column;gap:6px}.related-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border:1px solid var(--tf-line);border-radius:var(--tf-r-sm);background:#fff;font-size:.92rem}.related-remove{flex:none;border:none;background:none;color:var(--tf-warn, #c0392b);font-size:1.25rem;line-height:1;cursor:pointer;padding:0 4px;border-radius:6px}.related-remove:hover{background:var(--tf-sun-soft, #fbeeea)}.related-empty{padding:10px 2px;color:var(--tf-muted);font-size:.85rem;font-style:italic}.input-wrap{position:relative;display:block}.input-wrap .input{padding-right:44px;width:100%}.input-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:none;background:none;color:var(--tf-muted);cursor:pointer;padding:7px;border-radius:8px;display:grid;place-items:center}.input-eye:hover{color:var(--tf-ink);background:var(--tf-cream-2)}.loc-field{display:flex;gap:8px;align-items:stretch}.loc-field .input{flex:1}.loc-map-btn{flex:none;border:1px solid var(--tf-line-strong);background:#fff;border-radius:var(--tf-r-md);padding:0 14px;font-weight:600;font-size:.85rem;cursor:pointer;white-space:nowrap;color:var(--tf-ink-2)}.loc-map-btn:hover{border-color:var(--tf-brand);color:var(--tf-brand-strong)}.loc-map-btn.active{background:var(--tf-brand-soft);border-color:var(--tf-brand);color:var(--tf-brand-strong)}.loc-map{height:240px;border-radius:var(--tf-r-md);overflow:hidden;border:1px solid var(--tf-line);margin-top:10px;z-index:0}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid-3{display:grid;grid-template-columns:1.2fr 1.2fr .8fr;gap:14px}@media (max-width: 560px){.form-grid-2,.form-grid-3{grid-template-columns:1fr}.loc-field{flex-direction:column}.loc-map-btn{padding:10px 14px}}.give-cta{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;background:var(--tf-brand-soft);border-color:var(--tf-brand)}.give-card{display:flex;flex-direction:column;padding:18px}.give-card .btn{margin-top:auto}.listing-media .top-badges{position:absolute;top:10px;left:10px;right:10px;display:flex;justify-content:space-between;align-items:flex-start;gap:6px}.listing-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;flex:1}.listing-body h3{font-size:1.08rem}.listing-desc{color:var(--tf-ink-2);font-size:.9rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.listing-meta{display:flex;gap:10px;flex-wrap:wrap;color:var(--tf-muted);font-size:.8rem;margin-top:auto}.listing-meta span{display:inline-flex;align-items:center;gap:4px}.sponsor-note{font-size:.76rem;color:var(--tf-warn);background:var(--tf-sun-soft);padding:6px 10px;border-radius:var(--tf-r-sm)}.card-actions{display:flex;gap:8px;margin-top:4px}.source-counts{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:var(--tf-sp-4)}.source-counts .badge{cursor:default}.map-panel{position:sticky;top:84px}.map-panel.full{position:static}.map-host-wrap{position:relative}.map-panel.maximized{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;margin:0;width:100%;max-width:none;height:100%;border-radius:0;overflow:auto;background:var(--tf-surface)}.map-panel.maximized .leaflet-host{height:calc(100vh - 96px)}.map-locate-btn{position:absolute;top:12px;right:12px;z-index:500;border:1px solid var(--tf-brand);background:#fff;color:var(--tf-brand-strong);font-weight:700;font-size:.85rem;padding:9px 14px;border-radius:var(--tf-r-pill);cursor:pointer;box-shadow:var(--tf-shadow-sm, 0 2px 8px rgba(0,0,0,.15))}.map-locate-btn:hover:not(:disabled){background:var(--tf-brand-soft)}.map-locate-btn:disabled{opacity:.6;cursor:default}.leaflet-host{height:380px;border-radius:var(--tf-r-md);overflow:hidden;border:1px solid var(--tf-line);z-index:0}.leaflet-host.full{height:72vh;min-height:460px}.leaflet-host .leaflet-control-attribution{font-size:10px}.leaflet-popup-content{font-family:var(--tf-font-body)}.map-canvas{position:relative;aspect-ratio:1/1;border-radius:var(--tf-r-md);overflow:hidden;background:linear-gradient(0deg,#eaf5ee,#eaf5ee),repeating-linear-gradient(0deg,transparent,transparent 22px,rgba(31,157,107,.07) 23px),repeating-linear-gradient(90deg,transparent,transparent 22px,rgba(31,157,107,.07) 23px);border:1px solid var(--tf-line)}.map-pin{position:absolute;transform:translate(-50%,-50%);width:26px;height:26px;border-radius:50% 50% 50% 2px;background:var(--src, var(--tf-brand));color:#fff;display:grid;place-items:center;font-size:.68rem;font-weight:800;border:2px solid #fff;box-shadow:var(--tf-shadow-sm);transition:transform .1s ease}.map-pin:hover{transform:translate(-50%,-50%) scale(1.18);z-index:3}.map-label{position:absolute;font-size:.72rem;color:var(--tf-leaf);font-weight:700;background:#ffffffb3;padding:1px 6px;border-radius:6px}.map-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--tf-muted);font-size:.85rem;text-align:center;padding:20px}.empty{text-align:center;padding:var(--tf-sp-7) var(--tf-sp-5);border:2px dashed var(--tf-line-strong);border-radius:var(--tf-r-lg);background:#fffdfa}.empty .emoji{font-size:2.4rem}.empty h3{margin-top:8px}.empty p{color:var(--tf-muted);max-width:40ch;margin:6px auto 16px}.auth-wrap{max-width:460px;margin:0 auto}.tabs{display:flex;gap:4px;background:var(--tf-cream-2);padding:5px;border-radius:var(--tf-r-pill)}.tabs button{flex:1;border:none;background:transparent;padding:9px;border-radius:var(--tf-r-pill);font-weight:700;color:var(--tf-ink-2)}.tabs button.active{background:#fff;color:var(--tf-brand-strong);box-shadow:var(--tf-shadow-sm)}.admin-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:22px;margin-top:18px;align-items:start}.admin-nav{position:sticky;top:84px;background:var(--tf-surface);border:1px solid var(--tf-line);border-radius:var(--tf-r-lg);padding:10px}.admin-nav .nav-group{font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--tf-muted);padding:10px 10px 4px}.admin-nav button{display:flex;width:100%;align-items:center;gap:8px;border:none;background:none;text-align:left;padding:9px 10px;border-radius:var(--tf-r-md);font-weight:600;font-size:.9rem;color:var(--tf-ink-2);cursor:pointer}.admin-nav button:hover{background:var(--tf-brand-tint);color:var(--tf-brand-strong)}.admin-nav button.active{background:var(--tf-brand-soft);color:var(--tf-brand-strong);font-weight:700}.admin-nav button .count{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--tf-line);color:var(--tf-ink-2);font-size:.72rem;font-weight:800;display:inline-grid;place-items:center}.admin-nav button.active .count{background:#fff;color:var(--tf-brand-strong)}.admin-nav button .count.hot{background:#fdebd2;color:#b95d10}@media (max-width: 860px){.admin-layout{grid-template-columns:1fr}.admin-nav{position:static;display:flex;overflow-x:auto;gap:2px;padding:6px}.admin-nav .nav-group{display:none}.admin-nav button{width:auto;white-space:nowrap}}.admin-tabs{display:flex;gap:4px;background:var(--tf-cream-2);padding:5px;border-radius:var(--tf-r-pill);flex-wrap:wrap;margin-top:16px}.admin-tabs button{display:inline-flex;align-items:center;gap:7px;border:none;background:transparent;padding:9px 14px;border-radius:var(--tf-r-pill);font-weight:700;font-size:.9rem;color:var(--tf-ink-2);white-space:nowrap}.admin-tabs button:hover{color:var(--tf-brand-strong)}.admin-tabs button.active{background:#fff;color:var(--tf-brand-strong);box-shadow:var(--tf-shadow-sm)}.admin-tabs .count{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--tf-line);color:var(--tf-ink-2);font-size:.72rem;font-weight:800;display:inline-grid;place-items:center}.admin-tabs button.active .count{background:var(--tf-brand-soft);color:var(--tf-brand-strong)}.admin-tabs .count.hot{background:#fdebd2;color:#b95d10}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:16px}.admin-stat{background:var(--tf-surface);border:1px solid var(--tf-line);border-radius:var(--tf-r-md);padding:12px 14px;text-align:left;font-family:inherit;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease}.admin-stat:hover{border-color:var(--tf-brand);box-shadow:var(--tf-shadow-sm)}.admin-stat b{display:block;font-size:1.35rem;line-height:1.2}.admin-stat span{font-size:.78rem;color:var(--tf-muted);font-weight:600}@media (max-width: 700px){.admin-tabs button{padding:8px 10px;font-size:.82rem}}.segment{display:inline-flex;background:var(--tf-cream-2);border-radius:var(--tf-r-pill);padding:4px}.segment button{border:none;background:transparent;padding:7px 14px;border-radius:var(--tf-r-pill);font-weight:600;font-size:.88rem;color:var(--tf-ink-2)}.segment button.active{background:#fff;color:var(--tf-brand-strong);box-shadow:var(--tf-shadow-sm)}.list-row{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--tf-line);border-radius:var(--tf-r-md);background:#fff}.list-row+.list-row{margin-top:10px}.list-row-click{transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease}.list-row-click:hover{border-color:var(--tf-brand);box-shadow:var(--tf-shadow-sm);transform:translateY(-1px)}.list-row-click:focus-visible{outline:3px solid var(--tf-focus);outline-offset:2px}.thread{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow:auto;padding:4px}.bubble{max-width:78%;padding:9px 13px;border-radius:16px;font-size:.9rem}.bubble.mine{align-self:flex-end;background:var(--tf-brand);color:#fff;border-bottom-right-radius:5px}.bubble.theirs{align-self:flex-start;background:var(--tf-cream-2);color:var(--tf-ink);border-bottom-left-radius:5px}.bubble small{display:block;opacity:.7;font-size:.7rem;margin-top:3px}.modal-lg{width:min(680px,100%)}.modal-lg .thread{max-height:min(56vh,480px)}.chat-compose-wrap{display:flex;flex-direction:column;gap:8px}.chat-compose{display:flex;gap:8px;align-items:center}.chat-compose .input{flex:1}.chat-attach-btn{flex:none;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--tf-line-strong);background:#fff;border-radius:50%;color:var(--tf-ink-2);cursor:pointer;transition:all .12s ease}.chat-attach-btn:hover:not(:disabled){border-color:var(--tf-brand);color:var(--tf-brand-strong);background:var(--tf-brand-soft)}.chat-attach-btn:disabled{opacity:.5;cursor:not-allowed}.chat-pending{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--tf-cream-2);border:1px solid var(--tf-line);border-radius:var(--tf-r-md)}.chat-pending-thumb{width:48px;height:48px;object-fit:cover;border-radius:8px;flex:none}.chat-pending-loc{display:inline-flex;align-items:center;gap:6px;font-size:.86rem;color:var(--tf-ink);font-weight:600}.chat-pending .muted-grow{flex:1}.chat-pending-map{width:132px;flex:none}.chat-pending-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.chat-thumbs{display:flex;flex-wrap:wrap;gap:8px;flex:1}.chat-thumb{position:relative;width:56px;height:56px;flex:none}.chat-thumb img{width:100%;height:100%;object-fit:cover;border-radius:8px}.chat-thumb-x{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;border:2px solid var(--tf-surface);background:var(--tf-ink);color:#fff;font-size:.58rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.chat-thumb-add{width:56px;height:56px;flex:none;border:1px dashed var(--tf-line-strong);border-radius:8px;background:#fff;color:var(--tf-ink-2);font-size:1.3rem;cursor:pointer}.chat-thumb-add:hover{border-color:var(--tf-brand);color:var(--tf-brand-strong)}.msg-gallery{display:grid;grid-template-columns:1fr 1fr;gap:4px;max-width:min(260px,64vw)}.msg-gallery.one{display:block;max-width:min(240px,62vw)}.msg-gallery .msg-img{width:100%;max-width:none}.msg-gallery:not(.one) .msg-img{aspect-ratio:1 / 1;object-fit:cover}.msg-img{display:block;max-width:min(240px,62vw);border-radius:12px;cursor:zoom-in}.msg-loc{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:12px;color:inherit;text-decoration:none}.bubble.mine .msg-loc{background:#ffffff2e}.bubble.theirs .msg-loc{background:#fff;border:1px solid var(--tf-line)}.msg-loc svg{flex:none}.msg-loc-text{display:flex;flex-direction:column;line-height:1.25}.msg-loc-text b{font-size:.9rem}.msg-loc-text span{font-size:.72rem;opacity:.8}.picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b201780;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:110;display:flex;align-items:center;justify-content:center;padding:20px;animation:toastIn .15s ease}.picker-scrim{position:absolute;top:0;right:0;bottom:0;left:0;border:0;padding:0;background:transparent;cursor:default}.picker-card{position:relative;z-index:1;background:var(--tf-surface);border-radius:var(--tf-r-xl);width:min(720px,100%);max-height:92vh;overflow:hidden;box-shadow:var(--tf-shadow-lg);display:flex;flex-direction:column}.picker-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--tf-line)}.picker-map{height:min(58vh,460px);width:100%;z-index:0}.picker-foot{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid var(--tf-line);flex-wrap:wrap}.picker-coords{flex:1;min-width:140px;font-size:.82rem}.picker-card.maximized{width:96vw;height:94vh;max-height:94vh}.picker-card.maximized .picker-map{height:auto;flex:1 1 auto;min-height:0}.picker-max-btn{width:34px;height:34px;flex:none;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--tf-line-strong);background:#fff;border-radius:8px;color:var(--tf-ink);cursor:pointer}.picker-max-btn:hover{border-color:var(--tf-brand);color:var(--tf-brand-strong);background:var(--tf-brand-soft)}.picker-search-wrap{position:relative;z-index:3;padding:10px 16px;border-bottom:1px solid var(--tf-line)}.picker-search{display:flex;gap:8px}.picker-search .input{flex:1}.picker-results{position:absolute;left:16px;right:16px;top:calc(100% - 2px);margin:0;padding:6px;list-style:none;background:var(--tf-surface);border:1px solid var(--tf-line);border-radius:var(--tf-r-md);box-shadow:var(--tf-shadow-lg);max-height:240px;overflow:auto;z-index:5}.picker-results li{margin:0}.picker-results button{display:block;width:100%;text-align:left;padding:8px 10px;background:none;border:0;border-radius:8px;cursor:pointer;font-size:.85rem;color:var(--tf-ink)}.picker-results button:hover{background:var(--tf-brand-soft);color:var(--tf-brand-strong)}.leaflet-bar a.picker-locate-ctrl{display:flex;align-items:center;justify-content:center;color:#333}.leaflet-bar a.picker-locate-ctrl:hover{color:var(--tf-brand-strong)}.switch{position:relative;width:46px;height:26px;flex:none}.switch input{opacity:0;width:0;height:0}.switch .track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--tf-line-strong);border-radius:var(--tf-r-pill);transition:.15s}.switch .track:before{content:"";position:absolute;height:20px;width:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s;box-shadow:var(--tf-shadow-sm)}.switch input:checked+.track{background:var(--tf-leaf)}.switch input:checked+.track:before{transform:translate(20px)}.pref-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--tf-line)}.pref-row:last-child{border-bottom:none}.skeleton{background:linear-gradient(90deg,#f3e9dd 25%,#fbf4ec 37%,#f3e9dd 63%);background-size:400% 100%;animation:sk 1.3s ease infinite;border-radius:var(--tf-r-md)}@keyframes sk{0%{background-position:100% 0}to{background-position:0 0}}.spinner{width:18px;height:18px;border:2.5px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.spinner.dark{border-color:var(--tf-line-strong);border-top-color:var(--tf-brand)}@keyframes spin{to{transform:rotate(360deg)}}.footer{border-top:1px solid var(--tf-line);margin-top:var(--tf-sp-8);padding:var(--tf-sp-6) 0;color:var(--tf-muted);font-size:.88rem}.footer a:hover{color:var(--tf-brand-strong)}.trust-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--tf-sp-4)}.trust-item{display:flex;gap:12px;align-items:flex-start}.trust-item .ic{font-size:1.5rem}.detail-media{aspect-ratio:16/9;border-radius:var(--tf-r-lg);overflow:hidden;background:linear-gradient(135deg,var(--src-soft),#fff);display:grid;place-items:center}.detail-media img{width:100%;height:100%;object-fit:cover}.detail-media img.as-logo{width:auto;height:auto;max-width:80%;max-height:80%;object-fit:contain;background:#fff;padding:18px;border-radius:14px;box-shadow:0 1px #0000000a}.detail-media .emoji{font-size:4rem}.kv{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed var(--tf-line);font-size:.92rem}.kv:last-child{border-bottom:none}.kv span:first-child{color:var(--tf-muted)}.kv span:last-child{font-weight:600}.upload-drop{border:2px dashed var(--tf-line-strong);border-radius:var(--tf-r-md);padding:18px;text-align:center;color:var(--tf-muted);background:#fffdfa;transition:border-color .12s}.upload-drop:hover{border-color:var(--tf-brand)}.upload-preview{display:flex;flex-direction:column;gap:8px;align-items:center}.upload-preview img{border-radius:var(--tf-r-md);max-height:220px;box-shadow:var(--tf-shadow-sm)}@media (max-width: 900px){.grid-2{grid-template-columns:1fr}.map-panel{position:static}.search-row{grid-template-columns:1fr}.nav-links{display:none}.nav-links.open{display:flex;position:absolute;top:68px;left:0;right:0;flex-direction:column;background:var(--tf-cream);border-bottom:1px solid var(--tf-line);padding:10px 20px 16px;gap:2px}.nav-toggle{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px;border:1px solid var(--tf-line-strong);background:#fff}.nav-biz{display:none}.nav-biz-mobile{display:block;margin-top:6px;border-top:1px solid var(--tf-line);padding-top:12px;color:var(--tf-muted)}}@media (max-width: 560px){.container{padding:0 var(--tf-sp-4)}.hero{padding:18px 18px 46px}.hero-badge{font-size:.76rem;padding:5px 10px}.cards-grid{grid-template-columns:1fr}.nav-inner{gap:8px;height:60px}.brand{gap:8px}.brand-tag{display:none}.brand-mark{width:36px;height:36px}.brand-name{font-size:1.08rem}.nav .btn-sm{padding:7px 10px;font-size:.82rem}.nav-toggle,.bell{width:38px;height:38px}.avatar{width:34px;height:34px}.nav-links.open{top:60px}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.note{background:#fffdf6;border:1px solid var(--tf-line-strong, #e7e2d6);border-left:4px solid var(--tf-brand, #6f8f2e);border-radius:var(--tf-r-md, 10px);padding:12px 14px;font-size:.9rem}.guide-prose{line-height:1.7;margin-top:18px}.guide-prose h2,.guide-prose h3,.guide-prose h4{margin:1.4em 0 .4em}.guide-prose p{margin:0 0 1em}.guide-prose ul,.guide-prose ol{margin:0 0 1em 1.2em}.guide-prose blockquote{margin:0 0 1em;padding-left:14px;border-left:3px solid var(--tf-line-strong, #e7e2d6);color:var(--tf-muted, #6b6b6b)}.guide-prose pre{background:#2b2b2b;color:#f5f5f5;padding:14px;border-radius:10px;overflow:auto}.guide-prose code{font-family:ui-monospace,monospace;font-size:.92em}.guide-prose :not(pre)>code{background:#f0ede4;padding:1px 5px;border-radius:5px}
