:root{--sidebar:#0b1f33;--sidebar-hover:#ffffff14;--sidebar-active:#1677ff;--bg:#f0f2f5;--card:#fff;--ink:#1f2937;--ink-soft:#4b5563;--muted:#8c8c8c;--line:#e5e7eb;--primary:#1677ff;--primary-hover:#0958d9;--primary-soft:#1677ff1a;--danger:#cf1322;--danger-soft:#cf132214;--success:#389e0d;--success-soft:#389e0d1a;--radius:8px;--font:"IBM Plex Sans", "Noto Sans SC", system-ui, sans-serif;--header-h:56px;--sidebar-w:232px;color:var(--ink);font-family:var(--font);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);min-width:320px;margin:0}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}textarea,input[type=text],input:not([type]),input[type=search]{border:1px solid var(--line);background:#fff;border-radius:6px;outline:none;width:100%;padding:.5rem .7rem;transition:border-color .15s,box-shadow .15s}textarea:focus,input[type=text]:focus,input:not([type]):focus,input[type=search]:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.admin{background:var(--bg);min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--sidebar);color:#ffffffc7;z-index:30;flex-direction:column;transition:transform .2s;display:flex;position:fixed;inset:0 auto 0 0}.sidebar-brand{height:var(--header-h);border-bottom:1px solid #ffffff14;align-items:center;gap:.75rem;padding:0 1rem;display:flex}.sidebar-logo{background:linear-gradient(145deg,#3b9eff,#1677ff 55%,#0958d9);border-radius:6px;width:28px;height:28px}.sidebar-brand strong{color:#fff;font-size:1rem;line-height:1.2;display:block}.sidebar-brand span{color:#ffffff73;font-size:.72rem;display:block}.sidebar-nav{flex:1;padding:.75rem .6rem 1rem;overflow:auto}.nav-group{letter-spacing:.06em;text-transform:uppercase;color:#ffffff59;margin:.85rem .55rem .35rem;font-size:.72rem}.nav-empty{color:#ffffff59;margin:.4rem .55rem;font-size:.85rem}.nav-item{color:#ffffffb8;text-align:left;border-radius:6px;align-items:center;gap:.65rem;width:100%;padding:.6rem .75rem;font-size:.92rem;transition:background .15s,color .15s;display:flex}.nav-item:hover{background:var(--sidebar-hover);color:#fff}.nav-item.active{background:var(--sidebar-active);color:#fff}.sidebar-foot{color:#fff6;border-top:1px solid #ffffff14;align-items:center;gap:.4rem;padding:.85rem 1rem;font-size:.75rem;display:flex}.sidebar-mask{display:none}.admin-main{margin-left:var(--sidebar-w);flex-direction:column;flex:1;min-width:0;min-height:100vh;display:flex}.admin-header{z-index:20;height:var(--header-h);border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;padding:0 1.25rem;display:flex;position:sticky;top:0}.header-left{align-items:center;gap:.5rem;display:flex}.menu-toggle{display:none}.breadcrumb{color:var(--muted);align-items:center;gap:.45rem;font-size:.9rem;display:flex}.breadcrumb strong{color:var(--ink);font-weight:600}.user-chip{border:1px solid var(--line);height:30px;color:var(--ink-soft);background:#f5f5f5;border-radius:15px;align-items:center;padding:0 .75rem;font-size:.85rem;display:inline-flex}.admin-content{flex:1;width:100%;min-width:0;padding:1.25rem clamp(1rem,2vw,1.75rem)}.page{flex-direction:column;gap:1rem;width:100%;max-width:none;display:flex}.page-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.page-header h1{align-items:center;gap:.5rem;margin:0;font-size:1.35rem;font-weight:650;display:flex}.page-header p{color:var(--muted);margin:.35rem 0 0;font-size:.9rem}.page-card,.admin-section{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);width:100%;min-width:0;padding:1rem 1.1rem}.admin-section+.admin-section{margin-top:1rem}.card-title-row{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.card-title-row h2{margin:0;font-size:1rem;font-weight:600}.muted{color:var(--muted);font-size:.88rem}.stat-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;width:100%;display:grid}.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:.35rem;padding:1rem 1.1rem;display:flex}.stat-card span{color:var(--muted);font-size:.85rem}.stat-card strong{letter-spacing:-.02em;font-size:1.5rem;font-weight:700}.shortcut-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.65rem;display:grid}.shortcut-item{border:1px solid var(--line);text-align:left;color:inherit;background:#fff;border-radius:6px;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.85rem;text-decoration:none;transition:border-color .15s,background .15s;display:grid}.shortcut-item:hover{background:#f0f7ff;border-color:#91caff}.shortcut-icon{background:var(--primary-soft);width:40px;height:40px;color:var(--primary);border-radius:8px;place-items:center;display:grid}.shortcut-copy{flex-direction:column;gap:.15rem;min-width:0;display:flex}.shortcut-copy strong{font-size:.95rem}.shortcut-copy span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.shortcut-copy .biz-host{color:var(--primary);font-size:.78rem}.shortcut-item-custom{grid-template-columns:1fr;padding:0;position:relative}.shortcut-main{color:inherit;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;min-width:0;padding:.85rem 2.5rem .85rem .85rem;text-decoration:none;display:grid}.shortcut-remove{z-index:1;position:absolute;top:.55rem;right:.45rem}.shortcut-arrow{color:var(--muted)}.empty-block{color:var(--muted);flex-direction:column;align-items:flex-start;gap:.75rem;padding:1.5rem .25rem;display:flex}.btn-primary,.btn-accent,.btn-ghost,.btn-danger-ghost{border-radius:6px;justify-content:center;align-items:center;gap:.35rem;padding:.45rem .85rem;font-size:.9rem;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.btn-primary,.btn-accent{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled),.btn-accent:hover:not(:disabled){background:var(--primary-hover)}.btn-primary:disabled,.btn-accent:disabled{opacity:.55;cursor:default}.btn-ghost{border:1px solid var(--line);color:var(--ink-soft);background:#fff}.btn-ghost:hover{color:var(--primary);border-color:#91caff}.btn-danger-ghost{color:var(--danger);background:0 0;padding:.3rem .5rem}.btn-danger-ghost:hover{background:var(--danger-soft)}.icon-btn{width:2rem;height:2rem;color:var(--ink-soft);border-radius:6px;place-items:center;display:grid}.icon-btn:hover{background:#f5f5f5}.tag{height:22px;color:var(--muted);background:#f5f5f5;border-radius:4px;align-items:center;padding:0 .5rem;font-size:.75rem;display:inline-flex}.tag.success{background:var(--success-soft);color:var(--success)}.table-wrap{width:100%;overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:.9rem}.data-table th,.data-table td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:.7rem .75rem}.data-table th{color:var(--ink-soft);background:#fafafa;font-size:.82rem;font-weight:600}.data-table tbody tr:hover{background:#fafafa}.table-empty{color:var(--muted);text-align:center!important;padding:2rem .75rem!important}.cell-with-icon{align-items:center;gap:.45rem;font-weight:500;display:inline-flex}.tool-body{flex-direction:column;gap:.75rem;display:flex}.tool-toolbar{justify-content:flex-start;display:flex}.notes-list{flex-direction:column;gap:.55rem;max-height:420px;display:flex;overflow:auto}.note-item{position:relative}.note-item textarea{resize:vertical;min-height:72px;padding-right:2.4rem}.note-item .icon-btn{position:absolute;top:.35rem;right:.3rem}.todo-form{gap:.5rem;display:flex}.todo-form input{flex:1}.todo-meta{color:var(--muted);margin:0;font-size:.85rem}.todo-list{flex-direction:column;gap:.25rem;max-height:360px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.todo-list li{border-radius:6px;grid-template-columns:auto 1fr auto;align-items:center;gap:.55rem;padding:.5rem .4rem;display:grid}.todo-list li:hover{background:#fafafa}.todo-list li.done span{color:var(--muted);text-decoration:line-through}.check-btn{border:1.5px solid var(--line);width:1.25rem;height:1.25rem;color:var(--primary);background:#fff;border-radius:4px;place-items:center;display:grid}.todo-list li.done .check-btn{background:var(--primary-soft);border-color:var(--primary)}.plate-form{flex-direction:column;gap:.75rem;display:flex}.form-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;display:grid}.form-grid label{color:var(--ink-soft);flex-direction:column;gap:.3rem;min-width:0;font-size:.82rem;display:flex}.form-grid label.span-2{grid-column:span 2}.plate-registry .form-grid label.span-2:last-of-type{grid-column:1/-1}.form-actions{flex-wrap:wrap;justify-content:flex-start;gap:.5rem;display:flex}.field-error{color:var(--danger);margin:0;font-size:.85rem}.toolbar-row{justify-content:flex-end;margin-bottom:.75rem;display:flex}.search-field{border:1px solid var(--line);width:min(320px,100%);color:var(--muted);background:#fff;border-radius:6px;align-items:center;gap:.4rem;padding:0 .65rem;display:flex}.search-field input{box-shadow:none;border:none;padding:.5rem 0}.search-field input:focus{box-shadow:none}.plate-tag{color:#0958d9;letter-spacing:.03em;background:#e6f4ff;border-radius:4px;padding:.15rem .45rem;font-weight:650;display:inline-block}.pager-row{justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;margin-top:.85rem;display:flex}.pager-actions{display:flex;flex-wrap:wrap;gap:.35rem}.pager-actions .btn-ghost:disabled{opacity:.4;cursor:not-allowed}.personnel-host{width:100%}.personnel-page .search-field .search-ico{font-size:14px;line-height:1;opacity:.7}.personnel-form-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.personnel-form-grid label.span-2{grid-column:span 2}.personnel-page .btn-ghost{margin-right:.25rem}.dept-line-cell{white-space:normal;line-height:1.35}.dept-line-cell div+div{margin-top:.1rem;font-size:.82rem}.format-convert-host{width:100%}.common-tools-host{width:100%}.common-tools-toolbar{display:flex;align-items:center;margin:0 0 .75rem}.image-tools-page .imged-shell{display:grid;grid-template-columns:minmax(0,1fr) 300px;border:1px solid var(--line);border-radius:10px;background:#fff;align-items:start;overflow:hidden}.image-tools-page .imged-main{min-width:0;display:flex;flex-direction:column}.image-tools-page .imged-slots{display:flex;gap:.55rem;overflow:auto;padding:14px 14px 0}.image-tools-page .imged-slot{position:relative;flex:none;width:92px;height:92px;border:2px solid var(--line);border-radius:8px;background:#f8fafc;padding:0;overflow:hidden}.image-tools-page .imged-slot img{width:100%;height:100%;object-fit:cover;display:block}.image-tools-page .imged-slot span{position:absolute;left:4px;bottom:4px;background:#00000099;color:#fff;border-radius:4px;padding:0 .28rem;font-size:.68rem}.image-tools-page .imged-slot i{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;background:#0000008c;color:#fff;font-style:normal;font-size:12px;line-height:18px}.image-tools-page .imged-slot.active{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.image-tools-page .imged-slot.is-add{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:1.6rem;border-style:dashed}.image-tools-page .imged-view{display:flex;flex-direction:column;min-width:0;background:#fff}.image-tools-page .imged-stage{display:flex;width:max-content;max-width:100%;padding:14px;touch-action:none;user-select:none;cursor:crosshair}.image-tools-page .imged-canvas{position:relative;line-height:0;box-shadow:0 6px 18px #0f172a1a;background-image:linear-gradient(45deg,#e6eaee 25%,transparent 25%),linear-gradient(-45deg,#e6eaee 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e6eaee 75%),linear-gradient(-45deg,transparent 75%,#e6eaee 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;background-color:#f7f8fa}.image-tools-page .imged-canvas canvas{display:block;max-width:100%}.image-tools-page .imged-hint{margin:0;padding:.55rem .9rem;color:var(--muted);font-size:.78rem;background:#f7f8fa;border-top:1px solid var(--line)}.image-tools-page .img-crop-box{position:absolute;border:2px solid #1677ff;box-shadow:0 0 0 1px #fff;pointer-events:none;box-sizing:border-box}.image-tools-page .img-crop-box i{position:absolute;width:10px;height:10px;background:#fff;border:2px solid #1677ff;border-radius:2px;box-sizing:border-box}.image-tools-page .img-crop-box i[data-h=nw]{left:-6px;top:-6px}.image-tools-page .img-crop-box i[data-h=n]{left:50%;top:-6px;margin-left:-5px}.image-tools-page .img-crop-box i[data-h=ne]{right:-6px;top:-6px}.image-tools-page .img-crop-box i[data-h=e]{right:-6px;top:50%;margin-top:-5px}.image-tools-page .img-crop-box i[data-h=se]{right:-6px;bottom:-6px}.image-tools-page .img-crop-box i[data-h=s]{left:50%;bottom:-6px;margin-left:-5px}.image-tools-page .img-crop-box i[data-h=sw]{left:-6px;bottom:-6px}.image-tools-page .img-crop-box i[data-h=w]{left:-6px;top:50%;margin-top:-5px}.image-tools-page .imged-side{border-left:1px solid var(--line);padding:.9rem .9rem 1rem;display:flex;flex-direction:column;gap:.85rem;background:#fff}.image-tools-page .imged-file{display:flex;flex-direction:column;gap:.15rem;min-width:0}.image-tools-page .imged-file strong{font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-tools-page .imged-file span{color:var(--muted);font-size:.78rem}.image-tools-page .imged-block h3{margin:0 0 .45rem;font-size:.78rem;letter-spacing:.04em;color:var(--muted);font-weight:600}.image-tools-page .imged-block-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.image-tools-page .imged-block-head h3{margin:0}.image-tools-page .imged-pair{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.image-tools-page .imged-pair label,.image-tools-page .imged-quality{display:flex;flex-direction:column;gap:.25rem;font-size:.78rem;color:var(--ink-soft)}.image-tools-page .imged-quality{margin-top:.65rem}.image-tools-page .imged-target{display:flex;flex-direction:column;gap:.25rem;margin-top:.65rem;font-size:.78rem;color:var(--ink-soft)}.image-tools-page .imged-kb{display:flex;align-items:center;gap:.35rem}.image-tools-page .imged-kb input{width:100%}.image-tools-page .imged-target-note{margin:.35rem 0 0;font-size:.75rem}.image-tools-page .imged-quality span{display:flex;justify-content:space-between}.image-tools-page .imged-link{padding:0;margin-top:.35rem;color:var(--primary);font-size:.78rem;background:none;align-self:flex-start}.image-tools-page .imged-block-head .imged-link{margin:0}.image-tools-page .imged-formats{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem}.image-tools-page .imged-fmt{border:1px solid var(--line);border-radius:6px;padding:.35rem 0;font-size:.82rem;color:var(--ink-soft);background:#fff}.image-tools-page .imged-fmt.active{background:var(--primary);border-color:var(--primary);color:#fff}.image-tools-page .imged-preview{background-image:linear-gradient(45deg,#e5e7eb 25%,transparent 25%),linear-gradient(-45deg,#e5e7eb 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e5e7eb 75%),linear-gradient(-45deg,transparent 75%,#e5e7eb 75%);background-size:14px 14px;background-position:0 0,0 7px,7px -7px,-7px 0;background-color:#fff;border:1px solid var(--line);border-radius:8px;min-height:96px;display:flex;align-items:center;justify-content:center;overflow:hidden}.image-tools-page .imged-preview canvas{max-width:100%;max-height:160px;display:block}.image-tools-page .imged-stat{margin:.4rem 0 0;font-size:.78rem;color:var(--ink-soft);line-height:1.4}.image-tools-page .imged-actions{display:grid;grid-template-columns:auto auto 1fr;gap:.45rem;margin-top:auto}.image-tools-page .imged-actions .btn-primary{width:100%}@media (max-width:900px){.image-tools-page .imged-shell{grid-template-columns:1fr}.image-tools-page .imged-side{border-left:none;border-top:1px solid var(--line)}.image-tools-page .imged-actions{grid-template-columns:1fr 1fr}.image-tools-page .imged-actions .btn-primary{grid-column:1/-1}}.fmt-tabs{flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;display:flex}.fmt-tab{border:1px solid var(--line);color:var(--ink-soft);background:#fff;border-radius:6px;padding:.4rem .85rem;font-size:.9rem}.fmt-tab:hover{border-color:#91caff;color:var(--primary)}.fmt-tab.active{background:var(--primary);border-color:var(--primary);color:#fff}.fmt-panel{flex-direction:column;gap:.75rem;display:flex}.fmt-block{color:var(--ink-soft);flex-direction:column;gap:.35rem;font-size:.82rem;display:flex}.fmt-block textarea{min-height:140px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem;line-height:1.45}.fmt-ok{color:var(--success);margin:.25rem 0 .5rem;font-size:.85rem}.fmt-drop{border:1.5px dashed var(--line);border-radius:8px;background:#fafafa;text-align:center;padding:2rem 1rem;cursor:pointer;transition:border-color .15s,background .15s}.fmt-drop:hover,.fmt-drop.dragover{border-color:var(--primary);background:#f0f7ff}.fmt-drop-title{margin:0 0 .35rem;font-weight:600}.fmt-file-list{flex-direction:column;gap:.35rem;margin:.85rem 0 0;padding:0;list-style:none;display:flex}.fmt-file-list li{border:1px solid var(--line);border-radius:6px;justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem .75rem;display:flex}.fmt-file-list em{font-style:normal;margin-left:.35rem}@media (width<=1200px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid label.span-2,.plate-registry .form-grid label.span-2:last-of-type{grid-column:1/-1}}@media (width<=960px){.stat-row{grid-template-columns:1fr 1fr}}@media (width<=768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-mask.open{z-index:25;background:#00000059;display:block;position:fixed;inset:0}.admin-main{margin-left:0}.menu-toggle{display:grid}.stat-row,.shortcut-grid,.form-grid,.personnel-form-grid{grid-template-columns:1fr}.form-grid label.span-2,.plate-registry .form-grid label.span-2:last-of-type{grid-column:auto}.page-header{flex-direction:column}.toolbar-row{justify-content:stretch}.pager-row{flex-direction:column;align-items:stretch}.pager-actions{justify-content:flex-start}.search-field{width:100%}}
.row-actions{display:flex;gap:.35rem;align-items:center}.data-table tbody tr.is-editing td{background:var(--primary-soft)}