*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0a0f14;--surface: #111a22;--surface-2: #162029;--border: #243040;--text: #e8eef4;--muted: #8b9cb0;--primary: #0d9488;--primary-hover: #14b8a6;--accent: #fbbf24;--radius: 12px;--font: "DM Sans", system-ui, sans-serif;--mono: "JetBrains Mono", monospace}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}.app{position:relative;min-height:100vh;max-width:1200px;margin:0 auto;padding:2rem 1.25rem 3rem}.bg-gradient{position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(13,148,136,.25),transparent),radial-gradient(ellipse 60% 40% at 100% 50%,rgba(41,128,185,.12),transparent);pointer-events:none;z-index:0}.hero,.main,.footer{position:relative;z-index:1}.navbar-tabs{display:flex;gap:.35rem;padding:.25rem;background:var(--surface-2);border-radius:8px;border:1px solid var(--border)}.navbar-tab{font-family:var(--font);font-size:.9rem;font-weight:600;color:var(--muted);background:transparent;border:none;border-radius:6px;padding:.5rem 1.1rem;cursor:pointer;transition:color .15s,background .15s}.navbar-tab:hover{color:var(--text)}.navbar-tab.active{color:#fff;background:linear-gradient(135deg,var(--primary),#0f766e)}.hero{text-align:center;margin-bottom:2.5rem}.badge{display:inline-block;font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--primary-hover);background:#0d948826;border:1px solid rgba(13,148,136,.35);padding:.35rem .85rem;border-radius:999px;margin-bottom:1rem}.hero h1{font-size:clamp(1.75rem,5vw,2.5rem);font-weight:700;letter-spacing:-.02em;margin-bottom:.75rem}.hero-sub{color:var(--muted);max-width:560px;margin:0 auto;font-size:1.05rem}.input-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;margin-bottom:2rem}.form-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:1.25rem}.form-header h2{font-size:1.15rem}.form-actions{display:flex;gap:.5rem}.field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}.field span{font-size:.875rem;font-weight:500;color:var(--muted)}.field input,.field textarea{font-family:var(--font);font-size:1rem;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:.75rem 1rem;transition:border-color .2s,box-shadow .2s}.field input:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0d948833}.field textarea{resize:vertical;min-height:140px}.hint{font-size:.75rem;color:var(--muted)}.platforms-selector{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-top:.5rem}.platform-select-card{position:relative;display:flex;align-items:center;gap:.85rem;padding:.85rem 1.15rem;background:#16202973;border:1px solid var(--border);border-radius:12px;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none;overflow:hidden;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.platform-select-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,var(--platform-color),transparent);opacity:0;transition:opacity .25s ease;z-index:0;pointer-events:none}.platform-select-card input[type=radio],.platform-select-card input[type=checkbox]{display:none}.platform-select-card:hover{border-color:color-mix(in srgb,var(--platform-color) 60%,var(--border));background:#162029b3;transform:translateY(-2px);box-shadow:0 10px 15px -3px #0000004d,0 4px 6px -2px #0000000d}.platform-select-card.active{border-color:var(--platform-color);background:#162029d9;transform:translateY(-2px);box-shadow:0 12px 20px -8px color-mix(in srgb,var(--platform-color) 40%,transparent)}.platform-select-card.active:before{opacity:.06}.platform-select-icon{position:relative;z-index:1;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.95rem;background:linear-gradient(135deg,var(--platform-color),color-mix(in srgb,var(--platform-color) 80%,#000));color:#fff;border-radius:50%;box-shadow:0 2px 4px #0003;transition:all .25s ease}.platform-select-card[style*="#4285f4"] .platform-select-icon{background:linear-gradient(135deg,#4285f4,#34a853);color:#fff}.platform-select-card.active .platform-select-icon{transform:scale(1.15) rotate(5deg);box-shadow:0 4px 8px color-mix(in srgb,var(--platform-color) 50%,transparent)}.platform-select-name{position:relative;z-index:1;font-size:.95rem;font-weight:600;color:var(--muted);transition:color .25s ease}.platform-select-card.active .platform-select-name{color:#fff}.platform-select-card:after{content:"";position:absolute;top:50%;right:1.15rem;transform:translateY(-50%);width:14px;height:14px;border:2px solid var(--border);border-radius:50%;transition:all .25s ease;background:var(--surface-2)}.platform-select-card:hover:after{border-color:color-mix(in srgb,var(--platform-color) 40%,var(--border))}.platform-select-card.active:after{border-color:var(--platform-color);background:var(--platform-color);box-shadow:inset 0 0 0 3px var(--surface)}.error-msg{color:#f87171;font-size:.9rem;margin-bottom:.75rem}.btn-primary{width:100%;padding:.9rem 1.5rem;font-family:var(--font);font-size:1rem;font-weight:600;color:#fff;background:linear-gradient(135deg,var(--primary),#0f766e);border:none;border-radius:8px;cursor:pointer;transition:transform .15s,box-shadow .15s}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 24px #0d948859}.btn-primary:disabled{opacity:.7;cursor:wait}.btn-ghost{font-family:var(--font);font-size:.8rem;padding:.4rem .75rem;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--muted);cursor:pointer}.btn-ghost:hover{color:var(--text);border-color:var(--muted)}.results-header{margin-bottom:1.5rem}.results-header h2{font-size:1.35rem;margin-bottom:.25rem}.results-header p{color:var(--muted);font-size:.9rem}.keywords-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;margin-bottom:1.5rem}.keywords-panel h3{font-size:.95rem;margin-bottom:.75rem;color:var(--accent)}.platform-grid{display:grid;grid-template-columns:1fr;gap:1.25rem;width:100%}@media(min-width:900px){.platform-grid.cols-3{grid-template-columns:repeat(3,1fr)}.platform-grid.cols-2{grid-template-columns:repeat(2,1fr)}.platform-grid.cols-1{grid-template-columns:1fr}}.platform-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;border-top:3px solid var(--accent)}.platform-header{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.platform-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;background:var(--accent);color:#111;border-radius:8px}.platform-header h3{flex:1;font-size:1rem}.output-block{margin-bottom:1rem}.block-label{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:.4rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.char-count{font-family:var(--mono);font-size:.65rem;color:var(--accent);font-weight:500;text-transform:none}.output-text{font-size:.875rem;color:var(--text);line-height:1.55}.title-output{font-weight:600;color:#fff}.title-kw-row{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.5rem}.title-kw-label{font-size:.65rem;color:var(--accent);font-weight:600;width:100%}.keyword-tag.title-kw{background:#0d948826;border-color:#0d948873;color:#5eead4;font-weight:600}.keyword-tag.desc-kw{background:#a78bfa1f;border-color:#a78bfa59;color:#c4b5fd}.description-output{white-space:pre-wrap;max-height:320px;overflow-y:auto;font-size:.82rem;line-height:1.65;padding:.65rem;background:var(--surface-2);border-radius:6px;border:1px solid var(--border)}.char-count.ok-len{color:#34d399}.bullet-list{list-style:none;font-size:.8rem}.bullet-list li{padding:.35rem 0;border-bottom:1px solid rgba(36,48,64,.5);color:var(--muted)}.bullet-list li:last-child{border-bottom:none}.keyword-tags{display:flex;flex-wrap:wrap;gap:.35rem}.keyword-tag{font-size:.7rem;padding:.25rem .5rem;background:var(--surface-2);border:1px solid var(--border);border-radius:4px;color:var(--muted)}.keyword-tag.global{background:#fbbf2414;border-color:#fbbf2440;color:#fcd34d}.global-keywords{max-height:160px;overflow-y:auto}.copy-btn{font-family:var(--font);font-size:.65rem;padding:.2rem .5rem;margin-left:auto;background:var(--surface-2);border:1px solid var(--border);border-radius:4px;color:var(--muted);cursor:pointer}.copy-btn:hover{color:var(--text);border-color:var(--primary)}.copy-btn.copied{color:var(--primary-hover);border-color:var(--primary)}.footer{text-align:center;margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--border)}.footer p{font-size:.8rem;color:var(--muted)}.platform-title-wrap{flex:1;display:flex;flex-direction:column;gap:.25rem}.policy-badge{font-size:.65rem;font-weight:600;padding:.15rem .45rem;border-radius:4px;width:fit-content}.policy-badge.ok{color:#34d399;background:#34d3991f;border:1px solid rgba(52,211,153,.3)}.policy-badge.warn{color:#fbbf24;background:#fbbf241f;border:1px solid rgba(251,191,36,.3)}.policy-rules{font-size:.75rem;color:var(--muted);margin-bottom:.75rem}.policy-rules summary{cursor:pointer;color:var(--primary-hover)}.policy-rules ul{margin-top:.5rem;padding-left:1.1rem}.policy-rules li{margin-bottom:.25rem}.keyword-hint{font-size:.7rem;color:var(--muted);margin-bottom:.5rem;font-style:italic}.search-terms-box{font-family:var(--mono);font-size:.75rem;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:.65rem;line-height:1.5;word-break:break-word;color:#a7f3d0}.compliance-warnings{margin-top:.75rem;padding:.5rem;background:#f871711a;border-radius:6px;font-size:.75rem;color:#fca5a5}.google-planner .planner-group{margin-bottom:.75rem}.google-planner .planner-group h4{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:.35rem}.keyword-tag.broad{border-color:#4285f466;color:#93c5fd}.keyword-tag.phrase{border-color:#34d39966;color:#6ee7b7}.keyword-tag.exact{border-color:#fbbf2466;color:#fcd34d}.keyword-tag.longtail{border-color:#a78bfa66;color:#c4b5fd}.keyword-tag.reach{border-color:#ec489966;color:#f9a8d4}.google-reach-panel{background:linear-gradient(135deg,#4285f414,#0d948814);border:1px solid rgba(66,133,244,.25);border-radius:var(--radius);padding:1.25rem;margin-bottom:1.5rem}.reach-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.reach-header h3{font-size:1.1rem;margin-bottom:.25rem;color:#93c5fd}.reach-header p{font-size:.85rem;color:var(--muted)}.reach-grid{display:grid;grid-template-columns:1fr;gap:1rem}@media(min-width:700px){.reach-grid{grid-template-columns:1fr 1fr}}.reach-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1rem}.reach-card h4{font-size:.9rem;margin-bottom:.2rem}.reach-desc{font-size:.75rem;color:var(--muted);margin-bottom:.6rem}.bulk-generator-container{display:flex;flex-direction:column;gap:1.5rem}.bulk-layout-grid{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:start}@media(min-width:990px){.bulk-layout-grid{grid-template-columns:1.1fr 1fr}}.bulk-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.bulk-intro-card{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:1rem;font-size:.85rem;color:var(--muted)}.bulk-intro-card h4{color:var(--text);margin-bottom:.5rem;font-size:.95rem}.bulk-intro-card p{margin-bottom:.35rem}.btn-template{margin-top:.75rem;width:100%;font-weight:600;color:var(--primary-hover);background:#0d948814;border-color:#0d948840}.btn-template:hover{background:#0d948826;border-color:var(--primary)}.bulk-dropzone input[type=file]{display:none!important}.bulk-dropzone{position:relative;border:2px dashed var(--border);border-radius:16px;padding:2.25rem 1.5rem;text-align:center;cursor:pointer;background:#16202959;transition:all .3s cubic-bezier(.4,0,.2,1);min-height:140px;display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:inset 0 1px 2px #0003}.bulk-dropzone:hover,.bulk-dropzone.is-dragging{border-color:#10b981;background:#10b98108;box-shadow:0 8px 30px #00000040,inset 0 0 12px #10b98108;transform:translateY(-2px)}.bulk-dropzone.has-file{border-color:#10b981;border-style:solid;background:#10b9810f;box-shadow:0 6px 20px #10b9810f}.dropzone-placeholder{display:flex;flex-direction:column;align-items:center;gap:.5rem;z-index:1}.dropzone-icon{font-size:2.5rem;display:inline-block;transition:transform .3s ease;filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))}.bulk-dropzone:hover .dropzone-icon,.bulk-dropzone.is-dragging .dropzone-icon{transform:translateY(-4px) scale(1.08)}.dropzone-text{font-size:.95rem;font-weight:500;color:var(--muted);transition:color .2s}.bulk-dropzone:hover .dropzone-text,.bulk-dropzone.is-dragging .dropzone-text{color:var(--text)}.browse-link{color:var(--primary-hover);font-weight:600;text-decoration:underline;text-underline-offset:3px;transition:color .2s}.browse-link:hover{color:#fff}.bulk-file-info{display:flex;flex-direction:column;align-items:center;gap:.75rem;z-index:1;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.bulk-file-info .file-icon{font-size:2.75rem;display:block;filter:drop-shadow(0 4px 12px rgba(16,185,129,.25));animation:bounce 2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.bulk-file-info .file-name{font-size:1rem;font-weight:700;color:#fff;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-clear-file{font-family:var(--font);font-size:.8rem;font-weight:600;padding:.45rem 1.15rem;background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:6px;color:#fca5a5;cursor:pointer;transition:all .2s ease}.btn-clear-file:hover{background:#ef4444;color:#fff;border-color:#ef4444;box-shadow:0 4px 12px #ef444440}.upload-helper-info{margin-top:.5rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}.upload-helper-info .hint{font-size:.75rem;color:var(--muted)}.file-stats-badge{font-size:.8rem;color:#a7f3d0;font-weight:600;background:#10b9811f;padding:.15rem .5rem;border-radius:99px;border:1px solid rgba(16,185,129,.2)}.btn-run-bulk{padding:.8rem 1.5rem}.bulk-stats-box{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:1.25rem;display:flex;flex-direction:column;gap:.85rem}.bulk-stats-box h4{font-size:.9rem;font-weight:600}.progress-bar-container{height:8px;background:var(--border);border-radius:99px;overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--primary-hover));border-radius:99px;transition:width .12s ease}.stats-numbers-row{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;font-weight:500}.stat-pill{padding:.2rem .5rem;border-radius:4px;font-weight:600}.stat-pill.success{background:#34d3991f;color:#34d399}.stat-pill.error{background:#f871711f;color:#f87171}.bulk-complete-card{display:flex;flex-direction:column;align-items:center;gap:.65rem;text-align:center;margin-top:.5rem;padding-top:1.25rem;border-top:1px solid var(--border)}.complete-check{font-size:2.25rem;display:block}.btn-download-results{background:linear-gradient(135deg,#10b981,#059669)!important;color:#fff;border:none}.btn-download-results:hover:not(:disabled){box-shadow:0 8px 24px #10b98159!important}.runtime-log-panel{max-height:575px}.panel-header-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);padding-bottom:.85rem;margin-bottom:.25rem}.panel-header-row h3{font-size:1rem;font-weight:600}.pulse-dot-indicator{width:10px;height:10px;border-radius:50%;background:#10b981;box-shadow:0 0 8px #10b981;animation:pulse 1.5s infinite}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #10b981b3}70%{transform:scale(1);box-shadow:0 0 0 6px #10b98100}to{transform:scale(.95);box-shadow:0 0 #10b98100}}.runtime-table-wrap{overflow-y:auto;flex:1;min-height:360px}.runtime-table{width:100%;border-collapse:collapse;font-size:.85rem;text-align:left}.runtime-table th{color:var(--muted);font-weight:600;padding:.65rem .5rem;border-bottom:1px solid var(--border)}.runtime-table td{padding:.75rem .5rem;border-bottom:1px dashed rgba(36,48,64,.4);vertical-align:middle}.log-row.status-success{background:#34d39905}.log-row.status-error{background:#f8717105}.row-id{font-family:var(--mono);color:var(--muted);width:60px}.row-name{font-weight:500;color:var(--text)}.row-status{width:120px}.badge-status{font-size:.75rem;font-weight:600;padding:.2rem .5rem;border-radius:4px;display:inline-block;white-space:nowrap}.badge-status.processing{background:#fbbf241f;color:#fcd34d}.badge-status.success{background:#34d3991f;color:#34d399}.badge-status.error{background:#f871711f;color:#f87171}.row-actions{width:100px;text-align:right}.btn-inspect-row{font-family:var(--font);font-size:.75rem;font-weight:600;padding:.25rem .5rem;background:var(--surface-2);border:1px solid var(--border);border-radius:4px;color:var(--primary-hover);cursor:pointer;transition:all .15s ease}.btn-inspect-row:hover{background:var(--border);color:#fff;border-color:var(--muted)}.error-text-summary{color:#f87171;font-size:.75rem;display:inline-block;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-log-msg{text-align:center;color:var(--muted);padding:3rem 0!important}.bulk-modal-overlay{background:#000000d1!important}.bulk-inspect-modal{max-width:1100px!important;max-height:85vh!important;width:92%!important}.bulk-inspect-body{padding:1.5rem!important}.bulk-grid-layout{display:grid;grid-template-columns:1fr;gap:1.5rem}@media(min-width:900px){.bulk-grid-layout{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}}.bulk-top-error{background:#f871711f;border:1px solid rgba(248,113,113,.35);border-radius:var(--radius);padding:.75rem 1.25rem;margin-bottom:1.5rem}.svg-line-icon{display:inline-block;stroke:currentColor;flex-shrink:0;transition:transform .2s ease}.spin-animation{animation:spin-pulse 1.4s linear infinite}@keyframes spin-pulse{to{transform:rotate(360deg)}}
