:root{color:#1c1c18;font-synthesis:none;--paper:#f3f1e9;--surface:#faf9f5;--white:#fff;--ink:#1c1c18;--ink-subtle:#68675f;--ink-faint:#99978e;--line:#d8d5cb;--line-strong:#aaa79d;--acid:#d9ff43;--positive:#287a50;--warning:#9a6416;--danger:#b53b2c;--info:#325f9b;background:#f3f1e9;font-family:Noto Sans JP,sans-serif}*{box-sizing:border-box}html{background:var(--paper)}body{background:var(--paper);min-width:320px;margin:0;font-size:14px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #d9ff4399}.app-shell{grid-template-columns:220px minmax(0,1fr);min-height:100vh;display:grid}.app-sidebar{border-right:1px solid var(--line);background:#eeece4;flex-direction:column;height:100vh;padding:24px 16px 18px;display:flex;position:sticky;top:0}.admin-shell .app-sidebar{background:#e4e8e1;border-right-color:#c9cec4}.admin-shell .topbar{background:#f6f8f4f0;border-bottom-color:#c9cec4}.admin-shell .app-nav a.active{box-shadow:inset 3px 0 0 var(--ink);background:#f9fbf7}.app-brand{letter-spacing:-.04em;align-items:center;gap:10px;width:fit-content;font-size:11px;font-weight:700;line-height:1.05;display:inline-flex}.brand-mark{background:var(--ink);width:32px;height:32px;color:var(--acid);place-items:center;font:600 20px/1 Bodoni Moda,serif;display:grid}.admin-shell .brand-mark{color:var(--ink);background:var(--acid)}.admin-brand-label{letter-spacing:0;border:1px solid #9da599;border-radius:999px;margin-left:2px;padding:3px 6px;font-size:9px}.app-nav{gap:3px;margin-top:34px;display:grid}.app-nav a,.sidebar-bottom>a{min-height:40px;color:var(--ink-subtle);border-radius:8px;align-items:center;gap:11px;padding:8px 11px;font-size:12px;font-weight:500;display:flex}.app-nav a>span,.sidebar-bottom>a>span{width:17px;color:var(--ink-faint);text-align:center}.app-nav a:hover,.sidebar-bottom>a:hover,.app-nav a.active{color:var(--ink);background:var(--white)}.app-nav a.active{font-weight:700;box-shadow:0 1px 2px #1c1c180d}.app-nav a.active>span{color:var(--ink)}.sidebar-bottom{margin-top:auto}.workspace-switch{margin-bottom:4px}.admin-shell .workspace-switch{color:#38493d}.user-summary{border-top:1px solid var(--line);align-items:center;gap:9px;min-width:0;margin-top:12px;padding:15px 8px 0;display:flex}.user-summary>span:last-child{min-width:0}.user-summary strong,.user-summary small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.user-summary strong{font-size:11px}.user-summary small{color:var(--ink-faint);font-size:9px}.avatar{background:#efffb0;border-radius:50%;flex:none;place-items:center;width:30px;height:30px;font:600 13px/1 Bodoni Moda,serif;display:grid}.app-body{min-width:0}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#faf9f5f0;justify-content:space-between;align-items:center;height:64px;padding:0 clamp(20px,3.5vw,48px);display:flex}.topbar>strong{font-size:12px}.topbar-actions{align-items:center;gap:8px;display:flex}.app-content{width:min(100%,1120px);padding:46px clamp(20px,3.5vw,48px) 80px}.page-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:36px;display:flex}.page-label{color:var(--ink-faint);letter-spacing:.14em;margin:0 0 8px;font-size:9px;font-weight:700}.page-heading h1{letter-spacing:-.035em;margin:0;font:500 clamp(28px,4vw,38px)/1.2 Bodoni Moda,Noto Sans JP,serif}.button{min-height:40px;color:var(--ink);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:10px;padding:9px 15px;font-size:12px;font-weight:700;transition:transform .15s,background .15s;display:inline-flex}.button:hover:not(:disabled){transform:translateY(-1px)}.button-primary{color:var(--paper);background:var(--ink)}.button-primary:hover:not(:disabled){background:#36362f}.button-accent{border-color:var(--ink);background:var(--acid)}.button-secondary{border-color:var(--line-strong);background:var(--white)}.button-quiet:hover:not(:disabled){background:#e8e6de}.button:disabled{opacity:.42;cursor:not-allowed}.button-danger{color:var(--danger);background:#fff7f5;border-color:#dfb0aa}.icon-button,.row-action{width:40px;height:40px;color:var(--ink-subtle);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:0;font-size:18px}.icon-button:hover,.row-action:hover{color:var(--ink);background:#e8e6de}.notice{color:#244b7d;background:#e4edf8;border:1px solid #b7cbe3;border-radius:10px;justify-content:space-between;align-items:center;gap:20px;margin:-4px 0 36px;padding:16px 18px;display:flex}.notice strong,.notice p{margin:0;display:block}.notice strong{font-size:12px}.notice p,.notice a{font-size:11px}.notice a{white-space:nowrap;font-weight:700}.section-heading{margin-bottom:16px}.section-heading.horizontal{justify-content:space-between;align-items:flex-end;gap:20px;display:flex}.section-heading h2,.section-heading p{margin:0}.section-heading h2{letter-spacing:-.02em;font-size:18px}.section-heading p{color:var(--ink-subtle);margin-top:3px;font-size:11px}.tool-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.tool-card{border:1px solid var(--line);background:var(--surface);border-radius:12px;grid-template-rows:1fr auto;grid-template-columns:auto 1fr auto;gap:10px 13px;min-height:126px;padding:18px;transition:border-color .15s,transform .15s;display:grid}.tool-card:hover{border-color:var(--line-strong);transform:translateY(-2px)}.tool-icon{border:1px solid var(--ink);background:var(--acid);place-items:center;width:32px;height:32px;font:600 15px/1 Bodoni Moda,serif;display:grid}.tool-content{flex-direction:column;gap:3px;display:flex}.tool-content strong{font-size:13px}.tool-content small{color:var(--ink-subtle);font-size:10px}.count{color:var(--ink-faint);grid-column:2;font-size:10px}.arrow{color:var(--ink-subtle);grid-area:2/3}.recent-section{margin-top:54px}.data-table{border:1px solid var(--line);background:var(--surface);border-radius:12px;overflow:hidden}.table-row{border-top:1px solid var(--line);grid-template-columns:minmax(180px,1.6fr) minmax(120px,.7fr) minmax(100px,.7fr) 40px;align-items:center;gap:16px;min-height:56px;padding:8px 14px;font-size:11px;display:grid}.table-row:first-child{border-top:0}.table-row:not(.table-head):hover{background:var(--white)}.table-head{min-height:40px;color:var(--ink-subtle);background:#eeece4;font-size:10px;font-weight:700}.status{min-height:24px;color:var(--ink-subtle);background:#e8e6de;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:10px;font-weight:700;display:inline-flex}.status:before{content:"";background:var(--ink-faint);border-radius:50%;width:6px;height:6px}.status-review{color:var(--warning);background:#f8eed8}.status-review:before{background:var(--warning)}.status-editing{color:var(--info);background:#e4edf8}.status-editing:before{background:var(--info)}.auth-page{background:var(--paper);grid-template-rows:auto 1fr auto;justify-items:center;min-height:100vh;padding:28px;display:grid}.auth-brand{justify-self:start}.auth-card{border:1px solid var(--line);background:var(--surface);border-radius:14px;align-self:center;width:min(100%,420px);margin:48px 0;padding:32px}.auth-card header{margin-bottom:28px}.auth-card h1,.auth-card header p{margin:0}.auth-card h1{letter-spacing:-.025em;font-size:24px}.auth-card header p{color:var(--ink-subtle);margin-top:5px;font-size:12px}.auth-card form{display:grid}.auth-card label{margin:15px 0 7px;font-size:11px;font-weight:700}.auth-card label:first-child{margin-top:0}.auth-card input{border:1px solid var(--line-strong);width:100%;min-height:44px;color:var(--ink);background:var(--white);border-radius:8px;outline:0;padding:9px 12px}.auth-card input:hover{border-color:var(--ink-subtle)}.auth-card input:focus{border-color:var(--ink);box-shadow:0 0 0 3px #d9ff4373}.field-hint,.form-error{margin:6px 0 0;font-size:10px}.field-hint{color:var(--ink-faint)}.form-error{color:var(--danger)}.button-full{width:100%;margin-top:24px}.auth-switch{color:var(--ink-subtle);text-align:center;margin:22px 0 0;font-size:11px}.auth-switch a{color:var(--ink);text-underline-offset:3px;font-weight:700;text-decoration:underline}.admin-content{width:min(100%,1180px)}.admin-panel{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:24px}.admin-form{grid-template-columns:1fr 1.4fr 1fr 150px auto;align-items:end;gap:12px;display:grid}.admin-form label{gap:6px;font-size:11px;font-weight:700;display:grid}.admin-form input,.admin-form select{border:1px solid var(--line-strong);width:100%;min-height:40px;color:var(--ink);background:var(--white);border-radius:8px;padding:8px 10px}.admin-list{margin-top:36px}.admin-user-row{border-top:1px solid var(--line);grid-template-columns:minmax(220px,1.5fr) 120px 140px 100px;align-items:center;gap:16px;min-height:64px;padding:10px 14px;font-size:11px;display:grid}.admin-user-row:first-child{border-top:0}.admin-user-row>span:first-child strong,.admin-user-row>span:first-child small{display:block}.admin-user-row>span:first-child small{color:var(--ink-faint)}.role-badge{width:fit-content;color:var(--ink-subtle);background:#e8e6de;border-radius:999px;padding:3px 9px;font-size:10px;font-weight:700}.role-badge.admin-role{color:#526500;background:#efffb0}.self-label{color:var(--ink-faint);font-size:10px}.admin-message{border-radius:8px;margin:0 0 20px;padding:12px 14px}.admin-message.error{color:var(--danger);background:#fff7f5;border:1px solid #dfb0aa}.back-link{color:var(--ink-subtle);justify-self:center;font-size:11px}@media (width<=800px){.app-shell{grid-template-columns:1fr}.app-sidebar{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;justify-content:space-between;align-items:center;height:auto;padding:14px 20px;position:static}.app-nav{display:none}.sidebar-bottom{margin:0}.sidebar-bottom>a,.user-summary,.topbar{display:none}.app-content{padding-top:34px}.tool-grid{grid-template-columns:1fr}.admin-form{grid-template-columns:1fr 1fr}.tool-card{min-height:110px}}@media (width<=560px){.page-heading{flex-direction:column;align-items:flex-start;margin-bottom:28px}.page-heading .button{width:100%}.notice{flex-direction:column;align-items:flex-start}.table-head{display:none}.table-row{grid-template-columns:1fr auto;gap:8px 12px;padding:14px}.table-row>span:nth-child(3){color:var(--ink-faint);grid-column:1}.table-row .row-action{grid-area:1/2/3}.auth-page{padding:20px}.auth-card{margin:36px 0;padding:24px}.admin-form{grid-template-columns:1fr}.admin-user-row,.admin-user-row.table-head{grid-template-columns:1fr auto}.admin-user-row.table-head{display:none}}@media (prefers-reduced-motion:reduce){.button,.tool-card{transition:none}}.tool-grid:has(.tool-card:only-child){grid-template-columns:minmax(280px,360px)}.atari-content{width:min(100%,1180px)}.compact-heading{margin-bottom:28px}.page-description,.detail-heading p{color:var(--ink-subtle);margin:8px 0 0}.work-panel{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:24px}.upload-layout{grid-template-columns:minmax(260px,1.1fr) minmax(260px,.9fr);gap:28px;display:grid}.upload-zone{border:1px dashed var(--line-strong);background:var(--white);min-height:300px;color:var(--ink-subtle);text-align:center;cursor:pointer;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:20px;display:flex}.upload-zone:hover{border-color:var(--ink)}.upload-zone input{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.upload-zone:focus-within{outline-offset:2px;outline:3px solid #d9ff4399}.upload-zone img{object-fit:contain;max-width:100%;max-height:270px}.upload-title{color:var(--ink);font-size:14px;font-weight:700}.form-fields{flex-direction:column;gap:18px;display:flex}.field{gap:7px;display:grid}.field>span{font-size:12px;font-weight:700}.field small{color:var(--danger);margin-left:4px;font-size:10px}.field input,.field select{border:1px solid var(--line-strong);width:100%;min-height:44px;color:var(--ink);background:var(--white);border-radius:8px;padding:9px 12px}.field-help{color:var(--ink-subtle);margin:-6px 0 0;font-size:11px}.generate-button{align-self:flex-start;margin-top:auto}.form-error,.result-message{border-radius:8px;margin:0 0 18px;padding:12px 14px;font-size:12px}.form-error,.error-message{color:#79291f;background:#f7e5e1}.info-message{color:#244b7d;background:#e4edf8}.history-section,.source-section,.result-section{margin-top:42px}.history-table .table-row{grid-template-columns:minmax(140px,1.3fr) 110px 80px minmax(150px,1fr) 36px}.status-processing,.status-partial_failed{color:#795012;background:#f4e9d5}.status-succeeded{color:#1f6742;background:#dfeee6}.status-failed{color:#873025;background:#f5dfdb}.pagination{color:var(--ink-subtle);justify-content:flex-end;align-items:center;gap:12px;margin-top:18px;font-size:11px;display:flex}.empty-state{border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--ink-subtle);text-align:center;margin:0;padding:28px}.back-link{color:var(--ink-subtle);margin-bottom:24px;font-size:12px;font-weight:700;display:inline-block}.back-link:hover{color:var(--ink)}.detail-heading{justify-content:space-between;align-items:flex-end;gap:20px;display:flex}.detail-heading h1{margin:0;font:500 34px/1.2 Bodoni Moda,Noto Sans JP,serif}.source-preview{border:1px solid var(--line);background:var(--surface);width:min(100%,360px);color:var(--ink-subtle);text-align:center;border-radius:10px;gap:9px;padding:12px;font-size:11px;font-weight:700;display:grid}.source-preview img{background:var(--white);object-fit:contain;width:100%;height:280px}.candidate-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.candidate-card{border:1px solid var(--line);background:var(--surface);border-radius:10px;flex-direction:column;gap:10px;padding:12px;display:flex}.candidate-card.failed{background:#f8f1ee}.candidate-card img{aspect-ratio:1;background:var(--white);object-fit:contain;width:100%}.candidate-head{font-size:12px}.candidate-failure{min-height:220px;color:var(--danger);text-align:center;place-content:center;display:grid}.candidate-failure p{color:var(--ink-subtle);margin:4px 0 0;font-size:11px}.rerun-section{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;margin-top:44px;padding-top:24px;display:flex}.rerun-section h2,.rerun-section p{margin:0}.rerun-section h2{font-size:16px}.rerun-section p{color:var(--ink-subtle);margin-top:3px;font-size:11px}@media (width<=900px){.upload-layout{grid-template-columns:1fr}.candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){.upload-zone{min-height:230px}.candidate-grid{grid-template-columns:1fr}.detail-heading,.rerun-section{flex-direction:column;align-items:flex-start}.history-table .table-head{display:none}.history-table .table-row{grid-template-columns:1fr auto;gap:5px 12px}.history-table .table-row>span:nth-child(3),.history-table .table-row>span:nth-child(4){color:var(--ink-subtle);font-size:10px}.history-table .table-row>.arrow{grid-area:1/2/span 2}}
