:root{--bg:#000;--surface:#121212;--surface-2:#1a1a1a;--text:#fff;--text-secondary:#b3b3b3;--text-tertiary:#606060;--accent:#e2ff04;--accent-dim:#20240a;--stroke:#2f2f2f;--stroke-accent:#535e15;--btn-main:#444d0b;--btn-secondary:#393939;--green:#04ffa0;--green-dim:#004b2e;--red:#ff2475;--red-dim:#460015;--yellow:#f2d336;--yellow-dim:#332a01;--radius:8px;--sidebar-w:240px;--font:"DM Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--font-display:"Libre Baskerville", Georgia, serif}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.45}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3{letter-spacing:-.02em;margin:0;font-weight:600}h1{font-size:1.5rem}h2{font-size:1.15rem}code,.mono{font-family:var(--font-mono);font-size:.85em}.app-shell{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--stroke);background:var(--surface);flex-direction:column;gap:24px;height:100vh;padding:20px 16px;display:flex;position:sticky;top:0}.sidebar-brand{align-items:center;gap:10px;padding:0 8px;display:flex}.sidebar-brand img{width:auto;height:22px}.sidebar-brand span{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-size:11px;font-weight:600}.nav{flex-direction:column;flex:1;gap:4px;display:flex}.nav a{border-radius:var(--radius);color:var(--text-secondary);padding:10px 12px;transition:background .15s,color .15s}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a.active{background:var(--accent-dim);color:var(--accent);border:1px solid var(--stroke-accent)}.sidebar-footer{border-top:1px solid var(--stroke);flex-direction:column;gap:8px;padding-top:16px;display:flex}.sidebar-user{color:var(--text-secondary);padding:0 8px;font-size:12px}.sidebar-user strong{color:var(--text);margin-bottom:2px;font-size:13px;display:block}.main{min-width:0;padding:28px 32px 48px;position:relative;overflow-x:hidden}.main:before{content:"エキデン";font-size:180px;font-family:var(--font-display);color:var(--accent);opacity:.03;pointer-events:none;z-index:0;line-height:1;position:fixed;bottom:-40px;right:-20px}.page{z-index:1;max-width:1100px;position:relative}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-header p{color:var(--text-secondary);max-width:520px;margin:6px 0 0}.page-actions{flex-wrap:wrap;flex-shrink:0;gap:8px;display:flex}.panel{background:var(--surface);border:1px solid var(--stroke);border-radius:var(--radius);padding:20px}.panel+.panel{margin-top:16px}.panel-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-bottom:12px;font-size:13px}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (width<=900px){.app-shell{grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--stroke);height:auto;position:relative}.grid-2{grid-template-columns:1fr}.main{padding:20px 16px 40px}}.table-wrap{overflow-x:auto}table.data{border-collapse:collapse;width:100%}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--stroke);vertical-align:middle;padding:12px 10px}table.data th{text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);font-size:11px;font-weight:500}table.data tr:hover td{background:#ffffff05}table.data a.row-link{color:var(--accent)}.btn{border-radius:var(--radius);background:var(--btn-secondary);color:var(--text);border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:9px 14px;font-weight:500;transition:opacity .15s,background .15s;display:inline-flex}.btn:hover:not(:disabled){opacity:.9}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#202020;font-weight:600}.btn-ghost{border-color:var(--stroke);background:0 0}.btn-danger{background:var(--red-dim);border-color:var(--red);color:var(--red)}.btn-sm{padding:6px 10px;font-size:12px}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{color:var(--text-secondary);font-size:12px}.field input,.field select,.field textarea{background:var(--bg);border:1px solid var(--stroke);border-radius:var(--radius);outline:none;padding:10px 12px;transition:border-color .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--stroke-accent)}.field textarea{resize:vertical;min-height:120px;font-family:var(--font-mono);font-size:12px;line-height:1.5}.field-hint{color:var(--text-tertiary);font-size:11px}.checkbox-list{border:1px solid var(--stroke);border-radius:var(--radius);background:var(--bg);flex-direction:column;gap:8px;max-height:240px;padding:8px;display:flex;overflow-y:auto}.checkbox-row{align-items:center;gap:8px;font-size:13px;display:flex}.checkbox-row input{accent-color:var(--accent)}.badge{letter-spacing:.04em;text-transform:uppercase;border-radius:4px;align-items:center;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-collecting{background:var(--yellow-dim);color:var(--yellow)}.badge-ready{background:var(--accent-dim);color:var(--accent)}.badge-submitting{color:#7eb8ff;background:#1a2030}.badge-submitted{background:var(--green-dim);color:var(--green)}.badge-failed{background:var(--red-dim);color:var(--red)}.badge-admin{background:var(--surface-2);color:var(--text-secondary)}.badge-super_admin{background:var(--accent-dim);color:var(--accent)}.auth-screen{place-items:center;min-height:100vh;padding:32px 16px;display:grid;position:relative;overflow:hidden}.auth-screen:before{content:"";pointer-events:none;background:radial-gradient(circle,#e2ff041f,#0000 70%);border-radius:50%;width:600px;height:600px;position:absolute;top:20%;left:50%;transform:translate(-50%)}.auth-card{z-index:1;background:var(--surface);border:1px solid var(--stroke);border-radius:12px;width:100%;max-width:420px;padding:32px 28px;position:relative}.auth-card .brand{text-align:center;margin-bottom:28px}.auth-card .brand img{height:28px;margin-bottom:12px}.auth-card .brand h1{font-family:var(--font-display);font-size:1.35rem;font-weight:400}.auth-card .brand p{color:var(--text-secondary);margin:8px 0 0;font-size:13px}.tabs{background:var(--bg);border-radius:var(--radius);gap:4px;margin-bottom:20px;padding:4px;display:flex}.tabs button{color:var(--text-secondary);background:0 0;border:none;border-radius:6px;flex:1;padding:8px;font-weight:500}.tabs button.active{background:var(--accent-dim);color:var(--accent)}.alert{border-radius:var(--radius);margin-bottom:14px;padding:10px 12px;font-size:13px}.alert-error{background:var(--red-dim);border:1px solid var(--red);color:var(--red)}.alert-success{background:var(--green-dim);border:1px solid var(--green);color:var(--green)}.alert-warn{background:var(--yellow-dim);border:1px solid var(--yellow);color:var(--yellow)}.empty{text-align:center;color:var(--text-secondary);padding:48px 24px}.empty h2{font-family:var(--font-display);color:var(--text);margin-bottom:8px;font-weight:400}.kv{grid-template-columns:140px 1fr;gap:8px 12px;font-size:13px;display:grid}.kv dt{color:var(--text-tertiary)}.kv dd{word-break:break-all;margin:0}.copyable{font-family:var(--font-mono);align-items:center;gap:6px;font-size:12px;display:inline-flex}.copyable button{color:var(--text-tertiary);background:0 0;border:none;padding:0;font-size:11px}.copyable button:hover{color:var(--accent)}.progress-bar{background:var(--bg);border-radius:3px;height:6px;margin:8px 0;overflow:hidden}.progress-bar>span{background:var(--accent);height:100%;transition:width .3s;display:block}.sig-list{flex-direction:column;gap:6px;margin-top:12px;display:flex}.sig-item{background:var(--bg);border-radius:6px;justify-content:space-between;align-items:center;padding:8px 10px;font-size:13px;display:flex}.sig-item .ok{color:var(--green)}.sig-item .pending{color:var(--text-tertiary)}.stack{flex-direction:column;gap:12px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.muted{color:var(--text-secondary)}.danger-text{color:var(--red)}.link-btn{color:var(--accent);background:0 0;border:none;padding:0;font-size:13px}
