:root{
  --violet-0:#f3f0ff;--violet-1:#e5dbff;--violet-2:#d0bfff;--violet-3:#b197fc;--violet-4:#9775fa;--violet-5:#845ef7;--violet-6:#7950f2;--violet-7:#7048e8;--violet-8:#6741d9;
  --red-0:#fff5f5;--red-6:#fa5252;--red-7:#f03e3e;--red-8:#e03131;
  --yellow-0:#fff9db;--yellow-6:#fab005;--yellow-7:#f59f00;--yellow-8:#f08c00;
  --blue-0:#e7f5ff;--blue-6:#228be6;--blue-7:#1c7ed6;--blue-8:#1971c2;
  --teal-0:#e6fcf5;--teal-2:#c3fae8;--teal-6:#12b886;--teal-7:#0ca678;--teal-8:#099268;
  --orange-0:#fff4e6;--orange-6:#fd7e14;--orange-8:#e8590c;
  --gray-0:#f8f9fa;--gray-1:#f1f3f5;--gray-2:#e9ecef;--gray-3:#dee2e6;--gray-4:#ced4da;--gray-5:#adb5bd;--gray-6:#868e96;--gray-7:#495057;--gray-8:#343a40;--gray-9:#212529;
  --tw-violet-50:#f5f3ff;--tw-violet-100:#ede9fe;--tw-violet-400:#a78bfa;--tw-violet-500:#8b5cf6;
  --tw-gray-50:#f9fafb;--tw-gray-100:#f3f4f6;--tw-gray-200:#e5e7eb;--tw-gray-300:#d1d5db;--tw-gray-400:#9ca3af;--tw-gray-500:#6b7280;
  --bg:#fff;--text:var(--gray-8);--dimmed:var(--gray-6);--border:var(--gray-3);
  --radius-sm:4px;--radius-md:8px;--radius-lg:16px;
  --shadow-md:0 1px 3px rgba(0,0,0,.05),0 10px 15px -5px rgba(0,0,0,.05),0 7px 7px -5px rgba(0,0,0,.04);
  --font:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#fff;}}
:root[data-theme="dark"]{--bg:#fff;}
*{box-sizing:border-box;}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;}
button,input,select,textarea{font:inherit;color:inherit;}
button{cursor:pointer;background:none;border:0;padding:0;}
a{color:var(--violet-7);}

/* ===== shell（GBase admin） ===== */
.shell{display:flex;min-height:100vh;}
.sidenav{width:260px;flex:0 0 260px;background:#fff;border-right:1px solid var(--tw-gray-200);padding:16px 12px;display:flex;flex-direction:column;gap:2px;}
.sidenav .brand{display:flex;align-items:center;gap:10px;padding:6px 8px 16px;font-weight:700;font-size:16px;color:var(--gray-9);}
.sidenav .brand .mk{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--violet-6),var(--violet-4));color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;}
.sidenav .brand small{display:block;font-size:11px;font-weight:500;color:var(--gray-6);}
.sidenav .sec{font-size:11px;color:var(--gray-5);padding:12px 10px 4px;letter-spacing:.04em;}
.sidenav .item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--gray-7);font-size:14px;width:100%;text-align:left;}
.sidenav .item:hover{background:var(--gray-0);}
.sidenav .item.on{background:var(--violet-0);color:var(--violet-8);font-weight:600;}
.sidenav .item .ic{width:18px;height:18px;}
.sidenav .spacer{flex:1;}
.sidenav .user{display:flex;align-items:center;gap:10px;padding:10px;border-top:1px solid var(--tw-gray-200);font-size:13px;color:var(--gray-7);}
.sidenav .user .av{width:28px;height:28px;border-radius:50%;background:var(--violet-1);color:var(--violet-8);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;}
.main{flex:1;min-width:0;padding:0 32px 40px;}
.container-header{display:flex;justify-content:space-between;align-items:flex-start;margin:20px 0;gap:30px;}
.container-header .l{display:flex;gap:8px;align-items:flex-start;}
.container-header .l .tg{width:44px;height:44px;display:flex;align-items:center;justify-content:center;color:#1d2939;}
.container-header h1{margin:0;font-size:34px;font-weight:500;color:var(--gray-8);line-height:1.2;}
.container-header p{margin:5px 0 0;color:var(--gray-6);font-size:16px;}
.page{padding-top:16px;padding-bottom:40px;}

/* ===== Mantine-like primitives ===== */
.stack{display:flex;flex-direction:column;}
.group{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.group.nowrap{flex-wrap:nowrap;}
.group.between{justify-content:space-between;}
.group.center{justify-content:center;}
.grow{flex:1;min-width:0;}
.card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;}
.card.lg{padding:20px;}
.card.xl{padding:24px;border-radius:var(--radius-lg);}
.card.dashed{border-style:dashed;cursor:pointer;transition:all .15s;}
.card.dashed:hover{border-color:var(--tw-violet-400);background:rgba(245,243,255,.4);}
.card.row{cursor:pointer;transition:all .15s;}
.card.row:hover{box-shadow:var(--shadow-md);}
.card.row.nc{cursor:default;}
.card.row.nc:hover{box-shadow:none;}
.t{color:var(--gray-8);}
.t-sm{font-size:14px;}.t-xs{font-size:12px;}.t-lg{font-size:18px;}.t-md{font-size:16px;}
.t-dim{color:var(--gray-6);}.t-g5{color:var(--gray-5);}.t-g7{color:var(--gray-7);}.t-vio{color:var(--violet-7);}.t-red{color:var(--red-7);}.t-teal{color:var(--teal-8);}
.fw5{font-weight:500;}.fw6{font-weight:600;}.fw7{font-weight:700;}
.clamp1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap;line-height:1;}
.badge.xs{height:16px;padding:0 6px;font-size:9px;}
.badge .ic{width:12px;height:12px;}
.badge.red{background:rgba(250,82,82,.1);color:var(--red-6);}
.badge.yellow{background:rgba(250,176,5,.1);color:var(--yellow-8);}
.badge.blue{background:rgba(34,139,230,.1);color:var(--blue-6);}
.badge.teal{background:rgba(18,184,134,.1);color:var(--teal-7);}
.badge.orange{background:rgba(253,126,20,.1);color:var(--orange-8);}
.badge.gray{background:rgba(134,142,150,.12);color:var(--gray-7);}
.badge.violet{background:rgba(121,80,242,.1);color:var(--violet-7);}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;white-space:nowrap;border:1px solid transparent;transition:background .12s;}
.btn .ic{width:16px;height:16px;}
.btn:disabled{cursor:not-allowed;background:var(--gray-2)!important;color:var(--gray-5)!important;border-color:transparent!important;}
.btn.md{height:42px;padding:0 22px;font-size:16px;}
.btn.compact-sm{height:26px;padding:0 10px;font-size:13px;}
.btn.compact-xs{height:22px;padding:0 8px;font-size:12px;}
.btn.compact-xs .ic{width:14px;height:14px;}
.btn.filled{background:var(--violet-6);color:#fff;}
.btn.filled:hover{background:var(--violet-7);}
.btn.filled.teal{background:var(--teal-6);}
.btn.filled.red{background:var(--red-7);}
.btn.filled.orange{background:var(--orange-6);}
.btn.light{background:rgba(121,80,242,.1);color:var(--violet-7);}
.btn.light:hover{background:rgba(121,80,242,.16);}
.btn.light.teal{background:rgba(18,184,134,.1);color:var(--teal-8);}
.btn.light.gray{background:rgba(134,142,150,.12);color:var(--gray-7);}
.btn.light.red{background:rgba(250,82,82,.1);color:var(--red-7);}
.btn.subtle{background:transparent;color:var(--violet-7);}
.btn.subtle:hover{background:rgba(121,80,242,.08);}
.btn.subtle.gray{color:var(--gray-7);}
.btn.subtle.gray:hover{background:var(--gray-1);}
.btn.default{background:#fff;border-color:var(--gray-4);color:var(--gray-8);}
.btn.default:hover{background:var(--gray-0);}
.aicon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);color:var(--gray-6);flex:0 0 auto;}
.aicon:hover{background:var(--gray-1);}
.aicon.sm{width:22px;height:22px;}
.aicon.xl{width:44px;height:44px;}
.aicon .ic{width:18px;height:18px;}
.aicon.sm .ic{width:16px;height:16px;}
.aicon:disabled{color:var(--gray-4);cursor:not-allowed;background:none;}
.ic{width:16px;height:16px;flex:0 0 auto;}
.loader{width:18px;height:18px;border:2.5px solid rgba(121,80,242,.25);border-top-color:var(--violet-6);border-radius:50%;animation:spin .7s linear infinite;flex:0 0 auto;}
.loader.lg{width:40px;height:40px;border-width:4px;}
.loader.white{border-color:rgba(255,255,255,.35);border-top-color:#fff;}
.loader.xs{width:12px;height:12px;border-width:2px;}
@keyframes spin{to{transform:rotate(360deg);}}
.progress{height:8px;background:var(--gray-2);border-radius:999px;overflow:hidden;}
.progress > i{display:block;height:100%;background:var(--violet-6);border-radius:999px;transition:width .4s;background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%);background-size:20px 20px;animation:stripes 1s linear infinite;}
@keyframes stripes{to{background-position:20px 0;}}
.alert{display:flex;gap:12px;padding:12px 16px;border-radius:var(--radius-sm);font-size:14px;}
.alert.orange{background:var(--orange-0);color:var(--orange-8);}
.alert.orange .ic{width:18px;height:18px;margin-top:2px;}
.alert.blue{background:var(--blue-0);color:var(--blue-8);}
.input,.select,.textarea{width:100%;height:36px;padding:0 12px;border:1px solid var(--gray-4);border-radius:var(--radius-sm);background:#fff;font-size:14px;outline:none;}
.input:focus,.select:focus,.textarea:focus{border-color:var(--violet-6);}
.input.xs,.select.xs{height:30px;font-size:12px;padding:0 8px;}
.textarea{height:auto;padding:8px 12px;resize:vertical;min-height:64px;}
.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23868e96' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px;}
.select.orange{border-color:var(--orange-6);color:var(--orange-8);}
.select:disabled{background-color:var(--gray-1);color:var(--gray-5);cursor:not-allowed;}
.label{display:block;font-size:14px;font-weight:500;margin-bottom:4px;color:var(--gray-8);}
.check{width:16px;height:16px;accent-color:var(--violet-6);cursor:pointer;flex:0 0 auto;}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
@media(max-width:900px){.grid4{grid-template-columns:1fr 1fr;}}
.stat{display:flex;justify-content:space-between;align-items:center;}
.stat .n{font-size:28px;font-weight:700;color:var(--gray-8);}
.stat.pass{border-color:var(--teal-2);background:rgba(230,252,245,.4);}
.stat.pass .n{color:var(--teal-7);}
.divider{height:1px;background:var(--tw-gray-200);}
.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;border:2px dashed var(--tw-gray-300);border-radius:12px;padding:48px 24px;text-align:center;cursor:pointer;transition:all .15s;}
.dropzone:hover{border-color:var(--tw-violet-400);background:rgba(245,243,255,.4);}
.dropzone.over{border-color:var(--violet-6);background:var(--tw-violet-50);}
.dropzone .circ{width:48px;height:48px;border-radius:50%;background:var(--tw-violet-50);color:var(--tw-violet-500);display:flex;align-items:center;justify-content:center;}
.dropzone .circ .ic{width:22px;height:22px;}
.plus{width:40px;height:40px;border-radius:50%;background:var(--tw-violet-100);color:var(--tw-violet-500);display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.plus .ic{width:20px;height:20px;}
.pagination{display:flex;gap:6px;justify-content:center;}
.pagination button{width:32px;height:32px;border:1px solid var(--gray-3);border-radius:var(--radius-sm);font-size:14px;color:var(--gray-8);background:#fff;}
.pagination button.on{background:var(--violet-6);border-color:var(--violet-6);color:#fff;}
.pagination button:disabled{color:var(--gray-4);cursor:default;}
.menu{position:relative;}
.menu .dd{position:absolute;right:0;top:32px;z-index:40;background:#fff;border:1px solid var(--gray-2);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);min-width:160px;padding:4px;}
.menu .dd button{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border-radius:var(--radius-sm);font-size:14px;text-align:left;color:var(--gray-8);}
.menu .dd button:hover{background:var(--gray-0);}
.menu .dd button.red{color:var(--red-7);}
.menu .dd .ic{width:14px;height:14px;}
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;}
.modal{background:#fff;border-radius:var(--radius-md);width:100%;max-width:440px;padding:20px;box-shadow:var(--shadow-md);}
.modal.wide{max-width:640px;}
.modal h3{margin:0 0 12px;font-size:16px;font-weight:600;}
.toast{position:fixed;right:24px;top:24px;z-index:200;background:#fff;border:1px solid var(--gray-2);border-left:4px solid var(--violet-6);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:12px 16px;font-size:14px;max-width:420px;animation:in .2s;}
.toast.red{border-left-color:var(--red-6);}.toast.yellow{border-left-color:var(--yellow-6);}.toast.teal{border-left-color:var(--teal-6);}
@keyframes in{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:none;}}
.chev{transition:transform .15s;color:var(--tw-gray-400);}
.chev.open{transform:rotate(90deg);}
.tip{position:relative;}

/* ===== list rows ===== */
.row-main{display:flex;justify-content:space-between;align-items:center;gap:12px;}
.row-main .info{display:flex;gap:12px;align-items:center;min-width:0;flex:1;}
.row-main .meta{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:2px;}

/* ===== issue rows ===== */
.issue{border:1px solid var(--gray-1);border-radius:8px;padding:12px;cursor:pointer;transition:background .12s;}
.issue:hover{background:var(--tw-gray-50);}
.issue.active{border-color:var(--tw-violet-400);background:rgba(245,243,255,.6);}
.issue.confirmed{opacity:.7;}
.issue .head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
.issue .msg{font-size:14px;font-weight:500;color:var(--gray-8);word-break:break-all;}
.issue .sug{font-size:14px;color:var(--gray-6);margin-top:4px;}
.issue .meta{font-size:12px;color:var(--gray-5);margin-top:4px;display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.issue .acts{display:flex;gap:6px;align-items:center;flex:0 0 auto;}
.cbtn{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 8px;border-radius:4px;font-size:12px;font-weight:600;color:var(--gray-6);}
.cbtn:hover{background:var(--gray-1);color:var(--gray-8);}
.cbtn.has{color:var(--violet-7);}
.cbtn .ic{width:14px;height:14px;}
.comments{margin-top:10px;border-top:1px dashed var(--gray-2);padding-top:10px;}
.comment{display:flex;gap:8px;padding:6px 0;}
.comment .av{width:24px;height:24px;border-radius:50%;background:var(--violet-1);color:var(--violet-8);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.comment .av.ifa{background:var(--teal-0);color:var(--teal-8);}
.comment .av.comp{background:var(--orange-0);color:var(--orange-8);}
.comment .b{flex:1;min-width:0;}
.comment .who{font-size:12px;color:var(--gray-6);display:flex;gap:8px;align-items:center;}
.comment .who b{color:var(--gray-8);font-weight:600;}
.comment .txt{font-size:13px;color:var(--gray-8);white-space:pre-wrap;margin-top:2px;}
.comment .txt .m{color:var(--violet-7);font-weight:600;}
.cform{display:flex;gap:8px;margin-top:6px;align-items:flex-end;}
.cform textarea{min-height:44px;font-size:13px;}
.tag-mini{display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:4px;font-size:11px;background:var(--gray-1);color:var(--gray-7);}

/* ===== file detail（PDF viewer） ===== */
.detail{display:flex;flex-direction:column;height:calc(100vh - 220px);min-height:560px;}
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 8px;border-bottom:1px solid var(--tw-gray-200);}
.toolbar .name{flex:1;min-width:0;text-align:center;padding:0 8px;font-weight:500;}
.pager{display:flex;align-items:center;gap:4px;margin-right:8px;}
.pager input{width:56px;text-align:center;}
.zoom{width:44px;text-align:center;font-size:14px;}
.body{display:flex;flex:1;min-height:0;}
.canvas{flex:1;overflow:auto;background:var(--tw-gray-100);}
.canvas .pages{display:flex;flex-direction:column;align-items:center;gap:16px;padding:16px;}
.pdfpage{position:relative;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.15);overflow:hidden;flex:0 0 auto;}
.pdfpage .pn{position:absolute;right:8px;bottom:6px;font-size:10px;color:var(--gray-5);}
.bbox{position:absolute;z-index:10;cursor:pointer;border-style:solid;border-width:2px;background:transparent;transition:all .15s;opacity:.85;}
.bbox:hover{filter:brightness(.95);}
.bbox.on{z-index:60;border-width:3px;opacity:1;transform:scale(1.08);transform-origin:center;box-shadow:0 0 10px 2px var(--violet-4),0 1px 6px rgba(0,0,0,.25);border-color:var(--violet-7)!important;}
.bbox.confirmed{opacity:.5;}
.bbox .lab{position:absolute;top:-20px;left:0;white-space:nowrap;border-radius:3px;padding:1px 4px;font-size:10px;font-weight:500;color:#fff;line-height:1.5;}
.bbox.on .lab{background:var(--violet-7)!important;}
.bbox .num{position:absolute;right:-9px;top:-9px;width:18px;height:18px;border-radius:50%;background:var(--gray-8);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;}
.sidepanel{width:360px;flex:0 0 360px;border-left:1px solid var(--tw-gray-200);overflow:auto;padding:16px;}
@media(max-width:1100px){.sidepanel{width:300px;flex-basis:300px;}}

/* mock document contents */
.doc{position:absolute;inset:0;font-family:var(--font);color:#222;}
.doc .hd{position:absolute;font-weight:800;line-height:1.2;letter-spacing:-.01em;}
.doc .p{position:absolute;font-size:9px;line-height:1.5;color:#333;}
.doc .bar{position:absolute;background:#f1f3f5;border-radius:3px;}
.doc .fig{position:absolute;background:linear-gradient(135deg,#e7f5ff,#d0ebff);border-radius:4px;overflow:hidden;}
.doc .fig svg{width:100%;height:100%;}
.doc .disc{position:absolute;font-size:6px;line-height:1.35;color:#555;}
.doc .brand{position:absolute;font-weight:700;color:#bf0000;}
.doc .btn-mock{position:absolute;background:#bf0000;color:#fff;font-weight:700;border-radius:4px;display:flex;align-items:center;justify-content:center;}
.doc .vid{position:absolute;inset:0;background:radial-gradient(ellipse at 40% 40%,#334 0%,#111 80%);}
.doc .sub{position:absolute;left:0;right:0;text-align:center;color:#fff;font-weight:700;text-shadow:0 1px 4px rgba(0,0,0,.6);}
.doc .tl{position:absolute;left:12px;right:12px;bottom:10px;height:4px;background:rgba(255,255,255,.3);border-radius:2px;}
.doc .tl i{position:absolute;top:-3px;width:10px;height:10px;border-radius:50%;background:var(--red-6);margin-left:-5px;}
.doc .tc{position:absolute;right:12px;bottom:18px;color:#fff;font-size:10px;font-family:ui-monospace,Menlo,monospace;}
.frames{display:flex;gap:6px;padding:8px;background:#fff;border-top:1px solid var(--gray-2);}
.frames .fr{flex:1;aspect-ratio:16/9;background:#223;border-radius:3px;position:relative;font-size:9px;color:#fff;display:flex;align-items:flex-end;padding:3px;cursor:pointer;}
.frames .fr.on{outline:2px solid var(--violet-6);}
.frames .fr.bad::after{content:"";position:absolute;right:3px;top:3px;width:8px;height:8px;border-radius:50%;background:var(--red-6);}
.fileicon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;font-size:9px;font-weight:800;flex:0 0 auto;}
.fileicon.pdf{background:#fff5f5;color:#e03131;}
.fileicon.img{background:#e7f5ff;color:#1971c2;}
.fileicon.mp4{background:#f3f0ff;color:#7048e8;}
.fileicon.doc{background:#e6fcf5;color:#099268;}

/* type confirm */
.trow{display:flex;align-items:center;gap:12px;padding:12px 8px;border-top:1px solid var(--gray-1);}
.trow.need{background:rgba(255,244,230,.6);border-radius:8px;}
.trow .sel{width:260px;flex:0 0 260px;}
.stepper{display:flex;align-items:center;gap:0;font-size:13px;color:var(--gray-6);margin-bottom:4px;}
.stepper .st{display:flex;align-items:center;gap:8px;}
.stepper .st b{width:22px;height:22px;border-radius:50%;border:1px solid var(--gray-3);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--gray-6);}
.stepper .st.on b{background:var(--violet-6);border-color:var(--violet-6);color:#fff;}
.stepper .st.done b{background:var(--violet-0);border-color:var(--violet-2);color:var(--violet-7);}
.stepper .st.on{color:var(--gray-8);font-weight:600;}
.stepper .ln{width:44px;height:1px;background:var(--gray-3);margin:0 12px;}

/* processing */
.processing{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 0;}
.processing .card{width:100%;max-width:520px;}

/* report */
.report{background:var(--tw-gray-100);padding:24px;min-height:calc(100vh - 200px);}
.sheet{background:#fff;width:100%;max-width:860px;margin:0 auto 24px;padding:40px 48px;box-shadow:0 1px 4px rgba(0,0,0,.12);font-size:12px;color:#222;}
.sheet h2{font-size:22px;margin:0 0 4px;font-weight:700;}
.sheet h3{font-size:14px;margin:22px 0 8px;padding-bottom:4px;border-bottom:2px solid var(--gray-8);}
.sheet table{width:100%;border-collapse:collapse;font-size:11.5px;}
.sheet th,.sheet td{border:1px solid var(--gray-3);padding:6px 8px;vertical-align:top;text-align:left;}
.sheet th{background:var(--gray-0);font-weight:600;white-space:nowrap;}
.sheet .kv{display:grid;grid-template-columns:120px 1fr 120px 1fr;gap:4px 12px;font-size:12px;}
.sheet .kv b{color:var(--gray-6);font-weight:500;}
.sheet .verdict{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:6px;font-weight:700;font-size:14px;}
.sheet .verdict.ng{background:var(--red-0);color:var(--red-8);border:1px solid #ffc9c9;}
.sheet .verdict.ok{background:var(--teal-0);color:var(--teal-8);}
.sheet .thumbs{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.sheet .thumb{border:1px solid var(--gray-3);padding:8px;}
.sheet .thumb .cap{font-size:11px;color:var(--gray-6);margin-top:6px;}
.sheet .sev{display:inline-block;padding:1px 6px;border-radius:3px;font-size:10px;font-weight:700;}
.sheet .sev.error{background:#fff5f5;color:#e03131;}.sheet .sev.warning{background:#fff9db;color:#f08c00;}.sheet .sev.info{background:#e7f5ff;color:#1971c2;}
.sheet .cm{font-size:11px;color:var(--gray-7);margin-top:3px;padding-left:8px;border-left:2px solid var(--violet-2);}
.sheet .foot{margin-top:28px;font-size:10px;color:var(--gray-5);display:flex;justify-content:space-between;}
.reportbar{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--tw-gray-200);padding:10px 24px;display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 -32px 0;}
@media print{.sidenav,.reportbar,.tweaks,.tweaks-btn,.container-header{display:none!important;}.main{padding:0;}.report{background:#fff;padding:0;}.sheet{box-shadow:none;max-width:none;page-break-after:always;}}


/* ===== standalone shell ===== */
.shell.standalone{flex-direction:column;}
.topbar{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid var(--tw-gray-200);background:#fff;position:sticky;top:0;z-index:30;}
.topbar .brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;color:var(--gray-9);}
.topbar .brand .mk{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--violet-6),var(--violet-4));color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;}
.topbar .brand small{display:block;font-size:11px;font-weight:500;color:var(--gray-6);line-height:1.2;}
.topbar .user{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--gray-7);}
.topbar .user .av{width:28px;height:28px;border-radius:50%;background:var(--violet-1);color:var(--violet-8);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;}
.shell.standalone .main{max-width:1240px;width:100%;margin:0 auto;}
.shell.standalone .container-header{margin:12px 0 8px;}
.shell.standalone .container-header h1{font-size:28px;}
.shell.standalone .container-header p{font-size:14px;}
.shell.standalone .reportbar{margin:0;}
@media print{.topbar{display:none!important;}}

/* tweaks */
.tweaks-btn{position:fixed;right:20px;bottom:20px;z-index:90;display:flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--gray-3);border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;box-shadow:var(--shadow-md);}
.tweaks{position:fixed;right:20px;bottom:64px;z-index:90;width:340px;background:#fff;border:1px solid var(--gray-3);border-radius:12px;box-shadow:var(--shadow-md);padding:14px;font-size:13px;}
.tweaks h4{margin:0 0 10px;font-size:13px;}
.tweaks .trw{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-top:1px solid var(--gray-1);}
.tweaks ol{margin:8px 0 0;padding:0;list-style:none;max-height:40vh;overflow:auto;display:flex;flex-direction:column;gap:6px;}
.tweaks ol li{display:flex;gap:8px;font-size:12px;color:var(--gray-7);line-height:1.4;}
.tweaks ol b{flex:0 0 18px;height:18px;border-radius:999px;background:var(--violet-6);color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center;}
.switch{width:36px;height:20px;border-radius:999px;background:var(--gray-3);position:relative;transition:background .15s;}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s;}
.switch.on{background:var(--violet-6);}
.switch.on::after{left:18px;}
.note{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;background:var(--violet-6);color:#fff;font-size:10px;font-weight:700;margin-left:6px;cursor:help;position:relative;vertical-align:middle;}
.note:hover::after{content:attr(data-t);position:absolute;left:24px;top:-6px;z-index:80;background:var(--gray-9);color:#fff;padding:8px 10px;border-radius:6px;width:280px;font-size:12px;font-weight:400;line-height:1.45;white-space:normal;}
@media(max-width:900px){.sidenav{display:none;}.main{padding:0 16px 40px;}.container-header h1{font-size:24px;}.body{flex-direction:column;}.sidepanel{width:100%;flex-basis:auto;border-left:0;border-top:1px solid var(--tw-gray-200);}.detail{height:auto;}.canvas{max-height:60vh;}}
/* ui 追加 */
.login{max-width:380px;margin:80px auto;}
.pdfpage canvas{display:block;}
.bbox.pageonly{border-style:dashed;}
.topbar .links a{color:var(--gray-6);font-size:13px;margin-right:14px;text-decoration:none}
.topbar .links a:hover{color:var(--violet-7)}
.err{background:var(--red-0);color:var(--red-8);padding:10px 12px;border-radius:4px;font-size:13px}
.frame{width:100%;height:calc(100vh - 180px);border:1px solid var(--gray-3);border-radius:8px;background:#fff}
.quote{font-size:12px;color:var(--gray-7);margin-top:4px;padding:4px 8px;background:var(--gray-0);border-radius:4px}
.spin{display:inline-block;width:12px;height:12px;border:2px solid rgba(121,80,242,.25);border-top-color:var(--violet-6);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px}

/* ===== admin(設定・多页)===== */
.adm{display:grid;grid-template-columns:232px minmax(0,1fr);gap:0;min-height:calc(100vh - 56px);}
.adm-nav{border-right:1px solid var(--tw-gray-200);padding:20px 12px;background:#fff;position:sticky;top:56px;height:calc(100vh - 56px);}
.adm-nav .sec{font-size:11px;color:var(--gray-5);padding:6px 10px 6px;letter-spacing:.04em;}
.adm-nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:var(--gray-7);font-size:14px;text-decoration:none;}
.adm-nav a:hover{background:var(--gray-0);}
.adm-nav a.on{background:var(--violet-0);color:var(--violet-8);font-weight:600;}
.adm-nav a .ic{width:18px;height:18px;}
.adm-nav .foot{margin-top:auto;padding:12px 10px 0;font-size:12px;color:var(--gray-5);}
.adm-main{padding:24px 32px 48px;max-width:1080px;width:100%;}
.adm-main h1{font-size:24px;font-weight:500;margin:0 0 4px;color:var(--gray-8);}
.adm-main .lead{color:var(--gray-6);margin-bottom:20px;font-size:14px;}
.kv{display:grid;grid-template-columns:140px 1fr;gap:8px 16px;font-size:14px;}
.kv b{color:var(--gray-6);font-weight:500;}
.field{margin-bottom:14px;}
.field .help{font-size:12px;color:var(--gray-6);margin-top:4px;}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.msg{margin-top:12px;padding:10px 12px;border-radius:6px;font-size:13px;white-space:pre-wrap;}
.msg.ok{background:var(--teal-0);color:var(--teal-8);}.msg.ng{background:var(--red-0);color:var(--red-8);}.msg.info{background:var(--violet-0);color:var(--violet-8);}
table.tbl{width:100%;border-collapse:collapse;font-size:13.5px;}
table.tbl th{text-align:left;color:var(--gray-6);font-weight:500;font-size:12px;padding:8px 10px;border-bottom:1px solid var(--gray-2);}
table.tbl td{padding:10px;border-bottom:1px solid var(--gray-1);vertical-align:middle;}
table.tbl tr.click{cursor:pointer;}table.tbl tr.click:hover td{background:var(--tw-gray-50);}table.tbl tr.on td{background:var(--violet-0);}
.chips{display:flex;flex-wrap:wrap;gap:6px;}
.chip{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:999px;border:1px solid var(--gray-3);font-size:12px;cursor:pointer;background:#fff;color:var(--gray-7);}
.chip.on{border-color:var(--violet-6);background:var(--violet-0);color:var(--violet-8);font-weight:600;}
.md{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:20px;align-items:start;}
.rsec h4{font-size:13px;margin:14px 0 4px;color:var(--gray-8);}
.rsec pre{white-space:pre-wrap;font:12.5px/1.65 var(--font);background:var(--gray-0);padding:10px 12px;border-radius:6px;margin:0;}
.status-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;}
.probe{border:1px solid var(--gray-2);border-radius:8px;padding:12px 14px;display:flex;gap:10px;align-items:flex-start;}
.probe .dot{width:10px;height:10px;border-radius:50%;margin-top:5px;flex:0 0 auto;}
.probe .dot.ok{background:var(--teal-6);}.probe .dot.ng{background:var(--red-6);}
.probe b{display:block;font-size:13px;}
.probe span{font-size:12px;color:var(--gray-6);word-break:break-all;}
@media(max-width:900px){.adm{grid-template-columns:1fr;}.adm-nav{position:static;height:auto;border-right:0;border-bottom:1px solid var(--tw-gray-200);display:flex;gap:4px;overflow:auto;padding:8px;}.adm-nav .sec,.adm-nav .foot{display:none;}.adm-main{padding:16px;}.row2,.md{grid-template-columns:1fr;}}
