:root{--bg:#f4f5fb;--panel:#ffffff;--panel-2:#f9fafb;--line:#e5e7f0;--line-2:#d4d7e3;--text:#111827;--muted:#6b7280;--faint:#9ca3af;--blue:#4f46e5;--blue-2:#3730a3;--blue-soft:#eef0ff;--blue-line:#c7cbff;--green:#16a34a;--green-soft:#dcfce7;--green-text:#166534;--amber:#d97706;--amber-soft:#fef3c7;--amber-text:#92400e;--sky-soft:#dbeafe;--sky-text:#1e40af;--violet-soft:#ede9fe;--violet-text:#5b21b6;--red:#dc2626;--red-soft:#fee2e2;--red-text:#991b1b;--radius:18px;--radius-sm:12px;--shadow:0 1px 2px rgba(17,24,39,0.04)}*{box-sizing:border-box}body,html{margin:0;background:var(--bg);color:var(--text)}body{font-family:Kanit,Noto Sans Thai,system-ui,sans-serif;font-size:14px;line-height:1.5;font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0;font-weight:600}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:12px}.shell{display:flex;min-height:100vh}.side{width:232px;flex:0 0 232px;background:var(--panel);border-right:1px solid var(--line);padding:22px 16px;display:flex;flex-direction:column;gap:6px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.side .brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:18px;padding:6px 10px 20px}.side .brand .logo{width:34px;height:34px;border-radius:10px;background:var(--blue);display:grid;place-items:center;color:#fff}.side nav{display:flex;flex-direction:column;gap:4px}.side nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:#4b5563;font-size:14px}.side nav a svg{width:18px;height:18px;flex:none}.side nav a:hover{background:var(--panel-2);color:var(--text)}.side nav a[aria-current=page]{background:var(--blue-soft);color:var(--blue);font-weight:600}.side nav a .cnt{margin-left:auto;background:var(--blue);color:#fff;border-radius:10px;font-size:11px;padding:1px 7px;font-weight:600}.side .spacer{flex:1 1}.side .plan{background:var(--blue-soft);border-radius:12px;padding:12px 14px;font-size:13px;line-height:1.5;margin-bottom:8px}.side .plan b{color:var(--blue-2);display:block;margin-bottom:2px}.user-chip{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px}.user-chip:hover{background:var(--panel-2)}.user-chip .av{width:30px;height:30px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:600;flex:none}.user-chip .nm{font-size:14px;line-height:1.2}.user-chip .nm small{display:block;font-size:11px;color:var(--muted)}.content{flex:1 1;min-width:0}.wrap{max-width:1440px;margin:0 auto;padding:26px 32px 60px}.topbar-mobile{display:none}@media (max-width:900px){.shell{flex-direction:column}.side{width:100%;flex:none;height:auto;position:static;padding:12px 16px;flex-direction:row;flex-wrap:wrap;align-items:center}.side .brand{padding:4px 6px}.side nav{flex-direction:row;flex-wrap:wrap}.side .plan,.side .spacer{display:none}.wrap{padding:18px 16px 40px}}.page-head{display:flex;align-items:center;gap:14px;margin-bottom:20px;flex-wrap:wrap}.page-head h1{font-size:24px;font-weight:600}.page-head .sub{color:var(--muted);font-size:14px}.page-head .ctl{margin-left:auto;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;flex-wrap:wrap}.seg{display:inline-flex;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel);padding:4px;gap:4px}.seg a{min-width:36px;height:32px;padding:0 10px;display:grid;place-items:center;color:var(--muted);border-radius:9px;font-size:13px}.seg a[aria-current=true]{background:var(--text);color:#fff}input.ctl-inp,select.ctl-sel{height:38px;padding:0 12px;border-radius:10px;color:var(--text)}.stages,input.ctl-inp,select.ctl-sel{border:1px solid var(--line);background:var(--panel)}.stages{display:flex;gap:6px;flex-wrap:wrap;border-radius:14px;padding:6px;width:-moz-fit-content;width:fit-content;margin-bottom:18px;max-width:100%}.stages a{padding:8px 14px;border-radius:10px;font-size:13px;color:#4b5563}.stages a[aria-current=true]{background:var(--text);color:#fff;font-weight:500}.search{display:grid;grid-template-columns:288px minmax(0,1fr);grid-gap:22px;gap:22px;align-items:start}@media (max-width:1100px){.search{grid-template-columns:1fr}}.filters{display:flex;flex-direction:column;gap:14px}.box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.box h3{font-size:14px;font-weight:600;margin-bottom:10px}.box .hint{color:var(--faint);font-size:12px;margin-top:6px;line-height:1.45}.field{position:relative}.field input,.field select{width:100%;height:42px;padding:0 12px 0 38px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2);color:var(--text)}.field input:focus{background:#fff;border-color:var(--blue);outline:none;box-shadow:0 0 0 3px var(--blue-soft)}.field input::placeholder{color:var(--faint)}.field svg{position:absolute;left:12px;top:13px;width:16px;height:16px;color:var(--faint)}.field.plain input{padding-left:12px}.group-t{font-size:13px;color:var(--muted);margin:14px 0 8px;display:flex;justify-content:space-between}.checks{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px 10px;gap:6px 10px}.checks.one{grid-template-columns:1fr}.check{display:flex;align-items:center;gap:8px;padding:4px 0;cursor:pointer;color:var(--text)}.check input{width:16px;height:16px;accent-color:var(--blue)}.row2{display:flex;gap:8px}.btn{height:42px;padding:0 18px;border-radius:12px;border:1px solid var(--blue);background:var(--blue);color:#fff;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 4px 12px rgba(79,70,229,.22);white-space:nowrap}.btn:hover{background:var(--blue-2);border-color:var(--blue-2)}.btn.ghost{background:var(--panel);border-color:var(--line);color:#374151;font-weight:500;box-shadow:none}.btn.ghost:hover{background:var(--panel-2)}.btn.sm{height:34px;padding:0 12px;font-size:13px;border-radius:10px}.btn.danger{background:var(--red);border-color:var(--red);box-shadow:none}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:18px;gap:18px}.grid.list{grid-template-columns:1fr}@media (max-width:1500px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:700px){.grid{grid-template-columns:1fr}}.card{display:flex;flex-direction:column;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);transition:border-color .15s,transform .15s,box-shadow .15s}.card:hover{border-color:var(--blue-line);box-shadow:0 6px 20px rgba(17,24,39,.06);transform:translateY(-1px)}.card .head{display:flex;align-items:center;gap:10px}.card .head .who{min-width:0;flex:1 1}.card .head .who b{display:block;font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .head .who span{font-size:12px;color:var(--muted)}.grid.list .card{flex-direction:row;align-items:center;padding:14px 18px}.grid.list .card .head{flex:0 0 300px}.grid.list .card .title{flex:1 1;min-height:0;-webkit-line-clamp:2}.grid.list .card .foot{border:0;padding:0;flex:0 0 220px;justify-content:flex-end;gap:16px}.seal{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-weight:700;font-size:12px;letter-spacing:.01em;overflow:hidden;text-align:center;padding:4px;line-height:1.1;flex:none}.seal small{display:none}.seal.lg{width:56px;height:56px;border-radius:14px;font-size:14px}.pill{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:500;background:#f3f4f6;color:#374151;white-space:nowrap}.pill.s-plan{background:var(--violet-soft);color:var(--violet-text)}.pill.s-tor{background:var(--amber-soft);color:var(--amber-text)}.pill.s-bidding,.pill.s-invite{background:var(--sky-soft);color:var(--sky-text)}.pill.s-awarded,.pill.s-contract{background:var(--green-soft);color:var(--green-text)}.pill.s-cancelled{background:var(--red-soft);color:var(--red-text)}.pill.s-unknown{color:var(--muted)}.pill.kw{background:var(--blue-soft);color:var(--blue-2)}.card .title{font-weight:600;font-size:15px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:66px}.card .org{color:var(--muted);font-size:13px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{height:24px;display:inline-flex;align-items:center;padding:0 9px;border-radius:999px;background:#f3f4f6;font-size:12px;color:#374151}.card .foot{display:flex;align-items:flex-end;justify-content:space-between;border-top:1px solid #f0f1f6;padding-top:12px}.card .foot .lbl{font-size:11px;color:var(--muted)}.card .foot .amt{font-size:22px;font-weight:700;line-height:1.2}.card .foot .amt small{font-size:12px;color:var(--muted);font-weight:400;margin-left:4px}.card .foot .go{font-size:13px;font-weight:600;color:var(--blue)}.empty{padding:70px 0;text-align:center}.empty,.pager{color:var(--muted)}.pager{display:flex;gap:10px;justify-content:center;align-items:center;padding:24px 0}.save{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer;display:grid;place-items:center;flex:none}.save:hover{border-color:var(--blue-line);color:var(--blue)}.save.on{background:var(--blue);border-color:var(--blue);color:#fff}.proj{display:flex;flex-direction:column;gap:18px}.crumbs{font-size:13px;color:var(--muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap}.crumbs a{color:var(--blue)}.crumbs b{color:var(--text);font-weight:500}.hero-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px}.hero-card .row{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}.hero-card h1{font-size:22px;font-weight:600;line-height:1.4}.hero-card .acts{display:flex;gap:8px}.steps{list-style:none;margin:0;padding:16px 0 0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:8px;gap:8px;border-top:1px solid #f0f1f6}.steps li{display:flex;flex-direction:column;gap:8px}.steps li .bar{height:6px;border-radius:3px;background:var(--line)}.steps li.done .bar,.steps li.now .bar{background:var(--blue)}.steps li .lbl{font-size:13px;color:var(--faint)}.steps li.done .lbl{color:var(--text);font-weight:500}.steps li.now .lbl{color:var(--blue);font-weight:600}.steps li .sub{font-size:12px;color:var(--faint)}.steps li.done .sub,.steps li.now .sub{color:var(--muted)}.steps li.cancelled .bar{background:var(--red)}.steps li.cancelled .lbl{color:var(--red);font-weight:600}@media (max-width:700px){.steps{grid-template-columns:repeat(2,1fr)}}.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:18px;gap:18px}@media (max-width:900px){.tiles{grid-template-columns:1fr}}.tile{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow)}.tile .l{font-size:12px;color:var(--muted)}.tile .v{font-size:24px;font-weight:700}.tile .v small{font-size:13px;font-weight:400;color:var(--muted);margin-left:4px}.tile.why{background:var(--blue-soft);border-color:var(--blue-line)}.tile.why .l{color:var(--blue-2)}.tile.why .v{font-size:14px;font-weight:400;line-height:1.5;color:#1e1b4b;margin-top:4px}.cols{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);grid-gap:18px;gap:18px;align-items:start}@media (max-width:1000px){.cols{grid-template-columns:1fr}}.sec-t{font-size:16px;font-weight:600;margin:0 0 12px}.doc-row{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid #f0f1f6}.doc-row:last-child{border-bottom:0}.doc-row .ic{width:38px;height:38px;border-radius:10px;background:var(--red-soft);color:var(--red-text);display:grid;place-items:center;font-size:11px;font-weight:700;flex:none}.doc-row.off .ic{background:#f3f4f6}.doc-row.off,.doc-row.off .ic{color:var(--faint)}.doc-row .t{flex:1 1;min-width:0}.doc-row .t b{display:block;font-weight:500;font-size:14px}.doc-row .t span{font-size:12px;color:var(--muted)}.doc-row a.go{font-size:13px;font-weight:600;color:var(--blue)}.bar-row{display:flex;align-items:center;gap:10px;font-size:13px;margin-top:10px}.bar-row .ic{width:30px;height:30px;border-radius:8px;background:var(--blue-soft);color:var(--blue-2);display:grid;place-items:center;font-size:11px;font-weight:700;flex:none}.bar-row .n{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-row .c{font-weight:600}.bar-track{height:6px;border-radius:3px;background:#f0f1f6;margin-top:6px}.bar-track div{height:100%;border-radius:3px;background:var(--blue)}.note{background:var(--panel-2);border-radius:12px;padding:12px 14px;font-size:13px;color:#374151;line-height:1.5;margin-top:14px}table.data{width:100%;border-collapse:collapse}table.data th{text-align:left;font-weight:500;color:var(--muted);font-size:12px;padding:10px 12px;background:var(--panel-2)}table.data th:first-child{border-radius:8px 0 0 8px}table.data th:last-child{border-radius:0 8px 8px 0}table.data td{padding:12px;border-bottom:1px solid #f0f1f6;vertical-align:top}table.data td.r,table.data th.r{text-align:right}.item-box{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:12px}.item-box .ih{font-weight:600;margin-bottom:4px}.item-box .is{color:var(--muted);font-size:12px;margin-bottom:10px}.src{color:var(--faint);font-size:12px;margin-top:8px}.tabs{display:inline-flex;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:6px;gap:4px;margin-bottom:20px}.tabs a{padding:8px 16px;border-radius:10px;color:#4b5563;font-weight:500}.tabs a[aria-current=true]{background:var(--text);color:#fff}.tag-list{display:flex;flex-wrap:wrap;gap:6px}.tag-list form{display:inline}.tag-list .chip{background:var(--blue-soft);color:var(--blue-2);height:30px;padding:0 12px;font-size:13px;font-weight:500}.tag-list .chip.x{background:var(--red-soft);color:var(--red-text)}.tag-list .chip button{background:none;border:0;color:inherit;margin-left:6px;cursor:pointer;padding:0;opacity:.7}textarea.ta{width:100%;min-height:90px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font:inherit;resize:vertical}textarea.ta:focus{background:#fff;border-color:var(--blue);outline:none;box-shadow:0 0 0 3px var(--blue-soft)}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:20px}.stats .stat,.stats>div{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.stats b{display:block;font-size:26px;font-weight:700}.stats span{color:var(--muted);font-size:13px}.dept-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #f0f1f6}.dept-row:last-child{border-bottom:0}.dept-row .t{flex:1 1;min-width:0}.dept-row .t b{display:block;font-weight:500;font-size:14px}.dept-row .t span{font-size:12px;color:var(--muted)}.dept-row .x{width:36px;height:36px;border:1px solid var(--line);background:var(--panel);border-radius:10px;cursor:pointer;color:var(--muted);font-size:16px}.dept-row .x:hover{border-color:var(--red);color:var(--red)}.landing{max-width:1100px;margin:0 auto}.hero{padding:56px 0 36px;text-align:center}.eyebrow{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:13px;margin-bottom:22px}.eyebrow .dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px var(--green-soft)}.hero h1{font-size:46px;line-height:1.15;font-weight:700;letter-spacing:-.01em;margin-bottom:18px}.hero h1 em{font-style:normal;color:var(--blue)}.hero p{max-width:680px;margin:0 auto 26px;color:var(--muted);font-size:16px;line-height:1.7}.hero .cta{display:flex;gap:10px;justify-content:center;margin-bottom:36px;flex-wrap:wrap}.landing .stats{max-width:820px;margin:0 auto}.feats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px;margin:24px 0 44px}.feat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.feat .ic{width:40px;height:40px;border-radius:10px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-size:20px;margin-bottom:12px}.feat h3{font-size:15px;margin-bottom:6px}.feat p{color:var(--muted);font-size:13px;margin:0;line-height:1.6}.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}.sec-head h2{font-size:22px}.how{text-align:center;padding:48px 0 20px}.how h2{font-size:24px;margin-bottom:20px}.how ol{list-style:none;padding:0;margin:0 auto 24px;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;max-width:900px;counter-reset:s}.how li{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;text-align:left;counter-increment:s;box-shadow:var(--shadow)}.how li:before{content:counter(s);display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--blue);color:#fff;font-size:13px;font-weight:700;margin-bottom:10px}.how li b{display:block;margin-bottom:4px}.how li span{color:var(--muted);font-size:13px}.foot{color:var(--faint);font-size:12px;text-align:center;padding:30px 0 10px;border-top:1px solid var(--line);margin-top:30px}@media (max-width:900px){.hero h1{font-size:32px}.feats,.how ol,.stats{grid-template-columns:1fr 1fr}}@media (max-width:560px){.feats,.how ol,.stats{grid-template-columns:1fr}}.kw-box{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:42px;padding:6px 8px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2);cursor:text}.kw-box:focus-within{background:#fff;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}.kw-box input[type=text]{flex:1 1;min-width:90px;border:0;outline:0;background:transparent;height:28px;font-size:14px}.kw-box input::placeholder{color:var(--faint)}.kw-chip{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 6px 0 10px;border-radius:999px;background:var(--blue-soft);color:var(--blue-2);font-size:13px;font-weight:500}.kw-chip button{border:0;background:transparent;color:inherit;cursor:pointer;width:20px;height:20px;border-radius:50%;font-size:14px;line-height:1;opacity:.7;padding:0}.kw-chip button:hover{background:rgba(0,0,0,.08);opacity:1}.kw-box.x .kw-chip{background:var(--red-soft);color:var(--red-text)}