:root{font-family:"Microsoft JhengHei","Noto Sans TC",system-ui,sans-serif;color:#172e29;background:#f3f6f5;font-size:16px;line-height:1.65;--green:#176b50;--line:#dce5e0;--muted:#667b73}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:white;border-radius:7px;padding:.5rem .9rem;color:#173e32;font-weight:600}button:hover{background:#edf5ef}button:disabled{cursor:wait;opacity:.55}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid #e3ae46;outline-offset:3px}a{color:#12664c}h1,h2,h3,p{margin-top:0}h1{font-size:1.75rem;margin-bottom:0;letter-spacing:.02em}h2{font-size:1.35rem;margin-bottom:.6rem}h3{font-size:1rem;margin-bottom:.3rem}.small{font-size:.82rem}.muted{color:var(--muted)}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#0c523c}.quiet{background:transparent}.danger{color:#a12725}.icon{padding:.3rem .6rem}.brand-icon{background:#90dfbb;color:#153c30;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;font-weight:800;font-size:1.6rem}.label{display:inline-block;font-size:.8rem;letter-spacing:.04em;border:1px solid currentColor;border-radius:4px;padding:.1rem .5rem}#login{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.login-brand{background:#123a30;color:#e6f9ee;padding:12vh 12%;display:flex;flex-direction:column;align-items:flex-start}.login-brand h1{font-size:2.8rem;line-height:1.5;margin:2rem 0}.login-brand .label{margin-top:auto}.login-brand p{opacity:.85;letter-spacing:.08em}.login-card{width:min(420px,85%);align-self:center;justify-self:center}.login-card .primary{width:100%;margin-top:1rem}label{display:block;font-weight:600;margin-bottom:1rem}input,select,textarea{display:block;width:100%;padding:.65rem .8rem;border:1px solid #b9c9c0;border-radius:6px;background:white;color:#163e31;margin-top:.35rem;line-height:1.6}textarea{min-height:110px;resize:vertical;font-weight:400}input[type=checkbox]{display:inline-block;width:20px;vertical-align:middle;margin-right:.65rem}input[type=file]{font-size:.9rem}.check-label{font-weight:400;font-size:.93rem}aside{position:fixed;inset:0 auto 0 0;width:244px;background:#15382f;color:#d6e6de;padding:1.8rem 1.2rem;display:flex;flex-direction:column}.logo{display:flex;align-items:center;gap:12px;font-size:1.2rem;font-weight:700}.logo span:not(.brand-icon){display:block;font-size:.6rem;letter-spacing:.1em;color:#9cbbad}.nav-caption{font-size:.75rem;letter-spacing:.14em;color:#8db09f;margin:2.5rem .7rem .7rem}nav button{display:flex;align-items:center;gap:1rem;text-align:left;width:100%;color:#bdd2c7;border:none;background:none;padding:.72rem .85rem;margin:.15rem 0;font-weight:500}nav button:hover,nav button.active{background:#2b5445;color:white}nav i{font-style:normal;width:20px;text-align:center;color:#8edab6}nav b{margin-left:auto;background:#a8e3c5;color:#15382f;font-size:.72rem;padding:0 .4rem;border-radius:4px}.aside-bottom{margin-top:auto;color:#8ba99a;font-size:.75rem}.aside-bottom p{margin-top:.8rem}.workspace{margin-left:244px}header{height:110px;display:flex;align-items:center;gap:1rem;justify-content:space-between;padding:1.8rem 3rem;background:white;border-bottom:1px solid var(--line)}.header-right{display:flex;align-items:center;gap:1rem;font-size:.9rem}.pilot{display:flex;gap:1rem;background:#fff8e4;border-bottom:1px solid #ecdfb7;color:#795e1e;padding:.6rem 3rem;font-size:.82rem}main{padding:2rem 3rem;max-width:1600px;margin:auto}footer{padding:1rem 3rem;color:var(--muted);font-size:.76rem}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem}.toolbar p{margin:0}.actions{display:flex;gap:.5rem;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:2rem}.stat{background:white;border:1px solid var(--line);padding:1.4rem;border-radius:9px}.stat span{color:var(--muted);font-size:.88rem}.stat strong{font-size:2rem;display:block;line-height:1.6;font-weight:600}.stat .accent{color:var(--green)}.split{display:grid;grid-template-columns:1.4fr 1fr;gap:1.5rem}.panel{background:white;border:1px solid var(--line);border-radius:9px;margin-bottom:1.5rem;overflow:hidden}.panel-head{padding:1.2rem 1.4rem;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.panel-head h2{font-size:1.05rem;margin:0}.panel-body{padding:1.3rem 1.5rem}.empty{padding:3.5rem 1.5rem;text-align:center;color:var(--muted)}.empty h3{color:#244f3e}.empty button{margin-top:.8rem}.row{padding:1rem 1.3rem;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:1rem}.row:last-child{border:0}.row p{margin:0}.badge{display:inline-block;border-radius:4px;font-size:.77rem;line-height:1.6;padding:.18rem .5rem;color:#376551;background:#eaf3ed;white-space:nowrap}.badge.warn{color:#876422;background:#fff2cf}.badge.gray{background:#edf0ef;color:#657a72}.badge.red{background:#fce9e6;color:#a2382a}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.card{background:white;border:1px solid var(--line);border-radius:9px;padding:1.3rem}.card h3{font-size:1.15rem;margin:.8rem 0}.card .actions{margin-top:1.1rem}.card button{font-size:.86rem}.card-meta{font-size:.87rem;color:var(--muted);margin:.4rem 0}.search{max-width:350px;margin:0}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem;text-align:left}th{font-size:.78rem;letter-spacing:.03em;color:#687f72;background:#f8faf9;font-weight:600;padding:.85rem 1.2rem;white-space:nowrap}td{border-top:1px solid var(--line);padding:1rem 1.2rem;vertical-align:top}td .actions button{font-size:.78rem;padding:.35rem .6rem}.nowrap{white-space:nowrap}.doc-body{white-space:pre-wrap;font-size:.95rem;background:#f9fbfa;border:1px solid var(--line);padding:1rem;border-radius:6px;max-height:350px;overflow:auto;word-break:break-word}.detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}.detail-meta p{margin:0}.detail-meta span{display:block;font-size:.8rem;color:var(--muted)}.hash{font-family:monospace;word-break:break-all;font-size:.75rem;color:var(--muted)}dialog{width:min(740px,95vw);max-height:92vh;border:1px solid var(--line);border-radius:13px;padding:0;color:#173e31;box-shadow:0 16px 90px #102d3555}dialog::backdrop{background:#09231ba0;backdrop-filter:blur(3px)}.dialog-head{padding:1.2rem 1.5rem;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.dialog-head h2{margin:0}#dialog-body{padding:1.5rem}.dialog-actions{padding:1rem 1.5rem;background:#f5f8f6;display:flex;justify-content:flex-end;gap:.7rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}.form-note{font-size:.85rem;color:var(--muted);margin-bottom:1.2rem}.section-title{border-top:1px solid var(--line);padding-top:1rem;margin-top:1.5rem}#form-error,#login-error{color:#ad352b;padding:0 1.5rem;font-size:.9rem}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#153a2f;color:white;padding:.8rem 1.4rem;border-radius:9px;z-index:9;box-shadow:0 4px 20px #0003}#mobile-menu{display:none}.progress-line{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0}.progress-line span{background:#e7eeea;color:#778b80;padding:.4rem .7rem;font-size:.8rem;border-radius:4px}.progress-line .current{background:#216f54;color:white}.timeline{border-left:2px solid #c9d9ce;padding-left:1.2rem;margin-left:.5rem}.timeline p{margin-bottom:1.2rem}.long-text{max-width:560px;overflow-wrap:anywhere}.right{text-align:right}[hidden]{display:none!important}@media(max-width:1150px){main{padding:1.5rem}.grid{grid-template-columns:1fr 1fr}header{padding:1.5rem}.stats{grid-template-columns:1fr 1fr}.split{grid-template-columns:1fr}.pilot{padding:.6rem 1.5rem}}@media(max-width:760px){aside{transform:translateX(-100%);transition:transform .2s;z-index:7;top:85px;width:235px}body.menu-open aside{transform:none}.workspace{margin-left:0}header{height:85px;padding:1rem;justify-content:flex-start}header h1{font-size:1.2rem}.header-right{margin-left:auto;gap:.5rem}.header-right span{max-width:80px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#mobile-menu{display:block}.pilot{display:block;padding:.65rem 1rem}.pilot b{margin-right:.5rem}.grid,.form-grid,.detail-meta{grid-template-columns:1fr}.toolbar{align-items:flex-start;flex-wrap:wrap}main{padding:1.2rem 1rem}.stats{gap:.65rem}.stat{padding:1rem}.stat strong{font-size:1.65rem}.search{max-width:100%}#login{grid-template-columns:1fr}.login-brand{padding:2rem;min-height:230px}.login-brand h1{font-size:1.7rem;margin:1rem 0}.login-brand p{display:none}.login-brand .label{margin-top:1rem}.login-card{padding:2rem 0}footer{padding:1rem}.row{padding:1rem;align-items:flex-start}.actions button{min-height:40px}}

aside{overflow-y:auto;overflow-x:hidden}.hash{white-space:pre-wrap} @media(prefers-reduced-motion:reduce){aside{transition:none}}
.row>div:first-child{min-width:0;flex:1}.row h3,.row p{overflow-wrap:anywhere}.row>button{flex-shrink:0}.row>.actions{flex-shrink:0}

.login-factor{margin-bottom:1rem;font-size:.88rem}.login-factor summary{cursor:pointer;color:var(--muted)}.login-factor label{margin-top:.8rem}

.customer-stages{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}.customer-stages>div{display:flex;align-items:center;gap:1rem;background:#fff;border:1px solid var(--line);padding:1.2rem 1.4rem;border-radius:9px}.customer-stages p{font-size:.83rem;color:var(--muted);margin:0}.customer-stages strong{font-size:1.8rem;margin-left:auto}.step-number{font-size:.85rem;color:#26795d;background:#e7f2eb;padding:.4rem .6rem;border-radius:7px}.customer-form .form-banner{background:#edf5ef;border-left:3px solid #26795d;padding:1rem 1.2rem;margin-bottom:1.3rem}.customer-form .form-banner p{font-size:.88rem;margin:.4rem 0 0;color:#496357}.customer-form fieldset{min-width:0;border:0;padding:0;margin:1.7rem 0}.customer-form legend{font-size:1.02rem;font-weight:700;padding:0 0 .65rem;margin-bottom:1rem;border-bottom:1px solid var(--line);width:100%}.customer-form label{font-size:.9rem}.customer-form input,.customer-form select,.customer-form textarea{font-weight:400}.customer-form textarea{min-height:85px}.customer-source{border:1px solid var(--line);border-radius:7px;margin:1.2rem 0}.customer-source summary{cursor:pointer;padding:.85rem 1rem;font-size:.9rem;font-weight:600;background:#f8faf8}.customer-source>div{padding:1rem}.customer-summary{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1.5rem}.customer-summary div{border-bottom:1px solid var(--line);padding-bottom:.7rem;min-width:0}.customer-summary dt{color:var(--muted);font-size:.8rem}.customer-summary dd{margin:.3rem 0 0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.95rem}dialog:has(.customer-form){width:min(900px,95vw)}dialog:has(.customer-form) .dialog-head{position:sticky;top:0;background:#fff;z-index:2}dialog:has(.customer-form) .dialog-actions{position:sticky;bottom:0;z-index:2;border-top:1px solid var(--line)}@media(max-width:760px){.customer-stages{grid-template-columns:1fr}.customer-summary{grid-template-columns:1fr}.customer-stages>div{padding:1rem}.customer-form .form-banner{padding:.8rem}dialog:has(.customer-form) #dialog-body{padding:1rem}}
