:root{--bg: #f6f8fc;--panel: #ffffff;--panel-soft: #f8fafc;--panel-sunk: #e9eef6;--ink: #0f172a;--ink-soft: #64748b;--ink-faint: #a3aec2;--line: #e3e9f2;--line-soft: #eef2f8;--brand: #2563eb;--brand-strong: #1d4ed8;--brand-deep: #1e3a8a;--brand-soft: #eff5ff;--brand-line: #c3d8fb;--brand-rgb: 37, 99, 235;--indigo: #6366f1;--indigo-rgb: 99, 102, 241;--accent: #f97316;--accent-strong: #c2410c;--accent-soft: #fff7ed;--accent-line: #fed7aa;--accent-rgb: 249, 115, 22;--ok: #047857;--ok-soft: #d7f7e6;--ok-line: #a7e9c8;--warn: #b45309;--warn-soft: #fff3da;--warn-line: #f6d999;--danger: #dc2626;--danger-soft: #fee7e9;--danger-line: #fbc5cb;--info: #1d4ed8;--info-soft: #dfeafe;--info-line: #bfd5fb;--info-rgb: 29, 78, 216;--tint-sky: linear-gradient(135deg, #d6e9ff 0%, #e2f3ff 100%);--tint-mint: linear-gradient(135deg, #c9f7df 0%, #dcfbe9 100%);--tint-peach: linear-gradient(135deg, #ffe3c7 0%, #fff0d6 100%);--tint-pink: linear-gradient(135deg, #fcdcec 0%, #ffe6ee 100%);--tint-lavender: linear-gradient(135deg, #e6e0ff 0%, #e4eaff 100%);--tint-teal: linear-gradient(135deg, #c8f5ee 0%, #d5f6fb 100%);--tint-header: linear-gradient(100deg, #dceaff 0%, #e6e6ff 48%, #fbe3f1 100%);--radius: 16px;--radius-sm: 10px;--shadow: 0 1px 2px rgba(30, 58, 138, .04), 0 8px 24px rgba(30, 58, 138, .06);--shadow-lift: 0 2px 6px rgba(30, 58, 138, .06), 0 16px 36px rgba(30, 58, 138, .1);--ring: 0 0 0 3px rgba(var(--brand-rgb), .16)}*{box-sizing:border-box}body{margin:0;font-family:IBM Plex Sans Thai,Sarabun,system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--brand)}a:hover{color:var(--brand-strong)}::selection{background:rgba(var(--brand-rgb),.18)}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--tint-header);color:var(--ink);padding:0 20px;display:flex;align-items:center;gap:24px;height:58px;border-bottom:1px solid #d9e2f5;box-shadow:0 4px 16px #1e3a8a0f;position:sticky;top:0;z-index:20}.topbar .brand{font-weight:700;font-size:18px;letter-spacing:.1px;color:var(--brand-strong)}.topbar .brand small{display:block;font-weight:500;font-size:11px;letter-spacing:.9px;color:var(--ink-soft)}.topbar nav{display:flex;gap:4px;margin-left:auto}.topbar nav a{color:#475569;text-decoration:none;padding:7px 14px;border-radius:999px;font-size:14px;font-weight:500;transition:background .15s,color .15s}.topbar nav a:hover{background:#fff9;color:var(--brand-strong)}.topbar nav a.active{background:#fff;color:var(--brand-strong);font-weight:600;box-shadow:0 2px 10px #1e3a8a1f}.page{padding:22px;max-width:1400px;width:100%;margin:0 auto;flex:1}.page.wide{max-width:none;padding:0}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.card+.card{margin-top:16px}.card h2{margin:0 0 4px;font-size:18px;display:flex;align-items:center;gap:10px;color:var(--ink)}.card:has(>h2>.step-no){background:linear-gradient(180deg,#e9ecff 0,#f3f6ff 46px,var(--panel) 104px)}.step-no{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#818cf8,var(--indigo));color:#fff;font-size:15px;font-weight:700;flex:0 0 auto;box-shadow:0 3px 8px rgba(var(--indigo-rgb),.35)}.card .hint{color:var(--ink-soft);font-size:13px;margin:0 0 14px}.card:has(>h2>.step-no)+.card:has(>h2>.step-no){background:linear-gradient(180deg,#dcefff 0,#eef7ff 46px,var(--panel) 104px)}.card:has(>h2>.step-no)+.card:has(>h2>.step-no) .step-no{background:linear-gradient(135deg,#38bdf8,#0284c7);box-shadow:0 3px 8px #0284c759}.card:has(>h2>.step-no)+.card:has(>h2>.step-no)+.card:has(>h2>.step-no){background:linear-gradient(180deg,#ffe6cf 0,#fff4e6 46px,var(--panel) 104px)}.card:has(>h2>.step-no)+.card:has(>h2>.step-no)+.card:has(>h2>.step-no) .step-no{background:linear-gradient(135deg,#fb923c,#ea580c);box-shadow:0 3px 8px #ea580c59}.card.attention{border-color:var(--accent-line);background:linear-gradient(180deg,#fff3e2 0,var(--panel) 90px)}.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1 1 200px}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}label.field{display:block;font-size:13px;color:var(--ink-soft);margin-bottom:4px;font-weight:500}input[type=text],input[type=password],input[type=search],select,textarea{width:100%;padding:8px 11px;border:1px solid var(--line);border-radius:var(--radius-sm);font:inherit;background:#fff;color:var(--ink);transition:border-color .15s,box-shadow .15s}input[type=text]:hover,input[type=password]:hover,input[type=search]:hover,select:hover,textarea:hover{border-color:var(--brand-line)}textarea{resize:vertical;min-height:64px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}::placeholder{color:var(--ink-faint)}button{font:inherit;padding:8px 16px;border-radius:var(--radius-sm);border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform .05s}button:hover:not(:disabled){border-color:var(--brand-line);color:var(--brand-strong);background:var(--brand-soft)}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible{outline:none;box-shadow:var(--ring)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:linear-gradient(180deg,#3b82f6 0%,var(--brand) 100%);border-color:var(--brand);color:#fff;font-weight:600;box-shadow:0 1px 2px #1e3a8a33,0 6px 16px rgba(var(--brand-rgb),.26)}button.primary:hover:not(:disabled){background:linear-gradient(180deg,var(--brand) 0%,var(--brand-strong) 100%);color:#fff;border-color:var(--brand-strong)}button.ghost{background:transparent}button.ghost:hover:not(:disabled){background:var(--brand-soft)}button.danger{color:var(--danger);border-color:var(--danger-line)}button.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}button.sm{padding:4px 10px;font-size:13px;border-radius:8px}.dropzone{border:2px dashed var(--brand-line);border-radius:var(--radius);padding:42px 20px;text-align:center;background:var(--tint-sky);cursor:pointer;transition:.15s}.dropzone:hover{border-color:var(--brand)}.dropzone.over{border-color:var(--brand);background:var(--tint-lavender);box-shadow:var(--ring)}.dropzone .big{font-size:17px;font-weight:600;color:var(--brand-strong)}.dropzone .small{color:var(--ink-soft);font-size:13px;margin-top:6px}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th,table.data td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line-soft);vertical-align:top}table.data th{font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft);font-weight:600;background:var(--panel-soft);border-bottom:1px solid var(--line)}table.data th:first-child{border-top-left-radius:var(--radius-sm)}table.data th:last-child{border-top-right-radius:var(--radius-sm)}table.data tr:hover td{background:#f5f8ff}table.data tr.version-row td{background:var(--panel-soft);font-size:13px;border-bottom:1px solid var(--line-soft)}table.data tr.version-row:hover td{background:#f0f4fb}table.data td.row-actions{white-space:nowrap}table.data td .row>*{flex:0 0 auto}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:500;background:#edf1f7;color:var(--ink-soft);white-space:nowrap}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.err{background:var(--danger-soft);color:var(--danger)}.badge.info{background:var(--info-soft);color:var(--info)}.muted{color:var(--ink-faint)}.review{display:grid;grid-template-columns:minmax(420px,1fr) minmax(440px,1fr);height:calc(100vh - 58px)}.review .pane{overflow:auto;background:var(--panel)}.review .pane.left{border-right:1px solid var(--line);background:var(--panel-sunk)}.pane-head{position:sticky;top:0;z-index:5;background:var(--panel);border-bottom:1px solid var(--line);padding:10px 14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pane.left .pane-head{background:var(--panel-soft)}.pdf-stage{padding:16px;display:flex;flex-direction:column;align-items:center;gap:18px}.pdf-page{position:relative;box-shadow:var(--shadow-lift);background:#fff}.pdf-page canvas{display:block}.line-box{position:absolute;border:1px solid transparent;border-radius:2px;cursor:pointer}.line-box:hover{background:rgba(var(--indigo-rgb),.1);border-color:rgba(var(--indigo-rgb),.4)}.line-box.active{background:rgba(var(--accent-rgb),.22);border-color:var(--accent)}.line-box.keyword{background:rgba(var(--info-rgb),.16);border-color:rgba(var(--info-rgb),.45)}.line-box.keyword.active{background:rgba(var(--accent-rgb),.3);border-color:var(--accent)}.line-box.hit{background:#facc1552;border-color:#ca8a0499}.line-box.hit.active{background:#fa961573;border-color:#b45309}.page-label{font-size:12px;color:var(--ink-soft)}.field-row{padding:10px 14px;border-bottom:1px solid var(--line-soft)}.field-row.active{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.field-row .top{display:flex;align-items:center;gap:8px;margin-bottom:4px}.field-row .name{font-weight:600;font-size:14px}.field-row .src{font-size:12px;color:var(--ink-soft);cursor:pointer;text-decoration:underline dotted}.field-row .src:hover{color:var(--brand)}.field-row .orig{font-size:12px;color:var(--ink-soft);margin-top:4px}.field-row .orig s{color:var(--danger)}.table-field{border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:#fff}.table-field table{width:100%;border-collapse:collapse}.table-field th{background:var(--panel-soft);font-size:12px;font-weight:600;color:var(--ink-soft);text-align:left;padding:5px 8px;border-bottom:1px solid var(--line);white-space:nowrap}.table-field td{padding:0;border-bottom:1px solid var(--line-soft)}.table-field td.rn,.table-field th.rn{width:30px;text-align:right;padding:5px 6px;color:var(--ink-soft);font-size:12px;font-family:IBM Plex Mono,monospace;background:var(--panel-soft)}.table-field td input{border:none;border-radius:0;padding:5px 8px;width:100%;background:transparent}.table-field td input:focus{box-shadow:inset 0 0 0 2px rgba(var(--brand-rgb),.35);background:#fff}.table-field td input.num{text-align:right;font-family:IBM Plex Mono,monospace;font-size:13px}.table-field>button{margin:6px 8px}.line-table{width:100%;border-collapse:collapse;font-size:14px}.line-table td{border-bottom:1px solid var(--line-soft);padding:5px 10px;vertical-align:top}.line-table td.no{width:46px;color:var(--ink-faint);font-family:IBM Plex Mono,monospace;font-size:12px;text-align:right}.line-table td.conf{width:54px;font-size:12px;color:var(--ink-soft);text-align:right}.line-table tr:hover td{background:#f5f8ff}.line-table tr.active td{background:var(--accent-soft)}.line-table tr.matched td.text{border-left:3px solid var(--brand)}.alert-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 14px;font-size:13px;background:var(--danger-soft);color:#991b1b;border-bottom:1px solid var(--danger-line)}.alert-bar.info{background:var(--info-soft);color:var(--info);border-bottom-color:var(--info-line)}.alert-bar>span:first-child{flex:1;min-width:200px}.save-bar{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 14px;background:var(--panel-soft);border-bottom:1px solid var(--line)}.save-bar.dirty{background:var(--warn-soft);border-bottom-color:var(--warn-line)}.save-bar .save-status{flex:1;min-width:180px;font-size:13px;color:var(--ink-soft)}.save-bar.dirty .save-status{color:var(--warn);font-weight:600}.line-text{cursor:text;border-radius:4px;padding:1px 3px;margin:-1px -3px}.line-text:hover{background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand-line)}.line-table td.text input[type=text]{font:inherit;padding:3px 6px}.line-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px}.line-meta .kw-add{font-size:12px;padding:1px 8px;color:var(--ink-soft);opacity:.55}.line-table tr:hover .kw-add,.line-table tr.active .kw-add{opacity:1}mark.kw{background:#cfe0fc;color:var(--info);border-radius:3px;padding:0 2px}mark.hit{background:#fde68a;color:#713f12;border-radius:3px;padding:0 2px;font-weight:600}.chip-x{margin-left:5px;cursor:pointer;opacity:.55}.chip-x:hover{opacity:1;color:var(--danger)}.tabs{display:flex;gap:2px}.tabs button{border:none;border-radius:8px 8px 0 0;background:transparent;color:var(--ink-soft);font-weight:500;box-shadow:inset 0 -2px 0 transparent}.tabs button:hover:not(:disabled){background:var(--brand-soft);color:var(--brand-strong)}.tabs button.on{color:var(--brand-strong);font-weight:600;background:transparent;box-shadow:inset 0 -3px 0 var(--brand)}.gen-panel{margin-top:14px;padding:16px;border-radius:var(--radius);background:var(--tint-lavender);border:1px solid #d5d3fb}.gen-panel .hint{margin-bottom:12px}.config-box{background:#0f1b33;color:#dbe6fb;border-radius:var(--radius-sm);padding:12px 14px;font-family:IBM Plex Mono,monospace;font-size:12.5px;line-height:1.6;overflow-x:auto;margin:0 0 10px;border:1px solid #1e2f52}.tool-row{padding:12px 0;border-bottom:1px solid var(--line-soft)}.tool-row:last-child{border-bottom:none}.tool-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.tool-name{background:var(--brand-soft);color:var(--brand-strong);font-weight:600;padding:3px 9px;border-radius:7px;font-size:13px;border:1px solid var(--brand-line)}.tool-desc{font-size:13.5px;line-height:1.6;color:var(--ink)}table.data.tool-params{margin-top:8px;background:var(--panel-soft);border-radius:6px}table.data.tool-params th{font-size:11px}.rename-cell{display:flex;align-items:center;gap:8px}.rename-cell input{flex:1 1 auto;min-width:140px}.rename-cell .ext{color:var(--ink-soft);font-size:13px;white-space:nowrap}.sim-control{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding:8px 12px;background:var(--panel-soft);border:1px solid var(--line);border-radius:var(--radius-sm)}.sim-control input[type=range]{flex:1 1 180px;max-width:260px;accent-color:var(--brand)}.sim-control .sim-value{min-width:44px;text-align:right;font-weight:700;color:var(--brand-strong);font-size:14px}.result-doc{border-bottom:1px solid var(--line-soft);padding:14px 2px 16px}.result-doc:last-child{border-bottom:none}.result-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.result-head .name{font-weight:600;font-size:15px;text-decoration:none}.result-head .name:hover{text-decoration:underline}.result-fields{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 8px}.passage{border-left:3px solid var(--brand-line);padding:4px 0 4px 12px;margin:8px 0 8px 4px;transition:border-color .15s}.passage:hover{border-left-color:var(--brand)}.passage-meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:2px}.passage-meta a{font-size:12px;color:var(--ink-soft);text-decoration:none}.passage-meta a:hover{color:var(--brand);text-decoration:underline}.passage-text{white-space:pre-wrap;font-size:14px;line-height:1.6}.empty-state{padding:40px 20px;text-align:center;color:var(--ink-soft)}.mono{font-family:IBM Plex Mono,monospace;font-size:12px}.spinner{width:14px;height:14px;border:2px solid var(--brand-line);border-top-color:var(--brand);border-radius:50%;display:inline-block;animation:spin .8s linear infinite;vertical-align:-2px}button.primary .spinner{border-color:#fff5;border-top-color:#fff}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;bottom:20px;right:20px;z-index:100;background:linear-gradient(180deg,#3b82f6,var(--brand));color:#fff;padding:11px 18px;border-radius:999px;box-shadow:0 10px 28px rgba(var(--brand-rgb),.35);font-size:14px;font-weight:500;max-width:420px}.toast.err{background:linear-gradient(180deg,#ef4444,var(--danger));box-shadow:0 10px 28px #dc262652}.progress-bar{height:6px;background:var(--line);border-radius:999px;overflow:hidden}.progress-bar>div{height:100%;background:linear-gradient(90deg,#60a5fa,var(--indigo));transition:width .3s}.stat{display:flex;gap:14px;flex-wrap:wrap}.stat>div{min-width:130px;flex:1 1 130px;padding:14px 18px;border-radius:14px;background:var(--tint-sky);box-shadow:inset 0 0 0 1px #ffffffb3,0 4px 14px #1e3a8a0f}.stat .n{font-size:26px;font-weight:700;line-height:1.25;color:#0369a1}.stat .l{font-size:12.5px;color:#475569}.stat>div:nth-child(6n+2){background:var(--tint-mint)}.stat>div:nth-child(6n+2) .n{color:#047857}.stat>div:nth-child(6n+3){background:var(--tint-peach)}.stat>div:nth-child(6n+3) .n{color:#c2410c}.stat>div:nth-child(6n+4){background:var(--tint-lavender)}.stat>div:nth-child(6n+4) .n{color:#6d28d9}.stat>div:nth-child(6n+5){background:var(--tint-pink)}.stat>div:nth-child(6n+5) .n{color:#be185d}.stat>div:nth-child(6n+6){background:var(--tint-teal)}.stat>div:nth-child(6n+6) .n{color:#0f766e}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(900px 520px at 8% 6%,#cfe3ff 0%,transparent 62%),radial-gradient(760px 520px at 94% 94%,#fbd9ea 0%,transparent 62%),radial-gradient(700px 460px at 90% 8%,#d9f6e8 0%,transparent 60%),linear-gradient(140deg,#eaf2ff,#ecebff,#fdeef5);color:var(--ink-soft)}.login-card{background:var(--panel);color:var(--ink);border-radius:20px;border:1px solid #ffffffcc;box-shadow:0 24px 60px #1e3a8a29;padding:30px;width:100%;max-width:420px}.login-card h2{margin:0 0 4px;font-size:19px;color:var(--ink)}.login-card .hint{color:var(--ink-soft);font-size:13px;margin:0 0 18px}.login-card input[type=text],.login-card input[type=password]{width:100%}.login-brand{font-weight:700;font-size:19px;color:var(--brand-strong);padding-bottom:14px;margin-bottom:18px;border-bottom:1px solid var(--line)}.login-brand small{display:block;font-weight:500;font-size:11px;color:var(--ink-soft);letter-spacing:.9px}.login-error{margin-top:14px;padding:9px 12px;border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--danger);font-size:13px;border:1px solid var(--danger-line)}.login-ok{margin-top:14px;padding:9px 12px;border-radius:var(--radius-sm);background:var(--ok-soft);color:var(--ok);font-size:13px;border:1px solid var(--ok-line)}.usermenu{display:flex;align-items:center;gap:10px;margin-left:16px}.usermenu-name{color:var(--ink);text-decoration:none;font-size:13px;line-height:1.45;font-weight:600;padding:4px 10px;border-radius:var(--radius-sm)}.usermenu-name:hover{background:#fff9;color:var(--brand-strong)}.usermenu-name small{display:block;font-size:11px;font-weight:400;color:var(--ink-soft)}.usermenu .logout{color:var(--brand-strong);border-color:#c7d2fe;background:#ffffff80}.usermenu .logout:hover:not(:disabled){background:#fff;color:var(--brand-strong);border-color:var(--brand)}.pw-notice{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin:0 0 16px;padding:14px;background:#fff8e6;border:1px solid #f3d892;border-radius:var(--radius)}.pw-notice>div:first-child{flex:1 1 260px}.pw-value{display:inline-block;font-size:16px;letter-spacing:.5px;background:#fff;border:1px solid #f3d892;border-radius:8px;padding:6px 12px;-webkit-user-select:all;user-select:all}.owner-tag{font-size:12px;color:var(--ink-soft)}@media(max-width:980px){.review{grid-template-columns:1fr;height:auto}.review .pane{max-height:70vh}.topbar{flex-wrap:wrap;height:auto;min-height:58px;padding:6px 14px;gap:8px 16px}.topbar nav{flex-wrap:wrap}.usermenu{margin-left:auto}}
