@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Thai:wght@400;500;600;700&display=swap";*{box-sizing:border-box}body{color:#18202b;background:#f4f6f8;min-width:320px;margin:0;font-family:IBM Plex Sans Thai,sans-serif}button,input,select{font:inherit}button{cursor:pointer}.app{min-height:100vh}header{z-index:20;background:#fff;border-bottom:1px solid #e5e9ee;align-items:center;gap:28px;height:68px;padding:0 26px;display:flex;position:sticky;top:0;box-shadow:0 1px 8px #1927340d}.logo{letter-spacing:-1px;font-size:23px;font-weight:800}.logo span{color:#f15c35}header nav{flex:1;gap:2px;height:100%;display:flex}header nav button,header>button{color:#657080;background:0 0;border:0;padding:0 14px;font-weight:600}header nav button:hover{color:#293746;background:#f7f8fa}.header-actions{align-items:center;gap:8px;display:flex}.header-actions button{color:#5f6b77;background:#fff;border:1px solid #d9dfe6;border-radius:8px;padding:8px 11px}.header-actions .logout{color:#a54837;border-color:#0000}.role-badge{color:#64717d;text-transform:uppercase;background:#edf1f4;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:700}.role-badge.admin{color:#6d3eac;background:#eee4ff}header nav .active{color:#f15c35;border-bottom:3px solid #f15c35}header>button{border:1px solid #d9dfe6;border-radius:9px;padding:9px 14px}.layout{grid-template-columns:var(--sidebar-width,285px) minmax(0, 1fr);height:calc(100vh - 68px);display:grid}aside{background:#fff;border-right:1px solid #e4e8ed;padding:20px 14px;position:relative;overflow:hidden}.sidebar-resizer{z-index:10;cursor:col-resize;touch-action:none;background:0 0;border:0;width:11px;padding:0;position:absolute;top:0;bottom:0;right:-5px}.sidebar-resizer:before{content:"";background:#dfe4e9;width:1px;transition:width .15s,background .15s;position:absolute;top:0;bottom:0;left:5px}.sidebar-resizer:hover:before,.resizing-sidebar .sidebar-resizer:before{background:#f15c35;width:3px}.sidebar-resizer span{color:#87929d;background:#fff;border:1px solid #d8dee4;border-radius:7px;place-items:center;width:17px;height:38px;display:grid;position:absolute;top:50%;left:-3px;transform:translateY(-50%);box-shadow:0 2px 8px #1f2c381a}.resizing-sidebar,.resizing-sidebar *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}.search{color:#8190a1;background:#f2f4f6;border-radius:9px;gap:8px;padding:9px 12px;display:flex}.search input{background:0 0;border:0;outline:0;width:100%}.asidehead{justify-content:space-between;align-items:center;margin:25px 5px 10px;font-size:13px;display:flex}.asidehead select{color:#6f7885;border:0}.teams{height:calc(100% - 90px);overflow:auto}.teams button{text-align:left;background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;width:100%;padding:10px;display:flex}.teams button.selected{color:#d84922;background:#fff1ec}.teams button i{background:#22a56d;border-radius:50%;width:7px;height:7px}.teams button i.unmapped{background:#f1a21a}.teams button span{white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:600;overflow:hidden}.teams button>i,.teams button>.team-label,.teams button>b,.teams button .team-label small{pointer-events:none}.teams small{color:#8b949f;text-overflow:ellipsis;font-weight:400;display:block;overflow:hidden}.teams button b{color:#5f6975;background:#edf0f3;border-radius:12px;padding:2px 8px}.content{padding:26px 30px;overflow:auto}.teamhead .eyebrow{color:#89939e;text-transform:uppercase;letter-spacing:1px;font-size:12px}.teamhead h1{margin:2px 0;font-size:28px}.teamhead p{color:#727d89;margin:0}.workspace{grid-template-columns:380px minmax(450px,1fr);gap:20px;height:calc(100vh - 190px);margin-top:20px;display:grid}.workspace.model-expanded{grid-template-columns:minmax(0,1fr)}.workspace.model-expanded .filepanel{display:none}.workspace.model-expanded .modelpanel{min-width:0}.filepanel,.modelpanel{background:#fff;border:1px solid #e3e7eb;border-radius:12px;overflow:auto}.filepanel h3{border-bottom:1px solid #e7eaed;margin:0;padding:17px}.filepanel h3 span{float:right;background:#f0f2f4;border-radius:15px;padding:2px 9px}.filepanel>[role=button]{cursor:pointer;text-align:left;background:#fff;border:0;border-bottom:1px solid #edf0f2;align-items:center;gap:12px;width:100%;padding:13px;display:flex}.filepanel>[role=button].on{background:#fff4ef;border-left:3px solid #f15c35}.filepanel [role=button] .file-summary{flex:1;min-width:0}.filepanel [role=button] b,.filepanel [role=button] small{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.filepanel [role=button] small{color:#88929d}.file-status{align-items:center;gap:7px;margin-top:8px;display:flex}.file-printer{align-items:center;gap:7px;margin-top:6px;display:flex}.file-printer span{color:#7c8793;min-width:50px;font-size:11px}.file-printer input,.file-printer select{color:#404b57;background:#fff;border:1px solid #d5dce3;border-radius:6px;width:175px;min-width:0;padding:4px 7px;font-size:12px}.print-status select.not-printed{color:#596571;background:#edf0f3}.print-status select.printing{color:#17659d;background:#d8edff}.print-status select.problem{color:#bd3026;background:#ffd9d4}.print-status{align-items:center;gap:7px;margin-top:6px;display:flex}.print-status span{color:#7c8793;min-width:72px;font-size:11px}.print-status select{border:1px solid #0000;border-radius:6px;width:175px;min-width:0;padding:4px 7px;font-size:12px;font-weight:600}.print-status select.unset{color:#66717d;background:#fff;border-color:#d5dce3}.print-status select.completed{color:#23813a;background:#dff3d8}.print-status select.completed-model-broken{color:#bd3026;background:#ffd9d4}.print-status select.printing-round-1,.print-status select.printing-round-2{color:#76520b;background:#ffe9b7}.print-status select.file-broken{color:#fff;background:#bd0000}.file-status span{color:#7c8793;white-space:nowrap;font-size:11px}.file-status select{color:#404b57;background:#fff;border:1px solid #d5dce3;border-radius:6px;min-width:0;max-width:175px;padding:4px 6px;font-size:12px}.cube{color:#ef5d34;background:#ffe5db;border-radius:8px;place-items:center;width:37px;height:37px;font-size:24px;display:grid}.modelpanel{position:relative;overflow:auto}.viewer-layout{grid-template-columns:minmax(0,1fr) 340px;height:100%;min-height:0;display:grid}.viewer-main{flex-direction:column;min-width:0;min-height:0;display:flex}.viewer-main .viewer{flex:1;height:auto;min-height:460px}.viewer{background:#121821;height:calc(100% - 75px);position:relative}.viewer canvas{height:100%!important}.tools{z-index:2;gap:6px;display:flex;position:absolute;top:12px;left:12px}.tools button{color:#dce3ec;background:#202936;border:1px solid #495463;border-radius:7px;padding:6px 9px}.hint{text-align:center;color:#8996a8;font-size:12px;position:absolute;bottom:10px;left:0;right:0}.info{align-items:center;gap:18px;height:75px;padding:12px 18px;display:flex}.info b{margin-right:auto}.info span{color:#74808d;font-size:13px}.review-panel{background:#fff;border-top:1px solid #e6eaee;padding:14px 18px 22px}.timeline-panel{background:#f9fafb;border:0;border-left:1px solid #e0e5ea;border-radius:0;min-width:0;padding:0 16px 20px;display:block;overflow-y:auto}.timeline-title{z-index:2;background:#fff;border-bottom:1px solid #e3e8ec;margin:0 -16px 14px;padding:16px;position:sticky;top:0}.timeline-title>div{justify-content:space-between;align-items:center;display:flex}.timeline-title span{font-size:16px;font-weight:700}.timeline-title b{color:#d94c28;background:#fff0eb;border-radius:999px;padding:2px 8px;font-size:11px}.timeline-title small{color:#86919c;white-space:nowrap;text-overflow:ellipsis;margin-top:4px;font-size:11px;display:block;overflow:hidden}.timeline-panel .note-entry{flex-direction:column}.timeline-panel .note-entry button{align-self:flex-end}.note-entry{gap:8px;display:flex}.note-entry input{border:1px solid #d5dce3;border-radius:7px;flex:1;min-width:0;padding:8px 10px}.note-entry button{color:#fff;background:#f15c35;border:0;border-radius:7px;padding:8px 12px}.review-panel h3{margin:16px 0 8px}.no-log{color:#8a949e}.file-timeline>div{border-top:1px solid #e5e9ed;gap:10px;padding:10px 0;font-size:13px;display:flex;position:relative}.file-timeline i{background:#f15c35;border-radius:50%;flex:none;width:8px;height:8px;margin-top:6px}.file-timeline small{color:#84909b;display:block}.file-timeline>div>span{min-width:0}.timeline-action{color:#303b46;font-size:13px;font-weight:600;line-height:1.5;display:block}.timeline-transition{grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);align-items:center;gap:5px;margin-top:7px;display:grid}.timeline-transition>strong{color:#f15c35;text-align:center;font-size:18px}.transition-value{background:#fff;border:1px solid #dfe4e8;border-radius:7px;min-width:0;padding:6px 7px;display:block}.transition-value small,.transition-value b{display:block}.transition-value small{color:#8b96a1;margin-bottom:1px;font-size:9px}.transition-value b{overflow-wrap:anywhere;color:#4d5965;font-size:11px;line-height:1.35}.transition-value.after{background:#fff4ef;border-color:#f3c8b9}.transition-value.after b{color:#bd4929}.timeline-note.standalone{margin-top:7px}.timeline-note{color:#65717d;background:#fff;border-radius:6px;margin-top:5px;padding:7px 9px;font-size:12px;font-style:italic;display:block}.timeline-meta{align-items:center;gap:7px;margin-top:5px;display:flex!important}.timeline-meta time{white-space:nowrap}.timeline-actor{color:#63707c;background:#e9edf1;border-radius:999px;padding:1px 6px;font-size:9px;font-weight:700}.timeline-actor.admin{color:#6d3eac;background:#eee4ff}.timeline-change{color:#4f5b67;margin:3px 0;line-height:1.45;display:block}.timeline-change strong{color:#f15c35;margin:0 3px}.empty{text-align:center;color:#89939e;place-content:center;height:100%;display:grid}.empty div{color:#cad1d8;font-size:80px}.empty h2{color:#3a4652;margin:4px}.viewer-error{text-align:center;color:#7b8794;place-content:center;height:calc(100% - 75px);padding:24px;display:grid}.viewer-error div{color:#e34f2b;background:#fff0eb;border-radius:50%;place-items:center;width:56px;height:56px;margin:0 auto 12px;font-size:30px;font-weight:700;display:grid}.viewer-error h2{color:#34404c;margin:0}.login{background:radial-gradient(circle at top,#293442,#111720 60%);place-items:center;min-height:100vh;display:grid}.login form{text-align:center;background:#fff;border-radius:18px;width:390px;padding:40px;box-shadow:0 30px 80px #0008}.login h1{margin:28px 0 0;font-size:24px}.login p{color:#7b8590}.login input{text-align:center;letter-spacing:8px;border:1px solid #d9dee4;border-radius:9px;width:100%;padding:15px;font-size:24px}.login button{color:#fff;background:#f15c35;border:0;border-radius:9px;width:100%;margin-top:14px;padding:13px;font-weight:700}.login small{color:#d43e2a;margin-top:10px;display:block}.mapping{max-width:1680px;margin:0 auto;padding:30px}.pagehead{justify-content:space-between;align-items:end;display:flex}.pagehead h2{margin:0;font-size:29px}.pagehead p{color:#75808c}.pagehead button,.button,.tr button{background:#fff;border:1px solid #d7dde3;border-radius:8px;margin-left:7px;padding:9px 12px}.maptable{background:#fff;border:1px solid #e1e6ea;border-radius:12px;margin-top:25px;overflow-x:auto}.tr{border-bottom:1px solid #edf0f2;grid-template-columns:2fr 80px 1.5fr 110px 90px;align-items:center;gap:15px;padding:13px 18px;display:grid}.tr.th{color:#77818c;background:#f6f8f9;font-size:12px;font-weight:700}.tr input{border:1px solid #d7dde3;border-radius:7px;width:100%;padding:8px}.source{font-weight:600}.ok{color:#169b65}.warn{color:#e39115}.status-page{max-width:1680px;margin:0 auto;padding:28px 30px}.status-search,.admin-search{color:#84909b;background:#fff;border:1px solid #dfe4e9;border-radius:9px;align-items:center;gap:8px;min-width:330px;padding:9px 12px;display:flex}.status-search input,.admin-search input{background:0 0;border:0;outline:0;width:100%}.admin-search{margin-top:18px}.admin-search b{color:#687481;white-space:nowrap;font-size:12px}.admin-summary{grid-template-columns:repeat(3,minmax(170px,230px));gap:12px;margin-top:22px;display:grid}.admin-summary>div{background:#fff;border:1px solid #e0e5ea;border-radius:10px;padding:14px 16px}.admin-summary span,.admin-summary b{display:block}.option-manager{background:#fff;border:1px solid #e0e5ea;border-radius:12px;margin-top:18px;padding:18px}.option-manager-head{justify-content:space-between;align-items:end;gap:18px;display:flex}.option-manager h3,.option-manager p{margin:0}.option-manager p{color:#7e8994;margin-top:3px;font-size:12px}.option-form{gap:7px;display:flex}.option-form select,.option-form input{border:1px solid #d7dde3;border-radius:7px;min-width:0;padding:7px 9px}.option-form input[type=color]{width:42px;padding:3px}.option-form button{color:#fff;background:#f15c35;border:0;border-radius:7px;padding:7px 12px}.option-groups{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin-top:16px;display:grid}.option-groups>div{background:#f7f8fa;border-radius:9px;padding:12px}.option-groups h4{justify-content:space-between;margin:0 0 8px;display:flex}.option-groups h4 span{color:#89949f;font-size:11px}.option-list{flex-wrap:wrap;gap:6px;display:flex}.option-list>span{background:#fff;border:1px solid #e0e4e8;border-radius:999px;align-items:center;gap:5px;padding:4px 5px 4px 7px;font-size:11px;display:flex}.option-list i{border-radius:50%;width:8px;height:8px}.option-list button{color:#8a5860;background:#f0f2f4;border:0;border-radius:50%;width:18px;height:18px;padding:0}.admin-summary span{color:#7d8894;font-size:12px}.admin-summary b{margin-top:3px;font-size:24px}.audit-table .tr{grid-template-columns:170px minmax(290px,2fr) 150px minmax(190px,1fr) minmax(190px,1fr);align-items:start;min-width:1120px}.audit-file,.audit-file b,.audit-file small{min-width:0;display:block}.audit-file b,.audit-file small{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.audit-file small,.audit-table small{color:#84909b}.audit-table em{color:#53606c;background:#eef2f5;border-radius:999px;padding:3px 8px;font-size:12px;font-style:normal;display:inline-block}.actor-badge{background:#eee4ff;border-radius:5px;width:fit-content;margin-top:5px;padding:2px 6px;font-size:9px;font-weight:700;color:#6d3eac!important}.muted{color:#9aa4ad}.status-cards{grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px;margin:22px 0;display:grid}.status-cards button{text-align:left;color:#45515d;background:#fff;border:1px solid #dfe4e9;border-radius:10px;grid-template-columns:10px 1fr auto;align-items:center;gap:9px;min-height:66px;padding:12px;display:grid}.status-cards button.active{border-color:var(--status-color);box-shadow:0 0 0 2px color-mix(in srgb, var(--status-color) 18%, transparent)}.status-cards i{background:var(--status-color);border-radius:50%;width:10px;height:10px}.status-cards b{color:var(--status-color);font-size:22px}.status-table{background:#fff;border:1px solid #e0e5ea;border-radius:12px;overflow:hidden}.status-row{border-bottom:1px solid #edf0f2;grid-template-columns:minmax(250px,2fr) repeat(5,minmax(110px,1fr));align-items:center;gap:12px;padding:11px 16px;font-size:13px;display:grid}.status-row>span:first-child{min-width:0}.status-row b,.status-row small{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.status-row small{color:#84909b}.status-head{color:#6d7884;background:#f4f6f8;font-size:12px;font-weight:700}.status-data-row{cursor:pointer;transition:background .15s}.status-data-row:hover{background:#fff8f5}.table-pill{color:#596571;white-space:nowrap;background:#edf0f3;border-radius:999px;padding:4px 8px;font-size:11px;font-style:normal;font-weight:600;display:inline-block}.table-pill.printing{color:#17659d;background:#d8edff}.table-pill.problem,.table-pill.issue-broken,.table-pill.print-file-broken,.table-pill.print-completed-model-broken{color:#ae2e25;background:#ffd9d4}.table-pill.completed,.table-pill.issue-passed,.table-pill.print-completed{color:#23813a;background:#dff3d8}.table-pill.issue-violation{color:#fff;background:#bd0000}.table-pill.print-printing-round-1,.table-pill.print-printing-round-2{color:#76520b;background:#ffe9b7}.status-empty{text-align:center;color:#88939e;padding:45px}@media (width<=1400px){.workspace{grid-template-columns:360px minmax(420px,1fr)}.viewer-layout{grid-template-columns:minmax(0,1fr) 280px}}@media (width<=900px){header{flex-wrap:wrap;gap:8px;height:auto;min-height:64px;padding:8px 12px}header nav{order:3;width:100%;height:40px;overflow-x:auto}header nav button{white-space:nowrap}.header-actions{margin-left:auto}.header-actions .role-badge,.header-actions .logout{display:none}.layout{grid-template-columns:220px 1fr}.sidebar-resizer{display:none}.workspace{grid-template-columns:1fr;height:auto}.modelpanel{height:auto}.viewer-layout{grid-template-columns:1fr}.timeline-panel{border-top:1px solid #e0e5ea;border-left:0;max-height:420px}.filepanel{max-height:320px}.mapping{padding:16px}.pagehead{flex-direction:column;align-items:stretch;gap:12px}.status-search,.admin-search{width:100%;min-width:0}.admin-summary{grid-template-columns:repeat(3,1fr)}.option-manager-head,.option-form{flex-direction:column;align-items:stretch}.tr{grid-template-columns:1.5fr 50px 1fr}.tr>:nth-child(4),.tr>:nth-child(5){display:none}.status-page{padding:16px}.status-table{overflow-x:auto}.status-row{min-width:950px}}
