:root{--bg:#0b0e14;--bg-card:#12161f;--bg-input:#0e1219;--border:#232936;--border-focus:#4f7cff;--text:#e7ebf3;--text-dim:#8b93a5;--accent:#4f7cff;--accent-hover:#6b91ff;--accent-press:#3d66e0;--danger:#ff5c6c;--ok:#3ecf8e;--warn:#e8b93c;--shadow-card:0 20px 60px #00000073;--shadow-hover:0 10px 30px #00000059;--glow-a:#4f7cff1f;--glow-b:#3ecf8e0f;--radius:12px;--font:"Segoe UI", system-ui, -apple-system, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f2f4f9;--bg-card:#fff;--bg-input:#f6f7fb;--border:#dde1ea;--border-focus:#4f7cff;--text:#1b2130;--text-dim:#626b7e;--danger:#d93a4c;--ok:#199d68;--warn:#a8801a;--shadow-card:0 16px 44px #17203c1f;--shadow-hover:0 8px 24px #17203c1a;--glow-a:#4f7cff1a;--glow-b:#3ecf8e12;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}input,textarea,select,button{font:inherit;color:inherit}.theme-toggle{border:1px solid var(--border);background:var(--bg-card);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;transition:border-color .15s;display:inline-flex}.theme-toggle:hover{border-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.linklike{color:var(--accent);cursor:pointer;font-size:inherit;background:0 0;border:0;padding:0;text-decoration:underline}@media (width<=720px){.home,.val,.admin{padding-left:14px;padding-right:14px}.app-header{flex-wrap:wrap;gap:8px;padding:10px 14px}}.login-screen{background:radial-gradient(600px 300px at 70% 0%, var(--glow-a), transparent), radial-gradient(500px 300px at 20% 100%, var(--glow-b), transparent), var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100%;padding:24px;display:flex;position:relative}.login-theme-toggle{position:absolute;top:18px;right:18px}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow-card);padding:32px}.login-brand{text-align:center;margin-bottom:24px}.login-logo{background:linear-gradient(135deg, var(--accent), #7a5cff);color:#fff;border-radius:14px;justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:14px;display:inline-flex}.login-brand h1{letter-spacing:.2px;font-size:22px;font-weight:600}.login-brand p{color:var(--text-dim);margin-top:6px;font-size:13.5px}.login-tabs{background:var(--bg-input);border:1px solid var(--border);border-radius:10px;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:22px;padding:4px;display:grid}.login-tabs button{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:8px 0;font-size:14px;transition:background .15s,color .15s}.login-tabs button.active{background:var(--bg-card);color:var(--text);box-shadow:0 1px 4px #0003}.login-form{flex-direction:column;gap:16px;display:flex}.login-form label{color:var(--text-dim);flex-direction:column;gap:6px;font-size:13px;display:flex}.login-form input,.login-form textarea{background:var(--bg-input);border:1px solid var(--border);resize:vertical;border-radius:9px;outline:none;padding:10px 12px;font-size:14.5px;transition:border-color .15s,box-shadow .15s}.login-form input:focus,.login-form textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px #4f7cff2e}.login-form input::placeholder,.login-form textarea::placeholder{color:color-mix(in srgb, var(--text-dim) 55%, transparent)}.login-submit{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:9px;margin-top:4px;padding:11px;font-size:15px;font-weight:600;transition:background .15s}.login-submit:hover:not(:disabled){background:var(--accent-hover)}.login-submit:active:not(:disabled){background:var(--accent-press)}.login-submit:disabled{opacity:.6;cursor:default}.login-error{color:var(--danger);background:#ff5c6c1a;border:1px solid #ff5c6c59;border-radius:9px;padding:9px 12px;font-size:13.5px}.login-sent{text-align:center;flex-direction:column;gap:12px;display:flex}.login-sent-icon{width:48px;height:48px;color:var(--ok);background:#3ecf8e1f;border:1px solid #3ecf8e59;border-radius:50%;justify-content:center;align-items:center;margin:0 auto;font-size:24px;display:flex}.login-sent h2{font-size:17px;font-weight:600}.login-sent p{color:var(--text-dim);font-size:13.5px;line-height:1.5}.login-footer{color:var(--text-dim);opacity:.7;font-size:12.5px}.admin{width:100%;max-width:960px;margin:0 auto;padding:36px 24px}.admin h1{margin-bottom:20px;font-size:22px;font-weight:600}.admin-tabs{border-bottom:1px solid var(--border);gap:8px;margin-bottom:20px;display:flex}.admin-tabs button{cursor:pointer;color:var(--text-dim);background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 14px;font-size:14.5px;transition:color .15s,border-color .15s}.admin-tabs button.active{color:var(--text);border-bottom-color:var(--accent)}.admin-count{background:var(--accent);color:#fff;border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;margin-left:6px;padding:0 5px;font-size:11.5px;font-weight:600;display:inline-flex}.admin-error{color:var(--danger);background:#ff5c6c1a;border:1px solid #ff5c6c59;border-radius:9px;margin-bottom:16px;padding:9px 12px;font-size:13.5px}.admin-notice{color:var(--ok);background:#3ecf8e1a;border:1px solid #3ecf8e59;border-radius:9px;margin-bottom:16px;padding:9px 12px;font-size:13.5px}.admin-temp-cred{background:#3ecf8e14;border:1px solid #3ecf8e59;border-radius:9px;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;padding:12px 14px;font-size:14px;display:flex}.admin-temp-cred code{background:var(--bg-input);border:1px solid var(--border);-webkit-user-select:all;user-select:all;border-radius:6px;padding:2px 8px;font-size:14px}.admin-temp-note{color:var(--text-dim);margin-top:6px;font-size:12.5px}.admin-temp-actions{flex-shrink:0;gap:8px;display:flex}.admin button{cursor:pointer}.admin-request-actions button,.admin-temp-actions button,.admin-actions button,.admin-add-user button{background:var(--bg-card);border:1px solid var(--border);border-radius:7px;padding:6px 12px;font-size:13px;transition:border-color .15s,color .15s}.admin button:disabled{opacity:.45;cursor:default}.btn-ok:hover:not(:disabled){border-color:var(--ok);color:var(--ok)}.btn-danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.admin-actions button:hover:not(:disabled){border-color:var(--accent)}.admin-request{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:16px;margin-bottom:10px;padding:14px 16px;display:flex}.admin-request-info{font-size:14px;line-height:1.5}.admin-request-actions{flex-shrink:0;gap:8px;display:flex}.admin-table{border-collapse:collapse;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);width:100%;font-size:13.5px;overflow:hidden}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--border);padding:9px 12px}.admin-table th{color:var(--text-dim);text-transform:uppercase;letter-spacing:.4px;font-size:12.5px;font-weight:600}.admin-table tr:last-child td{border-bottom:none}.row-blocked td{opacity:.55}.admin-actions{flex-wrap:wrap;gap:6px;display:flex}.admin-file{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.bug-message{white-space:pre-wrap;word-break:break-word}.bug-thumbs{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.bug-thumb{border:1px solid var(--border);object-fit:cover;border-radius:6px;max-width:140px;max-height:100px}.admin-add-user{gap:8px;margin-bottom:16px;display:flex}.admin-add-user input,.admin-add-user select{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;outline:none;padding:8px 12px;font-size:14px}.admin-add-user input{flex:1;max-width:320px}.admin-add-user input:focus{border-color:var(--border-focus)}.tag-ok,.tag-danger,.tag-warn{border-radius:5px;margin-left:6px;padding:1px 7px;font-size:11.5px;font-weight:600;display:inline-block}.tag-ok{color:var(--ok);border:1px solid var(--ok);margin-left:0}.tag-danger{color:var(--danger);border:1px solid var(--danger);margin-left:0}.tag-warn{color:var(--warn);border:1px solid var(--warn)}.admin-dim{color:var(--text-dim);font-size:13px}.admin-empty{color:var(--text-dim);padding:8px 0;font-size:14px}.admin-subhead{margin:22px 0 10px;font-size:15px;font-weight:600}.admin-activity{flex-direction:column;gap:8px;display:flex}.admin-filter{margin-bottom:14px}.admin-filter input{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;outline:none;width:100%;max-width:360px;padding:8px 12px;font-size:14px}.admin-filter input:focus{border-color:var(--border-focus)}.admin-more{border:1px solid var(--border);color:var(--text-dim);background:0 0;border-radius:7px;margin-top:8px;padding:6px 14px;font-size:13px}.admin-more:hover{border-color:var(--accent);color:var(--text)}@media (width<=720px){.admin-table{display:block;overflow-x:auto}}.val{flex:1;width:100%;max-width:960px;margin:0 auto;padding:32px 24px 64px}.val h1{margin-bottom:20px;font-size:22px;font-weight:600}.val-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px;padding:20px 22px}.val-card h2{margin-bottom:14px;font-size:16px;font-weight:600}.val-dim{color:var(--text-dim);font-weight:400}.val-err{color:var(--danger);font-weight:600}.val-hint{color:var(--text-dim);margin:6px 0 0;font-size:13px;line-height:1.45}.val-hint code,.val code{background:var(--bg-input);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:12px}.val a{color:var(--accent)}.val-text{font-size:14px;line-height:1.55}.val-list{flex-direction:column;gap:6px;margin:4px 0 4px 22px;font-size:14px;line-height:1.6;display:flex}.val-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:20px;display:flex}.val-head h1{margin-bottom:0}.val-mode{border:1px solid var(--border);border-radius:8px;display:flex;overflow:hidden}.val-mode button{cursor:pointer;color:var(--text-dim);background:0 0;border:0;padding:7px 16px;font-size:13.5px}.val-mode button.active{background:var(--accent);color:#fff}.val-step{margin-bottom:18px}.val-step-title{margin-bottom:8px;font-size:14px;font-weight:600}.val-choices{flex-wrap:wrap;gap:10px;display:flex}.val-choice{background:var(--bg-input);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:10px 16px;font-size:13.5px;transition:border-color .15s,background .15s}.val-choice:hover{border-color:var(--accent)}.val-choice.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, var(--bg-input));font-weight:600}.val-drop{border:2px dashed var(--border);background:var(--bg-input);cursor:pointer;text-align:center;border-radius:10px;justify-content:center;align-items:center;min-height:74px;padding:14px;font-size:13.5px;transition:border-color .15s,background .15s;display:flex}.val-drop:hover,.val-drop.over{border-color:var(--accent)}.val-drop.over{background:color-mix(in srgb, var(--accent) 8%, var(--bg-input))}.val-drop input[type=file]{display:none}.val-drop-file{word-break:break-all;font-weight:600}.val-srcmode{gap:18px;margin-bottom:10px;font-size:14px;display:flex}.val-srcmode label{cursor:pointer}.val input[type=text],.val input[type=number],.val select,.val textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;outline:none;width:100%;padding:8px 10px;font-size:14px;transition:border-color .15s}.val input:focus,.val select:focus,.val textarea:focus{border-color:var(--border-focus)}.val input[type=file]{width:100%;font-size:13.5px}.val-label{margin:12px 0 4px;font-size:13.5px;font-weight:600;display:block}.val-row{flex-wrap:wrap;gap:14px;display:flex}.val-row>div{flex:1;min-width:200px}.val-modsbox{margin-top:14px}.val-modsbox>summary{cursor:pointer;font-size:13.5px;font-weight:600}.val-modslinks{margin:8px 0 4px;font-size:13px}.val-mods{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:4px 14px;margin-top:6px;font-size:13px;display:grid}.val-mods label{cursor:pointer;word-break:break-all}.val-btn{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:9px 18px;font-size:14px;transition:background .15s}.val-btn:hover:not(:disabled){background:var(--accent-hover)}.val-btn:disabled{opacity:.5;cursor:default}.val-btn.secondary{color:var(--text);border:1px solid var(--border);background:0 0}.val-btn.secondary:hover:not(:disabled){border-color:var(--accent);background:0 0}.val-btn.copy,.val-btn.small{padding:3px 10px;font-size:12px}.val-shadow{cursor:pointer;margin-top:14px;font-size:13.5px;display:block}.val-run{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;font-size:13.5px;display:flex}.val-prog{margin-top:14px}.val-prog-head{justify-content:space-between;align-items:baseline;font-size:13.5px;display:flex}.val-prog-label{color:var(--accent);font-weight:600}.val-pbar{background:var(--bg-input);border:1px solid var(--border);border-radius:5px;height:9px;margin:5px 0 8px;overflow:hidden}.val-pbar-fill{background:var(--accent);width:0;height:100%;transition:width .25s}.val-pbar-fill.indet{width:35%;animation:1.1s ease-in-out infinite val-indet}@keyframes val-indet{0%{margin-left:-35%}to{margin-left:100%}}.val-prog-steps{border-top:1px solid var(--border);max-height:180px;font-size:12px;overflow:auto}.val-pstep{border-bottom:1px solid var(--border);justify-content:space-between;padding:2px;display:flex}.val-pstep .t{font-variant-numeric:tabular-nums;color:var(--text-dim)}.val-pstep.slow .t{color:var(--warn);font-weight:700}.val-pstep.vslow .t{color:var(--danger);font-weight:700}.val-pill{text-align:center;color:#fff;text-transform:uppercase;border-radius:4px;min-width:56px;padding:1px 8px;font-size:12px;font-weight:700;display:inline-block}.val-pill.pass{background:var(--ok)}.val-pill.fail{background:var(--danger)}.val-pill.warn,.val-pill.partial{background:var(--warn)}.val-pill.error{background:#8e5cd9}.val-pill.review{background:var(--accent)}.val-report-tools{gap:8px;margin:10px 0 12px;display:flex}.val-prof-h{border-bottom:2px solid var(--border);margin:18px 0 8px;padding-bottom:4px;font-size:15px;font-weight:600}.val-block{border:1px solid var(--border);border-radius:8px;margin-bottom:10px;overflow:hidden}.val-block-head{background:var(--bg-input);word-break:break-all;align-items:center;gap:10px;padding:8px 12px;font-size:13.5px;font-weight:600;display:flex}.val-block.summary>.val-block-head{background:color-mix(in srgb, var(--danger) 10%, var(--bg-input))}.val-check{border-top:1px solid var(--border);gap:10px;padding:6px 12px;font-size:13.5px;display:flex}.val-check-msg{word-break:break-word;flex:1;min-width:0}.val-check-msg pre{background:var(--bg-input);border:1px solid var(--border);white-space:pre-wrap;word-break:break-all;border-radius:6px;margin:4px 0 0;padding:6px 8px;font-size:12px;overflow:auto}.val-check-msg details summary{cursor:pointer;font-size:12.5px}.val-check-hidden{border-top:1px dashed var(--border);background:var(--bg-input);color:var(--text-dim);align-items:center;gap:10px;padding:5px 12px;font-size:12.5px;display:flex}.val-check-hidden .m{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-decoration:line-through;overflow:hidden}.val-check-hidden .linklike{white-space:nowrap;text-decoration:none}.val-check-del{color:var(--danger);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;align-self:flex-start;padding:0 8px;font-size:15px;line-height:22px}.val-check-del:hover{border-color:var(--danger)}.val-modline{color:var(--text-dim);border-top:1px solid var(--border);word-break:break-all;padding:7px 12px 2px;font-size:12px;font-weight:600}.val-mgrp{border-top:1px solid var(--border)}.val-mgrp>summary{color:var(--accent);cursor:pointer;background:var(--bg-input);align-items:center;gap:7px;padding:8px 12px;font-size:12px;font-weight:600;list-style:none;display:flex}.val-mgrp>summary::-webkit-details-marker{display:none}.val-mgrp>summary:before{content:"▸";color:var(--accent);transition:transform .15s;display:inline-block}.val-mgrp[open]>summary:before{transform:rotate(90deg)}.val-mgrp>summary .mname{word-break:break-all;flex:1;min-width:0}.val-mgrp>summary:after{content:"показать ▾";white-space:nowrap;font-weight:400}.val-mgrp[open]>summary:after{content:"скрыть ▴"}.cnt{background:var(--bg-card);color:var(--accent);border:1px solid var(--border);border-radius:9px;margin-left:6px;padding:0 7px;font-size:11px;display:inline-block}.val-allblocks{margin-top:14px}.val-allblocks>summary{color:var(--text-dim);cursor:pointer;padding:4px 0;font-size:13.5px;font-weight:600}.val-goto{flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;display:flex}.val-profile-form{flex-direction:column;gap:10px;max-width:380px;display:flex}.bug-overlay{z-index:100;background:#0000008c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.bug-dialog{width:100%;max-width:560px;box-shadow:var(--shadow-card);margin-bottom:0}.bug-text{resize:vertical;width:100%}.bug-place-other{margin-top:8px}.bug-attach{margin-top:4px;font-size:13px}.bug-screens{flex-wrap:wrap;gap:10px;margin:4px 0 6px;display:flex}.bug-screen{text-align:center;flex-direction:column;gap:2px;font-size:12px;display:flex}.bug-screen img{border:1px solid var(--border);object-fit:cover;border-radius:6px;max-width:120px;max-height:90px}.val-hist-row{border-top:1px solid var(--border);align-items:center;gap:12px;padding:8px 10px;font-size:13.5px;display:flex}.val-hist-file{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.val-hist-single{border:1px solid var(--border);border-radius:8px;margin-bottom:10px;overflow:hidden}.val-hist-single .val-hist-row{border-top:0}.val-hist-addr{color:var(--text-dim);padding:7px 10px 0;font-size:12px;font-weight:600}.val-hist-group{border:1px solid var(--border);border-radius:8px;margin-bottom:10px;overflow:hidden}.val-hist-group>summary{cursor:pointer;background:var(--bg-input);align-items:center;gap:12px;padding:9px 10px;font-size:13.5px;list-style:none;display:flex}.val-hist-group>summary::-webkit-details-marker{display:none}.val-hist-group>summary:before{content:"▸";color:var(--accent);transition:transform .15s}.val-hist-group[open]>summary:before{transform:rotate(90deg)}.val-filter{flex-wrap:wrap;gap:10px;margin-bottom:12px;display:flex}.val-filter input[type=text]{flex:1;width:auto;min-width:180px;max-width:360px}.val-filter select{width:auto}.val-more{margin-top:10px}.val-review-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.val-review-meta{margin:8px 0;font-size:13px}.val-review-actions{margin-top:10px}.val-undo{margin-top:8px;font-size:13px}.val-rtbl{border-collapse:collapse;width:100%;font-size:13.5px}.val-rtbl th,.val-rtbl td{border:1px solid var(--border);vertical-align:top;text-align:left;padding:6px 8px}.val-rtbl th{background:var(--bg-input);font-size:13px}.val-rtbl tr.grp td{background:var(--bg-input);font-size:13px;font-weight:700}.val-rtbl .rw-comment{resize:vertical;min-height:46px}.val-rtbl img.rthumb{border:1px solid var(--border);border-radius:4px;max-width:280px;max-height:200px;display:block}.val-rtbl .rimg{margin-bottom:6px;font-size:12.5px}.val-rtbl td.act{white-space:nowrap;text-align:center}.val-rtbl tr.rw-del-row td{background:var(--bg-input);border-style:dashed;padding:5px 8px;font-size:12.5px}.rw-handle{cursor:grab;color:var(--text-dim);-webkit-user-select:none;user-select:none;padding:0 3px;font-size:16px}.val-rtbl tr.dragover td{border-top:2px solid var(--accent)}@media (width<=720px){.val-rtbl{display:block;overflow-x:auto}.val-hist-row{flex-wrap:wrap;row-gap:4px}.val-hist-file{white-space:normal;word-break:break-all;flex-basis:100%}}.app-shell{flex-direction:column;min-height:100%;display:flex}.update-banner{background:color-mix(in srgb, var(--warn) 18%, var(--bg-card));border-bottom:1px solid var(--warn);text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding:9px 16px;font-size:13.5px;display:flex}.update-banner button{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:7px;padding:5px 14px;font-size:13px}.update-banner button:hover{background:var(--accent-hover)}.app-header{border-bottom:1px solid var(--border);background:var(--bg-card);justify-content:space-between;align-items:center;padding:14px 24px;display:flex}.app-title{letter-spacing:.2px;cursor:pointer;background:0 0;border:none;padding:0;font-size:15px;font-weight:600}.app-user{color:var(--text-dim);align-items:center;gap:14px;font-size:14px;display:flex}.app-badge{text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);border-radius:5px;margin-left:8px;padding:1px 6px;font-size:11px;font-style:normal;font-weight:600}.user-menu{position:relative}.user-menu-btn{cursor:pointer;color:var(--text);background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:4px;padding:6px 10px;font-size:13.5px;display:inline-flex}.user-menu-btn:hover{border-color:var(--border)}.user-menu-caret{color:var(--text-dim);font-size:10px}.user-menu-drop{background:var(--bg-card);border:1px solid var(--border);min-width:220px;box-shadow:var(--shadow-hover);z-index:50;border-radius:10px;flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.user-menu-drop button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:9px 12px;font-size:13.5px}.user-menu-drop button:hover{background:var(--bg-input)}.app-user button{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;padding:6px 14px;font-size:13.5px;transition:border-color .15s,color .15s}.app-user button:hover{border-color:var(--danger);color:var(--danger)}.home{flex:1;width:100%;max-width:860px;margin:0 auto;padding:48px 24px}.home h1{margin-bottom:24px;font-size:22px;font-weight:600}.home-section{margin-top:40px}.tool-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.tool-card{text-align:left;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;flex-direction:column;align-items:flex-start;gap:10px;padding:22px;transition:border-color .15s,transform .15s,box-shadow .15s;display:flex}.tool-card:hover{border-color:var(--accent);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.tool-icon{background:linear-gradient(135deg, var(--accent), var(--accent-press));color:#fff;border-radius:11px;justify-content:center;align-items:center;width:42px;height:42px;font-size:20px;display:flex}.tool-title{font-size:16px;font-weight:600}.tool-badge{text-align:center;background:var(--danger);color:#fff;vertical-align:2px;border-radius:10px;min-width:20px;margin-left:8px;padding:1px 7px;font-size:12px;font-weight:700;display:inline-block}.tool-desc{color:var(--text-dim);font-size:13.5px;line-height:1.45}.app-main{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex}.app-main h1{font-size:24px;font-weight:600}.app-main p{max-width:440px;color:var(--text-dim);font-size:14.5px;line-height:1.55}.page-back{border:1px solid var(--border);cursor:pointer;color:var(--text-dim);background:0 0;border-radius:8px;align-self:flex-start;margin-bottom:14px;padding:6px 14px;font-size:13.5px;transition:border-color .15s,color .15s}.page-back:hover{border-color:var(--accent);color:var(--text)}.app-back{border:1px solid var(--border);cursor:pointer;color:var(--text-dim);background:0 0;border-radius:8px;margin-top:8px;padding:8px 16px;font-size:14px;transition:border-color .15s,color .15s}.app-back:hover{border-color:var(--accent);color:var(--text)}
