:root{--bg:#f4f6fb;--panel:#ffffff;--border:#e4e8f0;--text:#131a2b;--text-dim:#6b7385;--text-faint:#9aa1b2;--accent:#2f6fed;--accent-dark:#1c4ab8;--green:#18b25a;--green-bg:#e7f8ee;--amber:#b8790b;--amber-bg:#fdf3df;--red:#d13a3a;--red-bg:#fdeaea;--radius:16px;--shadow:0 2px 10px rgba(20,30,60,.06);--shadow-lg:0 12px 34px rgba(20,30,60,.12);font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0;background:var(--bg);color:var(--text)}body,#app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 26px;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:38px;height:38px;border-radius:11px;background:linear-gradient(160deg,#4c8bff,#2f6fed);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;box-shadow:0 4px 10px #2f6fed59}.brand-title{font-size:15.5px;font-weight:800;letter-spacing:-.01em}.brand-sub{font-size:12px;color:var(--text-dim);margin-top:1px}.topbar-right{display:flex;align-items:center;gap:14px}.lang-switch{display:flex;background:var(--bg);border:1px solid var(--border);border-radius:20px;padding:3px}.lang-btn{border:none;background:none;padding:6px 14px;border-radius:16px;font-size:12.5px;font-weight:700;color:var(--text-dim);cursor:pointer}.lang-btn.active{background:var(--accent);color:#fff;box-shadow:0 2px 6px #2f6fed59}.user-menu{display:flex;align-items:center;gap:10px}.user-email{font-size:11.5px;color:var(--text-dim);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.signout-btn{border:1px solid var(--border);background:var(--panel);border-radius:10px;font-size:11.5px;font-weight:700;color:var(--text-dim);padding:6px 12px;cursor:pointer}.signout-btn:hover{color:var(--red);border-color:var(--red)}.layout{flex:1;display:grid;grid-template-columns:300px minmax(320px,1fr) 340px;gap:18px;padding:20px 26px;align-items:start}@media (max-width:1100px){.layout{grid-template-columns:1fr}}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.dropzone{border:2px dashed #c7d0e0;border-radius:14px;padding:26px 16px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s}.dropzone:hover,.dropzone.dragover{border-color:var(--accent);background:#f2f6ff}.dropzone-icon{font-size:26px;color:var(--accent);margin-bottom:8px}.dropzone-title{font-size:13.5px;font-weight:700;color:var(--text)}.dropzone-sub{font-size:11.5px;color:var(--text-dim);margin-top:4px}.file-list{margin-top:14px;display:flex;flex-direction:column;gap:8px;max-height:420px;overflow-y:auto}.file-chip{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;border:1px solid var(--border);cursor:pointer;transition:background .15s,border-color .15s;position:relative}.file-chip:hover{background:#f7f9fd}.file-chip.active{border-color:var(--accent);background:#eef4ff}.file-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.file-dot.pass{background:var(--green)}.file-dot.warn{background:var(--amber)}.file-dot.fail{background:var(--red)}.file-meta{flex:1;min-width:0}.file-name{font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-size{font-size:11px;color:var(--text-dim)}.file-remove{border:none;background:none;color:var(--text-faint);cursor:pointer;font-size:14px;width:22px;height:22px;border-radius:50%;flex-shrink:0}.file-remove:hover{background:var(--red-bg);color:var(--red)}.uploader-note{margin-top:14px;font-size:11px;color:var(--text-faint);line-height:1.5;text-align:center}.shared-banner{background:var(--green-bg);color:var(--green);font-size:11.5px;font-weight:700;padding:9px 12px;border-radius:10px;margin-bottom:12px;line-height:1.4}.share-btn{width:100%;margin-top:12px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border);background:var(--panel);border-radius:12px;font-size:12.5px;font-weight:700;color:var(--text);padding:10px 12px;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.share-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:#f2f6ff}.share-btn:disabled{opacity:.4;cursor:default}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0f142373;display:flex;align-items:center;justify-content:center;padding:20px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{position:relative;width:100%;max-width:380px;background:var(--panel);border-radius:18px;padding:24px 22px 22px;box-shadow:var(--shadow-lg)}.modal-close{position:absolute;top:12px;right:12px;border:none;background:none;font-size:18px;color:var(--text-faint);cursor:pointer;width:26px;height:26px;border-radius:50%;line-height:1}.modal-close:hover{background:var(--bg);color:var(--text)}.modal-title{font-size:16px;font-weight:800;margin-bottom:6px;padding-right:20px}.modal-sub{font-size:12px;color:var(--text-dim);line-height:1.5;margin-bottom:18px}.modal-step{display:flex;flex-direction:column;gap:10px}.modal-label{font-size:11.5px;font-weight:700;color:var(--text-dim)}.ttl-switch{display:flex;gap:6px}.ttl-opt{flex:1;border:1px solid var(--border);background:var(--bg);border-radius:10px;font-size:12px;font-weight:700;color:var(--text-dim);padding:8px 4px;cursor:pointer}.ttl-opt.active{border-color:var(--accent);background:#eef4ff;color:var(--accent)}.modal-primary-btn{border:none;background:var(--accent);color:#fff;border-radius:11px;font-size:13px;font-weight:800;padding:11px 16px;cursor:pointer;margin-top:4px;box-shadow:0 4px 12px #2f6fed4d}.modal-primary-btn:hover{background:var(--accent-dark)}.modal-primary-btn:disabled{opacity:.5;cursor:default}.share-link-row{display:flex;gap:8px}.share-link-row input{flex:1;min-width:0;border:1px solid var(--border);border-radius:10px;padding:9px 10px;font-size:12px;color:var(--text);background:var(--bg)}.share-link-row .modal-primary-btn{margin-top:0;flex-shrink:0}.modal-note{font-size:11px;color:var(--text-faint)}.modal-error{font-size:12.5px;color:var(--red);background:var(--red-bg);border-radius:10px;padding:10px 12px;line-height:1.5}.modal-spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:spin .8s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}.load-share-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;font-size:13px;font-weight:600;color:var(--text-dim)}.preview-panel{display:flex;flex-direction:column;align-items:center;min-height:640px;height:calc(100vh - 130px)}.preview-toolbar{width:100%;display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-wrap:wrap;gap:8px}.preview-nav{display:flex;align-items:center;gap:10px}.nav-arrow{width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:var(--panel);cursor:pointer;font-size:14px;color:var(--text)}.nav-arrow:disabled{opacity:.35;cursor:default}.preview-counter{font-size:12px;font-weight:700;color:var(--text-dim);min-width:44px;text-align:center}.preview-filename{font-size:12.5px;font-weight:700;color:var(--text-dim);flex:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 8px}.preview-controls{display:flex;gap:8px}.ctrl-btn{border:1px solid var(--border);background:var(--panel);border-radius:10px;font-size:11.5px;font-weight:700;color:var(--text-dim);padding:6px 10px;cursor:pointer}.ctrl-btn:hover{color:var(--accent);border-color:var(--accent)}.device-switch{display:flex;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:4px;margin-bottom:12px}.device-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;border:none;background:none;padding:8px 10px;border-radius:9px;cursor:pointer;font-size:12px;font-weight:700;color:var(--text-dim)}.device-btn .device-ic{font-size:13px}.device-btn.active{background:var(--panel);color:var(--accent);box-shadow:var(--shadow)}.phone-stage{flex:1;display:flex;align-items:center;justify-content:center;width:100%;padding:10px 0;min-height:0;overflow:hidden}.phone-device{position:relative;width:300px;height:614px;border-radius:46px;background:linear-gradient(160deg,#2b2f3a,#0d0f14);box-shadow:0 26px 60px #0f193240,inset 0 0 0 2px #ffffff0d;padding:12px;transition:width .25s,height .25s,border-radius .25s,transform .2s;transform-origin:50% 50%;flex-shrink:0}.phone-device.type-tablet{border-radius:28px;background:linear-gradient(160deg,#33373f,#14161b)}.phone-device.type-desktop{border-radius:12px;padding:0;background:#1c1f26;box-shadow:0 20px 50px #0f193238}.phone-notch{position:absolute;top:20px;left:50%;transform:translate(-50%);width:110px;height:22px;background:#05060a;border-radius:12px;z-index:5}.phone-device.landscape .phone-notch{top:50%;left:20px;transform:translateY(-50%) rotate(90deg)}.phone-device.type-tablet .phone-notch,.phone-device.type-desktop .phone-notch{display:none}.tablet-cam{display:none;position:absolute;top:11px;left:50%;transform:translate(-50%);width:7px;height:7px;border-radius:50%;background:#05060a;z-index:5}.phone-device.type-tablet .tablet-cam{display:block}.phone-device.landscape.type-tablet .tablet-cam{top:50%;left:12px;transform:translateY(-50%)}.desktop-titlebar{display:none}.phone-device.type-desktop .desktop-titlebar{display:flex;align-items:center;gap:6px;height:34px;padding:0 12px;background:#2b2f38;border-radius:12px 12px 0 0}.tb-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.tb-red{background:#ff5f57}.tb-yellow{background:#febc2e}.tb-green{background:#28c840}.tb-address{flex:1;margin-left:10px;background:#1c1f26;color:#8a93ab;font-size:10.5px;font-weight:600;border-radius:6px;padding:5px 10px;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.phone-screen{position:relative;width:100%;height:100%;border-radius:34px;overflow:hidden;background:#fff}.phone-device.landscape .phone-screen{border-radius:24px}.phone-device.type-tablet .phone-screen{border-radius:18px}.phone-device.type-desktop .phone-screen{border-radius:0 0 12px 12px;height:calc(100% - 34px)}.phone-btn{position:absolute;background:#1a1d26;border-radius:2px}.phone-btn-side1{left:-3px;top:118px;width:3px;height:32px}.phone-btn-side2{left:-3px;top:160px;width:3px;height:60px}.phone-btn-power{right:-3px;top:140px;width:3px;height:76px}.phone-device.type-tablet .phone-btn,.phone-device.type-desktop .phone-btn{display:none}.device-dims{margin-top:10px;font-size:11px;color:var(--text-faint);text-align:center;font-weight:600}#previewFrame{width:100%;height:100%;border:none;display:block;background:#fff}.empty-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--text-faint);font-size:12.5px;font-weight:600;text-align:center;padding:0 24px;background:#fafbfd}.empty-icon{font-size:30px;margin-bottom:4px;opacity:.7}.empty-sub{font-size:11px;font-weight:500;color:var(--text-faint)}.checks-panel{max-height:calc(100vh - 110px);overflow-y:auto;position:sticky;top:90px}.checks-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.checks-header h2{font-size:15px;margin:0}.overall-badge{font-size:11px;font-weight:800;padding:5px 12px;border-radius:14px;background:var(--border);color:var(--text-dim)}.overall-badge.pass{background:var(--green-bg);color:var(--green)}.overall-badge.warn{background:var(--amber-bg);color:var(--amber)}.overall-badge.fail{background:var(--red-bg);color:var(--red)}.checks-empty{font-size:12.5px;color:var(--text-faint);line-height:1.6;padding:10px 2px}.size-block{margin:10px 0 18px}.size-row{display:flex;justify-content:space-between;font-size:12.5px;font-weight:700;margin-bottom:8px}.size-bar{position:relative;height:10px;border-radius:6px;background:#eef1f7;overflow:visible}.size-bar-fill{height:100%;border-radius:6px;background:linear-gradient(90deg,#3fe583,#18b25a);width:0%;transition:width .4s}.size-bar-fill.warn{background:linear-gradient(90deg,#ffcf6b,#b8790b)}.size-bar-fill.fail{background:linear-gradient(90deg,#ff8a8a,#d13a3a)}.size-bar-marker{position:absolute;top:-3px;width:2px;height:16px;background:var(--text-faint);opacity:.5}.size-bar-caption{font-size:10.5px;color:var(--text-faint);margin-top:6px}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);font-weight:800;margin:18px 0 8px}.network-table{display:flex;flex-direction:column;gap:6px}.network-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;border:1px solid var(--border)}.network-name{flex:1;font-size:12.5px;font-weight:700}.network-limit{font-size:10.5px;color:var(--text-faint)}.network-verdict{font-size:10.5px;font-weight:800;padding:3px 9px;border-radius:10px}.network-verdict.pass{background:var(--green-bg);color:var(--green)}.network-verdict.warn{background:var(--amber-bg);color:var(--amber)}.network-verdict.fail{background:var(--red-bg);color:var(--red)}.network-note{font-size:10.5px;color:var(--text-faint);padding:0 10px 4px;margin-top:-4px;line-height:1.4}.check-list{display:flex;flex-direction:column;gap:8px}.check-item{display:flex;gap:10px;padding:9px 10px;border-radius:10px;border:1px solid var(--border)}.check-icon{flex-shrink:0;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#fff;margin-top:1px}.check-icon.pass{background:var(--green)}.check-icon.warn{background:var(--amber)}.check-icon.fail{background:var(--red)}.check-body{flex:1;min-width:0}.check-title{font-size:12.5px;font-weight:700}.check-detail{font-size:11px;color:var(--text-dim);margin-top:2px;line-height:1.45;word-break:break-word}.info-list{display:flex;flex-direction:column;gap:8px}.info-row{display:flex;justify-content:space-between;gap:10px;font-size:12px;padding:6px 2px;border-bottom:1px solid var(--border)}.info-row:last-child{border-bottom:none}.info-key{color:var(--text-dim);font-weight:600}.info-val{font-weight:700;text-align:right;word-break:break-word;max-width:60%}.footer{text-align:center;font-size:11px;color:var(--text-faint);padding:16px;border-top:1px solid var(--border);background:var(--panel)}.signin-screen{flex:1;display:flex;align-items:center;justify-content:center;padding:24px}.signin-card{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:28px 26px}.signin-title{font-size:17px;font-weight:800;margin-bottom:4px}.signin-sub{font-size:12px;color:var(--text-dim);line-height:1.5;margin-bottom:20px}.signin-google-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border);background:var(--panel);border-radius:11px;font-size:13px;font-weight:700;color:var(--text);padding:11px 14px;cursor:pointer;margin-bottom:16px}.signin-google-btn:hover{border-color:var(--accent);color:var(--accent)}.signin-divider{display:flex;align-items:center;gap:10px;font-size:10.5px;color:var(--text-faint);margin:14px 0;text-transform:uppercase;letter-spacing:.04em}.signin-divider:before,.signin-divider:after{content:"";flex:1;height:1px;background:var(--border)}.signin-field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.signin-field label{font-size:11.5px;font-weight:700;color:var(--text-dim)}.signin-field input{border:1px solid var(--border);border-radius:10px;padding:9px 11px;font-size:13px;color:var(--text);background:var(--bg)}.signin-field input:focus{outline:none;border-color:var(--accent)}.signin-submit-btn{width:100%;border:none;background:var(--accent);color:#fff;border-radius:11px;font-size:13px;font-weight:800;padding:11px 16px;cursor:pointer;margin-top:4px}.signin-submit-btn:hover{background:var(--accent-dark)}.signin-submit-btn:disabled{opacity:.5;cursor:default}.signin-error{font-size:12px;color:var(--red);background:var(--red-bg);border-radius:10px;padding:9px 11px;margin-top:12px;line-height:1.45}
