@import "https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Fira+Sans:wght@300;400;500;600;700&display=swap";:root{--background:#f8fafc;--foreground:#1e293b;--card:#fff;--muted:#64748b;--muted-soft:#f1f5f9;--border:#e2e8f0;--primary:#2563eb;--primary-hover:#1d4ed8;--danger:#dc2626;--success:#059669;--warning:#b45309;--radius:10px;color:var(--foreground);background:var(--background);font-family:Fira Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,sans-serif}*{box-sizing:border-box}body{background:var(--background);min-height:100vh;margin:0}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}code,.mono,input,textarea,pre{font-family:Fira Code,Cascadia Code,ui-monospace,SFMono-Regular,Consolas,monospace}.app-shell{width:min(1280px,100vw - 32px);margin:0 auto;padding:16px 0}.page-header{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:14px;display:flex}.eyebrow{color:#2563eb;letter-spacing:.14em;text-transform:uppercase;font-size:12px;font-weight:800}h1,h2,p{margin:0}h1{color:#0f172a;margin-top:2px;font-size:26px;font-weight:800;line-height:1.15}h2{color:#0f172a;font-size:16px;font-weight:700;line-height:1.25}p{color:var(--muted);line-height:1.55}.page-header p{max-width:780px;margin-top:8px;font-size:14px}.page-header code{background:var(--muted-soft);color:#334155;border-radius:5px;padding:1px 5px;font-size:12px}.quick-links{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.quick-links a{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;align-items:center;min-height:30px;padding:0 10px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.quick-links a:hover{background:#dbeafe;border-color:#93c5fd}.header-tags{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.header-tags span{border:1px solid var(--border);color:#475569;background:#fff;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:600}.main-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;gap:16px;display:grid}.stack{flex-direction:column;gap:16px;display:flex}.card{border:1px solid var(--border);background:var(--card);border-radius:14px;overflow:visible;box-shadow:0 1px 2px #0f172a0a}.card-header{padding:14px 16px 0}.card-header p{margin-top:4px;font-size:13px}.card-content{padding:12px 16px}.card-footer{border-top:1px solid var(--border);gap:8px;padding:10px 16px;display:flex}.tutorial-box{color:#1e3a8a;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;margin-bottom:10px;padding:9px 12px}.tutorial-title{margin-bottom:4px;font-size:13px;font-weight:800}.tutorial-box ol{margin:0;padding-left:18px}.tutorial-box li{margin:2px 0;font-size:12px;line-height:1.45}.region-box{border:1px solid var(--border);border-radius:var(--radius);background:#f1f5f98c;margin-bottom:10px;padding:8px 10px}.region-line{flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;display:flex}.region-pill{border-radius:6px;padding:3px 8px;font-size:12px;font-weight:600}.region-pill.ok{color:#059669;background:#ecfdf5}.region-pill.bad{color:#dc2626;background:#fef2f2}.region-warning{color:var(--danger);margin-top:8px;font-size:12px}.muted{color:#94a3b8}.muted-strong{color:#475569}.link-btn{color:#64748b;background:0 0;border:0;padding:0;font-size:12px}.link-btn:hover:not(:disabled){color:#0f172a}.field{margin-top:10px}.field:first-child{margin-top:0}.field-title{justify-content:space-between;align-items:center;gap:8px;display:flex}label{color:#334155;margin-bottom:8px;font-size:14px;font-weight:600;display:block}.help{color:var(--muted);margin-top:6px;font-size:12px}input,textarea{border:1px solid var(--border);color:#0f172a;background:#fff;border-radius:8px;outline:none;width:100%;transition:border-color .15s,box-shadow .15s}input{height:40px;padding:0 12px;font-size:12px}textarea{resize:none;white-space:pre;height:132px;padding:8px 10px;font-size:12px;line-height:1.45;overflow:auto}input:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1f}.session-help{margin-bottom:8px}.session-help a{color:var(--primary);font-family:Fira Code,monospace;text-decoration:none}.session-help a:hover{text-decoration:underline}.session-textarea{field-sizing:fixed;resize:none;background:#fff;height:132px;font-size:12px;line-height:1.45;overflow-y:auto}.outline-badge{border:1px solid var(--border);color:#475569;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600}.uuid-selector{position:relative}.selector-trigger{border:1px solid var(--border);color:#475569;text-align:left;background:#f8fafc;border-radius:8px;align-items:center;gap:6px;width:100%;min-height:36px;padding:0 12px;font-size:14px;display:flex}.selector-trigger>span:first-child{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.selector-trigger:hover{background:#f1f5f9}.placeholder{color:#94a3b8}.chevron{color:#94a3b8;transition:transform .15s}.chevron.open{transform:rotate(180deg)}.selected-tags{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.selected-tag{max-width:100%;color:var(--primary);background:#2563eb1a;border-radius:6px;align-items:center;gap:4px;padding:3px 6px;font-family:Fira Code,monospace;font-size:10px;display:inline-flex}.selected-tag button{color:var(--primary);background:0 0;border:0;padding:0 2px;font-size:13px;line-height:1}.selector-panel{z-index:50;border:1px solid var(--border);background:#fff;border-radius:8px;width:max(100%,360px);max-height:300px;position:absolute;top:calc(100% + 4px);left:0;overflow:auto;box-shadow:0 16px 40px #0f172a24}.selector-add{z-index:1;border-bottom:1px solid var(--border);background:#f8fafc;gap:6px;padding:8px;display:flex;position:sticky;top:0}.selector-add input{flex:1;min-width:0;height:30px;font-size:11px}.selector-add button{border:1px solid var(--primary);background:var(--primary);color:#fff;border-radius:7px;padding:0 10px;font-size:12px;font-weight:600}.selector-list{padding:4px}.select-all{color:#94a3b8;text-align:left;background:0 0;border:0;border-bottom:1px solid #f1f5f9;border-radius:5px;width:100%;padding:7px 8px;font-size:11px}.select-all:hover{color:#475569;background:#f1f5f9}.selector-empty{color:#94a3b8;text-align:center;padding:18px 8px;font-size:12px}.selector-item{border-radius:5px;align-items:center;gap:8px;padding:7px 8px;font-size:12px;display:flex}.selector-item:hover{background:#f1f5f9}.selector-item label{cursor:pointer;flex:1;align-items:center;gap:8px;min-width:0;margin:0;display:flex}.selector-item input{width:auto;height:auto}.selector-item span{text-overflow:ellipsis;white-space:nowrap;color:#475569;min-width:0;font-family:Fira Code,monospace;font-size:11px;overflow:hidden}.selector-item button{color:#94a3b8;opacity:0;background:0 0;border:0;font-size:11px}.selector-item:hover button{opacity:1}.selector-item button:hover{color:var(--danger)}.parse-box{border:1px solid var(--border);border-radius:var(--radius);margin-top:8px;padding:8px 10px;font-size:12px}.parse-box.ok{background:#f8fafc}.parse-box.warn{color:var(--warning);background:#fffbeb;border-color:#fde68a}.parse-line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.parse-box p{margin-top:4px;font-size:12px}.badge{border:1px solid var(--border);border-radius:6px;align-items:center;padding:2px 8px;font-size:12px;font-weight:800;line-height:1.35;display:inline-flex}.badge-teacher{color:#78350f;background:#fef3c7;border-color:#f59e0b;box-shadow:0 0 0 2px #fde68a}.badge-free{color:#475569;background:#f1f5f9;border-color:#cbd5e1}.badge-plus{color:#7e22ce;background:#faf5ff;border-color:#d8b4fe}.badge-team{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.badge-muted{color:#64748b;background:#f8fafc;border-color:#cbd5e1}.tabs{border:1px solid var(--border);border-radius:var(--radius);background:var(--muted-soft);grid-template-columns:repeat(3,1fr);gap:4px;margin-top:16px;padding:4px;display:grid}.tabs button{color:#64748b;background:0 0;border:0;border-radius:8px;min-height:32px;font-size:14px;font-weight:600}.tabs button.active{color:#0f172a;background:#fff;box-shadow:0 1px 2px #0f172a14}.tabs button:hover:not(:disabled){color:#0f172a}.primary-btn,.secondary-btn,.download-row button{border-radius:8px;min-height:36px;padding:0 14px;font-size:14px;font-weight:600;transition:background-color .15s,border-color .15s,color .15s}.primary-btn{border:1px solid var(--primary);background:var(--primary);color:#fff;flex:1}.primary-btn:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.secondary-btn{border:1px solid var(--border);color:#334155;background:#fff}.secondary-btn:hover:not(:disabled){background:#f8fafc}.result-card{flex-direction:column;min-height:100%;display:flex}.result-content{flex:1;min-height:0}.identity-card{color:#78350f;background:#fef3c7;border:1px solid #f59e0b;border-radius:12px;margin-bottom:12px;padding:12px 14px;box-shadow:0 0 0 2px #fde68a}.identity-card>div:first-child{opacity:.8;font-size:12px;font-weight:600}.identity-line{flex-wrap:wrap;align-items:flex-end;gap:8px;margin-top:4px;display:flex}.identity-line b{letter-spacing:.02em;font-size:24px;font-weight:900;line-height:1}.identity-line span{font-family:Fira Code,monospace;font-size:13px}.download-row{background:#ecfdf5;border:1px solid #bbf7d0;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding:8px 10px;display:flex}.download-row span{text-overflow:ellipsis;white-space:nowrap;color:#166534;min-width:0;font-family:Fira Code,monospace;font-size:12px;overflow:hidden}.download-row button{border:1px solid var(--primary);background:var(--primary);color:#fff;min-height:32px}pre{border:1px solid var(--border);color:#334155;white-space:pre-wrap;word-break:break-all;background:#f8fafc;border-radius:8px;max-height:430px;margin:0;padding:12px;font-size:12px;line-height:1.55;overflow:auto}pre.ok{color:#166534;background:#ecfdf5;border-color:#bbf7d0}pre.err{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.empty-state{color:var(--muted);font-size:14px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}*{scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}@media (width<=900px){.page-header{flex-direction:column;align-items:flex-start}.header-tags{justify-content:flex-start}.main-grid{grid-template-columns:1fr}}@media (width<=520px){.app-shell{width:min(100vw - 20px,1280px);padding:16px 0}h1{font-size:26px}.card-header,.card-content,.card-footer{padding-left:14px;padding-right:14px}.card-footer{flex-direction:column}}
