.certificate-generator-tool{width:min(1440px,calc(100% - 32px));display:grid;gap:24px;margin-inline:auto;padding:36px 0 72px}.certificate-intro{max-width:980px}.certificate-intro h1{margin:0 0 12px;color:var(--text);font-size:clamp(34px,4.8vw,58px);line-height:1.04;letter-spacing:-.05em}.certificate-intro p{max-width:880px;margin:0;color:var(--muted);font-size:16px;line-height:1.75}.certificate-upload-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:stretch}.certificate-upload-row .drop-card{min-width:0;height:100%;display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px;border:1.5px dashed var(--line-strong);border-radius:var(--radius-lg);padding:18px;background:#fff;box-shadow:var(--shadow-sm)}.certificate-upload-row .drop-card__icon{width:48px;height:48px;display:grid;place-items:center;border-radius:16px;background:var(--surface-soft);font-size:20px}.certificate-upload-row .drop-card h2{margin:0 0 6px;color:var(--text);font-size:16px;line-height:1.35}.certificate-upload-row .drop-card p{margin:0 0 12px;color:var(--muted);font-size:13.5px;line-height:1.6}.certificate-editor-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,410px);gap:20px;align-items:start}.certificate-preview-column{min-width:0;display:grid;gap:20px}.certificate-edit-panel{min-width:0;display:grid;gap:16px;position:sticky;top:92px;max-height:calc(100vh - 110px);overflow:auto;padding-right:4px}.template-editor-card,.field-toolbar-card,.data-preview-card,.render-progress-card,.certificate-result-card,.render-action-card{padding:20px}.panel-head,.progress-head,.result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.panel-head h2,.progress-head h2,.result-head h2{margin:0;color:var(--text);font-size:21px;line-height:1.25;letter-spacing:-.025em}.panel-head p{margin:6px 0 0;color:var(--muted);font-size:13.5px;line-height:1.55}.template-editor-card{overflow:hidden}.template-editor-stage{position:relative;width:100%;overflow:hidden;border:1.5px dashed var(--line-strong);border-radius:22px;background:#fff}.template-editor-stage img{width:100%;height:100%;object-fit:contain}.template-empty{display:grid;place-items:center;min-height:460px;border:1.5px dashed var(--line-strong);border-radius:22px;background:#fff;color:var(--muted);text-align:center;padding:28px}.certificate-field-layer{position:absolute;z-index:2;min-height:1em;border:0;border-radius:4px;padding:0;background:#ffffff2e;color:inherit;cursor:move;outline:1.5px dashed var(--accent);outline-offset:2px;overflow-wrap:anywhere;user-select:none;white-space:pre-wrap}.certificate-field-layer.is-active{outline:2px solid var(--text);background:#dbeafe7a}.field-list{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 16px}.field-list-item{border:1px solid var(--line);border-radius:999px;padding:8px 12px;background:#fff;color:var(--text);font-size:13px;font-weight:850}.field-list-item.is-active{border-color:var(--text);background:var(--text);color:#fff}.field-settings-grid{display:grid;grid-template-columns:1fr;gap:13px}.field-inline-row,.font-size-row{display:grid;grid-template-columns:minmax(0,1fr) 118px;gap:8px}.field-number-input,.field-size-select{min-width:0}.upload-font-field input[type=file]{min-height:auto;padding:10px}.field-checkbox{display:flex;align-items:center;gap:10px}.field-checkbox input{width:18px;height:18px;accent-color:var(--accent)}.mini-toolbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.tool-icon-button{min-height:40px;display:inline-grid;place-items:center;border:1px solid var(--line);border-radius:13px;background:#fff;color:var(--text)}.tool-icon-button svg{width:18px;height:18px}.tool-icon-button:hover,.tool-icon-button.is-active{border-color:var(--text);background:#f8fafc;box-shadow:inset 0 0 0 1px var(--text)}.toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.danger-button{color:var(--danger)!important}.output-settings{display:grid;gap:13px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.output-settings__title,.output-settings h3{margin:0;color:var(--text);font-size:14px;font-weight:900}.render-progress-card,.render-action-card{padding:18px}.progress-head span{min-width:54px;display:inline-flex;justify-content:center;border-radius:999px;padding:6px 10px;background:#eef2f7;color:var(--text);font-size:13px;font-weight:850}.progress-track{height:12px;overflow:hidden;border-radius:999px;background:#e2e8f0}.progress-bar{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),var(--accent));transition:width .25s ease}.progress-note{margin:10px 0 0;color:var(--muted);font-size:13.5px}.render-action-card{display:grid;gap:10px}.render-action-card strong{color:var(--text);font-size:16px;font-weight:900}.render-action-card p{margin:0;color:var(--muted);font-size:13.5px;line-height:1.6}.data-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:18px}.data-table{width:100%;min-width:720px;border-collapse:collapse;font-size:14px}.data-table th,.data-table td{max-width:220px;overflow:hidden;border-bottom:1px solid var(--line);padding:12px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.data-table th{background:#f8fafc;color:var(--text);font-weight:850}.data-table td{color:#475569}.certificate-result-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.certificate-result-item{overflow:hidden;border:1px solid var(--line);border-radius:22px;background:#fff}.certificate-result-item img{width:100%;aspect-ratio:4 / 3;object-fit:contain;background:#f8fafc}.result-body{display:grid;gap:10px;padding:14px}.result-body h3{overflow:hidden;margin:0;color:var(--text);font-size:15px;white-space:nowrap;text-overflow:ellipsis}.result-actions{display:flex;flex-wrap:wrap;gap:10px}.result-download{width:100%}@media(max-width:1200px){.certificate-editor-layout{grid-template-columns:minmax(0,1fr) minmax(320px,370px)}.certificate-upload-row{grid-template-columns:repeat(2,minmax(0,1fr))}.certificate-upload-row .drop-card:last-child{grid-column:1 / -1}}@media(max-width:960px){.certificate-generator-tool{width:min(100% - 24px,1440px);padding-top:28px}.certificate-upload-row,.certificate-editor-layout{grid-template-columns:1fr}.certificate-edit-panel{position:static;max-height:none;overflow:visible;padding-right:0}.field-settings-grid,.output-settings{grid-template-columns:repeat(2,minmax(0,1fr))}.output-settings__title,.output-settings h3{grid-column:1 / -1}}@media(max-width:640px){.certificate-generator-tool{width:min(100% - 18px,1440px)}.certificate-intro h1{font-size:32px}.certificate-upload-row .drop-card,.field-settings-grid,.output-settings,.toolbar-actions,.field-inline-row,.font-size-row{grid-template-columns:1fr}.mini-toolbar{grid-template-columns:repeat(5,1fr)}.template-editor-card,.field-toolbar-card,.data-preview-card,.render-progress-card,.certificate-result-card,.render-action-card{padding:16px}}.font-picker-field{gap:10px}.google-font-picker{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-radius:14px;background:#f8fafc}.google-font-search{display:grid;gap:6px}.google-font-search span,.upload-font-inline span{font-size:12px;font-weight:700;color:#475569}.google-font-option{display:grid;gap:3px;min-height:54px;padding:10px;border:1px solid #dbe3ef;border-radius:10px;background:#fff;color:#0f172a;text-align:left;cursor:pointer}.google-font-option:disabled{opacity:.6;cursor:wait}.google-font-option__name{font-size:15px;font-weight:700}.google-font-option__meta{font-size:11px;color:#64748b}.google-font-empty,.font-load-note{margin:0;font-size:12px;line-height:1.5}.google-font-empty{grid-column:1 / -1;color:#64748b}.upload-font-inline{display:grid;gap:6px}.google-font-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-height:220px;overflow-y:auto;overflow-x:hidden;padding-right:6px;overscroll-behavior:contain;scrollbar-width:thin}.google-font-results::-webkit-scrollbar{width:8px}.google-font-results::-webkit-scrollbar-track{background:#f1f5f9;border-radius:999px}.google-font-results::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}.google-font-results::-webkit-scrollbar-thumb:hover{background:#94a3b8}.google-font-option{font-size:4px;display:grid;gap:4px;min-height:64px;padding:12px;border:1px solid #dbe3ef;border-radius:12px;background:#fff;color:#0f172a;text-align:left;cursor:pointer}.google-font-option:hover,.google-font-option.is-selected{border-color:#2563eb;background:#eff6ff}.google-font-option:disabled{opacity:.65;cursor:wait}.google-font-option__name{font-size:12px;font-weight:100;line-height:1.25}.google-font-option__meta{font-size:12px;color:#64748b}.google-font-empty,.font-load-note{grid-column:1 / -1;margin:0;font-size:12px;line-height:1.5}.font-load-note.is-success{color:#15803d}.font-load-note.is-error{color:#b91c1c}@media(max-width:640px){.google-font-results{grid-template-columns:1fr;max-height:420px}}.text-format-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;width:100%;padding:0;border:0;background:transparent}.format-icon-button{width:40px;height:38px;min-width:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid #d6e0ef;border-radius:10px;background:#fff;color:#0f172a;font-size:15px;line-height:1;cursor:pointer;box-shadow:none;appearance:none}.format-icon-button:hover{border-color:#94a3b8;background:#f8fafc}.format-icon-button.is-active{border-color:#0f172a;background:#f8fafc;color:#0f172a;box-shadow:inset 0 0 0 1px #0f172a}.format-icon-button strong{font-size:15px;font-weight:800}.format-icon-button em{font-family:Georgia,Times New Roman,serif;font-size:15px;font-style:italic;font-weight:700}.format-icon-button svg{width:19px;height:19px;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.format-color-button{position:relative;overflow:hidden}.format-color-button input[type=color]{position:absolute;inset:0;width:100%!important;height:100%!important;padding:0!important;margin:0!important;border:0!important;opacity:0;cursor:pointer}.text-color-icon{width:18px;height:22px;display:inline-grid;place-items:center;position:relative}.text-color-icon__letter{font-size:16px;font-weight:800;line-height:1;color:#111827}.text-color-icon__bar{position:absolute;left:0;right:0;bottom:1px;height:3px;border-radius:999px}.format-align-group{display:inline-flex;align-items:center;gap:8px}
