:root{--bg:#f6f7f9;--card:#fff;--ink:#1c2430;--muted:#68707c;--line:#e3e6ea;--accent:#0f6cbd;--accent-ink:#fff;--ok:#1a7f37;--warn:#b35900;--bad:#b3261e;--radius:10px}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:Hiragino Sans,Noto Sans JP,system-ui,sans-serif}.portal{max-width:960px;margin:0 auto;padding:24px 16px 64px}.portal.signin{text-align:center;max-width:520px;padding-top:96px}.portal-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.portal-header h1{margin:0;font-size:1.4rem}.portal-header h1 a{color:inherit;text-decoration:none}.portal-nav{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;margin-bottom:16px;display:flex}.portal-nav a{color:var(--muted);border-radius:8px 8px 0 0;padding:8px 14px;font-size:.92rem;text-decoration:none}.portal-nav a:hover{color:var(--accent);background:#eef5fb}a{color:var(--accent)}.req a{color:inherit;text-decoration:none}.req a:hover{color:var(--accent);text-decoration:underline}.report.clamp{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px;padding:16px 20px}.card h2{margin:0 0 8px;font-size:1.05rem}.card h3{color:var(--muted);margin:16px 0 8px;font-size:.95rem}.summary{flex-wrap:wrap;align-items:center;gap:48px;display:flex}.summary .label{color:var(--muted);font-size:.8rem;display:block}.summary .big{margin-right:12px;font-size:1.6rem}.badge{color:var(--warn);background:#fff3d6;border:1px solid #f0ddae;border-radius:999px;margin-left:12px;padding:2px 10px;font-size:.75rem}.columns{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}@media (max-width:900px){.columns{grid-template-columns:1fr}}.side{flex-direction:column;display:flex}.muted{color:var(--muted);font-size:.85rem}.btn{border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;border-radius:8px;padding:8px 16px;font-size:.9rem}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.small{margin-left:8px;padding:3px 10px;font-size:.8rem}.btn:disabled{opacity:.5;cursor:default}.chat-log{border:1px solid var(--line);background:#fbfcfd;border-radius:8px;height:420px;padding:12px;overflow-y:auto}.msg{margin-bottom:12px}.msg .who{color:var(--muted);font-size:.75rem;display:block}.msg p{white-space:pre-wrap;margin:2px 0 0}.msg.you p{background:#e8f1fa;border-radius:8px;padding:8px 12px;display:inline-block}.chat-input{gap:8px;margin-top:10px;display:flex}.chat-input textarea{border:1px solid var(--line);font:inherit;resize:vertical;border-radius:8px;flex:1;padding:8px 12px}.jobs{margin:0;padding:0;list-style:none}.jobs li{border-top:1px solid var(--line);padding:10px 0}.jobs li:first-child{border-top:none}.job-head{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.status{border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:.8rem}.status.queued{color:var(--accent);background:#eef5fb;border-color:#bcd7ee}.status.running,.status.waiting{color:var(--warn);background:#fff7e6;border-color:#f0ddae}.status.done{color:var(--ok);background:#effaf1;border-color:#cbe6d0}.status.failed{color:var(--bad);background:#fdf1f0;border-color:#ecc7c5}.req{margin:6px 0 0}.report{border-left:3px solid var(--ok);white-space:pre-wrap;background:#f4f8f4;border-radius:4px;margin:6px 0 0;padding:8px 12px}.specialists{margin:0;padding:0;list-style:none}.specialists li{padding:6px 0}.specialists input{margin-right:8px}.ledger{border-collapse:collapse;width:100%;font-size:.9rem}.ledger td{border-top:1px solid var(--line);padding:4px 8px 4px 0}.plus{color:var(--ok)}.minus{color:var(--bad)}.cred-form{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.cred-form input{border:1px solid var(--line);min-width:160px;font:inherit;border-radius:8px;flex:1;padding:8px 12px}.creds{margin:8px 0 0;padding:0;font-size:.9rem;list-style:none}.creds li{border-top:1px solid var(--line);padding:8px 0}.cred-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.cred-row select{border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:.85rem}.tokens{margin:12px 0 0;padding:0;font-size:.9rem;list-style:none}.tokens li{padding:4px 0}.token-new{background:#fffaf0;border:1px solid #f0ddae;border-radius:8px;margin-bottom:12px;padding:12px}.token-new code{word-break:break-all}.token-new pre{color:#e8edf3;background:#1c2430;border-radius:6px;padding:10px 12px;font-size:.8rem;overflow-x:auto}
