:root{--green:#2f7d4f;--green-dark:#22603c;--green-soft:#e6f2e8;--sun:#f4c542;--ink:#1d2a22;--ink-2:#44524a;--muted:#6b7a71;--line:#dfe6df;--bg:#fbfaf5;--card:#fff;--danger:#c0392b;--warn-bg:#fff6d9;--ok:#2e8b57;--radius:12px;--shadow:0 1px 2px #0000000d, 0 4px 16px #0000000d;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font:16px/1.6 var(--font);color:var(--ink);background:var(--bg);margin:0}img,svg,canvas,video{max-width:100%}a{color:var(--green-dark)}a:hover{color:var(--green)}h1,h2,h3{color:var(--ink);line-height:1.2}h1{margin:.2em 0;font-size:clamp(1.7rem,3.5vw,2.4rem)}h2{margin-top:2em;font-size:1.4rem}h3{font-size:1.1rem}.wrap{max-width:1080px;margin:0 auto;padding:0 20px}.narrow{max-width:760px}.muted{color:var(--muted)}.small{font-size:.85rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.skip{position:absolute;left:-9999px}.skip:focus{background:var(--card);z-index:100;padding:8px 12px;top:12px;left:12px}:focus-visible{outline:3px solid var(--sun);outline-offset:2px}.site-header{background:var(--card);border-bottom:1px solid var(--line);z-index:20;position:sticky;top:0}.header-row{flex-wrap:wrap;align-items:center;gap:24px;min-height:60px;display:flex}.brand{color:var(--ink);align-items:center;gap:10px;font-size:1.1rem;font-weight:700;text-decoration:none;display:flex}.hub-nav{flex-wrap:wrap;gap:4px;display:flex}.hub-nav a{color:var(--ink-2);border-radius:8px;padding:6px 10px;font-size:.95rem;text-decoration:none}.hub-nav a:hover,.hub-nav a[aria-current=page]{background:var(--green-soft);color:var(--green-dark)}@media (width<=700px){.site-header{position:static}.header-row{gap:0;min-height:0;padding-top:10px}.brand{font-size:1rem}.brand svg{width:26px;height:26px}.hub-nav{scrollbar-width:none;flex-wrap:nowrap;gap:6px;width:calc(100% + 40px);margin:6px -20px 0;padding:0 20px 10px;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000,#000 16px calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#0000,#000 16px calc(100% - 24px),#0000)}.hub-nav::-webkit-scrollbar{display:none}.hub-nav a{white-space:nowrap;border:1px solid var(--line);border-radius:999px;flex:none;padding:5px 12px;font-size:.9rem}.hub-nav a[aria-current=page]{border-color:#0000}}.site-footer{border-top:1px solid var(--line);background:var(--card);margin-top:64px;padding:32px 0 16px}.footer-grid{grid-template-columns:2fr 1fr 1fr;gap:24px;display:grid}.footer-grid nav{flex-direction:column;gap:4px;display:flex}.footer-brand{margin:0 0 4px;font-weight:700}.footer-h{margin:0 0 4px;font-weight:600}.linklike{color:var(--green-dark);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0;text-decoration:underline}@media (width<=700px){.footer-grid{grid-template-columns:1fr}}.hero{background:linear-gradient(180deg, var(--green-soft), var(--bg));text-align:center;padding:48px 0 24px}.lead{color:var(--ink-2);font-size:1.15rem}.search input{border:1px solid var(--line);width:min(560px,100%);box-shadow:var(--shadow);border-radius:999px;padding:14px 18px;font-size:1.05rem}.hub-section h2 a{color:var(--ink);text-decoration:none}.card-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin:16px 0;display:grid}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.tool-card{color:var(--ink);grid-template-columns:auto 1fr;gap:2px 12px;padding:14px 16px;text-decoration:none;transition:transform .12s,border-color .12s;display:grid}.tool-card:hover{border-color:var(--green);color:var(--ink);transform:translateY(-2px)}.card-icon{grid-row:span 2;font-size:1.6rem;line-height:1.2}.card-name{font-weight:650}.card-desc{color:var(--muted);font-size:.88rem}.crumbs{color:var(--muted);flex-wrap:wrap;gap:8px;margin:18px 0 4px;font-size:.88rem;display:flex}.crumbs a{color:var(--muted)}.tool-head{margin-bottom:18px}.tagline{color:var(--ink-2);margin:.2em 0 .6em;font-size:1.1rem}.badge-local{background:var(--green-soft);color:var(--green-dark);border-radius:999px;margin:0;padding:4px 10px;font-size:.85rem;display:inline-block}.tool-app{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;margin-bottom:24px;padding:clamp(14px,3vw,28px)}.tool-content{max-width:760px}.prose p,.prose li{color:var(--ink-2)}.prose table{border-collapse:collapse;width:100%}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:6px 10px}@media (width<=640px){.prose table,table.data{-webkit-overflow-scrolling:touch;max-width:100%;display:block;overflow-x:auto}}.faq details{background:var(--card);border:1px solid var(--line);border-radius:10px;margin:8px 0;padding:10px 14px}.faq summary{cursor:pointer;font-weight:600}.faq details p{margin:8px 0 2px}.related h2{font-size:1.2rem}.btn{background:var(--green);color:#fff;border:1px solid var(--green);font:600 1rem var(--font);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;text-decoration:none;transition:background .12s;display:inline-flex}.btn:hover{background:var(--green-dark);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost{color:var(--green-dark);background:0 0}.btn.ghost:hover{background:var(--green-soft)}.btn.small{padding:6px 12px;font-size:.9rem}.btn.big{padding:14px 26px;font-size:1.1rem}.btn.danger{background:var(--danger);border-color:var(--danger)}.btn-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}label.field{color:var(--ink-2);flex-direction:column;gap:4px;min-width:0;max-width:100%;font-size:.92rem;font-weight:600;display:flex}input[type=text],input[type=number],input[type=email],input[type=date],input[type=search],input[type=color],select,textarea{font:1rem var(--font);border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:10px;min-width:0;padding:9px 12px}select{max-width:100%}input[type=color]{width:64px;height:42px;padding:2px}textarea{resize:vertical;width:100%;min-height:120px}input[type=range]{accent-color:var(--green);width:100%}input[type=checkbox],input[type=radio]{accent-color:var(--green);width:18px;height:18px}.check{cursor:pointer;align-items:center;gap:8px;font-size:.95rem;display:inline-flex}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}@media (width<=760px){.grid-2,.grid-3{grid-template-columns:1fr}.grid-4{grid-template-columns:repeat(2,1fr)}}.stack{flex-direction:column;gap:14px;display:flex}.panel{border:1px solid var(--line);border-radius:var(--radius);background:#f7f9f6;padding:16px}.tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.tabs button{font:600 .95rem var(--font);color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;padding:8px 12px}.tabs button[aria-selected=true]{color:var(--green-dark);border-bottom-color:var(--green)}.dropzone{text-align:center;cursor:pointer;background:#f7fbf7;border:2px dashed #b9cdbc;border-radius:14px;padding:36px 20px;transition:background .12s,border-color .12s}.dropzone:hover,.dropzone.drag{background:var(--green-soft);border-color:var(--green)}.dropzone strong{font-size:1.1rem;display:block}.stat{border:1px solid var(--line);background:#f7f9f6;border-radius:10px;padding:10px 14px}.stat .label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.8rem}.stat .value{font:700 1.4rem var(--font);color:var(--ink);font-variant-numeric:tabular-nums}.meter{background:#e8eee8;border-radius:999px;height:14px;overflow:hidden}.meter>span{background:linear-gradient(90deg, var(--ok), var(--sun) 75%, var(--danger));width:0;height:100%;transition:width 60ms linear;display:block}.progress{background:#e8eee8;border-radius:999px;height:10px;overflow:hidden}.progress>span{background:var(--green);width:0;height:100%;transition:width .2s;display:block}.notice{background:var(--green-soft);color:var(--green-dark);border-radius:10px;padding:10px 14px;font-size:.95rem}.notice.warn{background:var(--warn-bg);color:#6b4e00}.notice.error{color:var(--danger);background:#fdecea}.limits{border-radius:10px;margin:12px 0 0;padding:10px 14px;font-size:.9rem}.limits+.limits{margin-top:8px}.limits-h{text-transform:uppercase;letter-spacing:.04em;margin:0 0 4px;font-size:.85rem;font-weight:700}.limits ul{margin:0;padding-left:1.2em}.limits li{margin:2px 0}.limits-now{background:var(--warn-bg);color:#5b4300;border:1px solid #f0dca0}.limits-now .limits-h:before{content:"⚠️ "}.limits-always{color:var(--ink-2);border:1px solid var(--line);background:#f4f7f4}.limits-always .limits-h{color:var(--muted)}.limits-always .limits-h:before{content:"ℹ️ "}.pass{color:var(--ok);font-weight:700}.fail{color:var(--danger);font-weight:700}.kbd{font:600 .85rem var(--mono);border:1px solid var(--line);background:#fff;border-bottom-width:3px;border-radius:6px;padding:1px 6px;display:inline-block}.mono{font-family:var(--mono)}table.data{border-collapse:collapse;width:100%;font-size:.93rem}table.data th,table.data td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:7px 8px}table.data th{color:var(--muted);font-weight:600}.stage{background:#111;border-radius:12px;position:relative;overflow:hidden}.stage:fullscreen{border-radius:0}.consent{background:var(--card);border:1px solid var(--line);z-index:50;border-radius:14px;max-width:640px;margin:0 auto;padding:16px 18px;position:fixed;bottom:16px;left:16px;right:16px;box-shadow:0 8px 30px #00000026}.consent p{margin:0 0 10px;font-size:.93rem}.consent-actions{justify-content:flex-end;gap:10px;display:flex}#mt-toast{opacity:0;background:var(--ink);color:#fff;z-index:60;pointer-events:none;border-radius:10px;padding:10px 16px;transition:all .2s;position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px)}#mt-toast.show{opacity:1;transform:translate(-50%)}[hidden]{display:none!important}
