*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%}body{color:#1f2937;background:linear-gradient(135deg,#f3f4f6,#e2e8f0);margin:0;font-family:Arial,sans-serif}button,input,a{font:inherit}.app-shell{justify-content:center;align-items:flex-start;min-height:100vh;padding:24px;display:flex}.page-container{width:min(100%,1240px)}.app-header{color:#f8fafc;background:#0f172af5;border-radius:16px;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;padding:16px 20px;display:flex;box-shadow:0 16px 30px #0f172a29}.brand-block{color:#f8fafc;align-items:center;gap:12px;min-width:170px;text-decoration:none;display:flex}.brand-block:hover{opacity:.9}.brand-mark{object-fit:contain;width:38px;height:38px}.brand-text{letter-spacing:.02em;font-size:1.05rem;font-weight:700}.top-nav{flex-wrap:wrap;flex:1;justify-content:flex-start;align-items:center;gap:10px;display:flex}.nav-link{color:#dbeafe;border-radius:8px;justify-content:center;align-items:center;padding:10px 14px;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.nav-link:hover{background:#94a3b82e}.nav-link.active{color:#fff;background:#2563eb}.nav-menu{position:relative}.nav-menu-button{cursor:pointer;background:0 0;border:none;gap:6px}.nav-menu-list{z-index:10;background:#0f172afa;border-radius:10px;min-width:160px;margin:0;padding:6px;list-style:none;display:grid;position:absolute;top:calc(100% + 6px);box-shadow:0 12px 24px #0f172a3d}.nav-menu-list--start{left:0}.nav-menu-list--end{right:0}.nav-menu-item{text-align:left;cursor:pointer;color:#dbeafe;white-space:nowrap;background:0 0;border:none;border-radius:6px;width:100%;padding:9px 12px;font-weight:600;text-decoration:none;display:block}.nav-menu-item:hover{background:#94a3b82e}.nav-menu-item.active{color:#fff;background:#2563eb}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;min-width:260px;display:flex}.page-content{width:100%}.card{background:#fff;border-radius:16px;width:100%;padding:24px;box-shadow:0 10px 30px #0f172a1f}.page-panel h1{margin-top:0;margin-bottom:12px}.page-panel p,.page-panel li{line-height:1.6}.auth-panel{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:24px;padding:16px 18px}.auth-panel--signed-in{gap:8px;display:grid}.auth-panel--signed-in h3{margin:0 0 8px;font-size:1.2rem}.auth-panel--signed-out{flex-wrap:wrap;gap:12px;display:flex}.login-link,.logout-link{border-radius:8px;padding:10px 14px;font-weight:600;text-decoration:none;transition:opacity .2s;display:inline-block}.login-link{color:#fff;background:#2563eb}.logout-link{color:#111827;background:#e5e7eb;margin-top:12px}.login-link:hover,.logout-link:hover{opacity:.9}.message-form{gap:12px;display:grid}.message-form label{font-weight:600}.message-form__controls{gap:12px;display:flex}.message-form input{background:#fff;border:1px solid #cbd5e1;border-radius:8px;flex:1;padding:10px 12px}.message-form button{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:8px;padding:10px 16px;font-weight:600}.small-button{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;min-width:90px;padding:8px 14px;font-weight:600}.message-output{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;min-height:24px;padding:12px}.resource-panel{gap:10px;margin-top:24px;display:grid}.resource-panel h3{margin:0}.resource-panel label{align-items:center;gap:8px;font-weight:600;display:flex}.resource-panel input{background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px}.resource-panel__actions{gap:10px;display:flex}.button-row{flex-wrap:wrap;gap:10px;display:flex}.small-button:disabled{color:#64748b;cursor:not-allowed;background:#cbd5e1}.swa-auth-user{margin:16px 0;font-weight:600}.swa-auth-me{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;margin:0;padding:12px;font-size:.85rem;overflow-x:auto}.page-section{margin-top:32px}.page-section h2{margin:0 0 12px}.status-text{color:#475569;align-self:center;font-size:.9rem}.resource-panel__fields{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.resource-panel__id{width:8rem}.resource-panel__content{width:18rem;max-width:100%}.small-button--secondary{color:#111827;background:#e5e7eb}.small-button--danger{background:#dc2626}.text-input{background:#fff;border:1px solid #cbd5e1;border-radius:8px;flex:12rem;min-width:0;padding:10px 12px}.text-input:focus{border-color:#2563eb;outline:2px solid #bfdbfe}.todo-add{gap:10px;margin-top:20px;display:flex}.todo-heading{align-items:center;gap:8px;display:flex}.todo-heading:focus:not(:focus-visible){outline:none}.todo-count{color:#1e40af;text-align:center;background:#dbeafe;border-radius:999px;min-width:1.75rem;padding:2px 8px;font-size:.8rem}.todo-empty{color:#64748b;text-align:center;border:1px dashed #cbd5e1;border-radius:12px;margin:0;padding:24px}.todo-list{border:1px solid #e2e8f0;border-radius:12px;margin:0;padding:0;list-style:none;overflow:hidden}.todo-item{background:#fff;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 14px;display:flex}.todo-item+.todo-item{border-top:1px solid #e2e8f0}.todo-item:hover{background:#f8fafc}.todo-item--busy{opacity:.6}.todo-item__text{overflow-wrap:anywhere;flex:12rem;min-width:0}.todo-item__edit{flex-wrap:wrap;flex:1;align-items:center;gap:10px;display:flex}.todo-item__actions{gap:8px;margin-left:auto;display:flex}.todo-item .small-button{min-width:72px;padding:6px 12px;font-size:.9rem}.sign-in-button{align-items:center;gap:6px;display:inline-flex}.sign-in-panel{z-index:10;color:#1f2937;background:#fff;border-radius:12px;width:min(320px,100vw - 32px);padding:4px 20px;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 16px 32px #0f172a3d}.sign-in-panel__close{color:#475569;cursor:pointer;background:0 0;border:none;border-radius:8px;width:32px;height:32px;font-size:1.5rem;line-height:1;position:absolute;top:10px;right:10px}.sign-in-panel__close:hover{background:#f1f5f9}.sign-in-panel__section{padding:16px 0}.sign-in-panel__section+.sign-in-panel__section{border-top:1px solid #e2e8f0}.sign-in-panel__section h2{margin:0 40px 8px 0;font-size:1rem}.sign-in-panel__section p{margin:0 0 12px;line-height:1.5}.link-button{color:#2563eb;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline}.link-button:hover{color:#1d4ed8}.sandbox-result{margin-top:24px}.sign-in-gate{text-align:center;padding:24px}.sign-in-error{margin-bottom:20px}.new-account-form{gap:16px;margin-top:20px;display:grid}.new-account-form__fields{flex-wrap:wrap;gap:16px;display:flex}.new-account-form__fields label{flex:14rem;gap:6px;font-weight:600;display:grid}.new-account-form .message-output{margin:0}.claims-table-wrap{border:1px solid #e2e8f0;border-radius:12px;overflow-x:auto}.claims-table{table-layout:fixed;border-collapse:collapse;width:100%;min-width:720px;font-size:.9rem}.claims-table__claim{width:13rem}.claims-table__value{width:40%}.claims-table th,.claims-table td{text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:10px 12px;line-height:1.5}.claims-table thead th{color:#475569;background:#f8fafc;border-bottom:1px solid #e2e8f0}.claims-table tbody tr+tr{border-top:1px solid #e2e8f0}.claims-table tbody tr:nth-child(2n){background:#f8fafc}.claims-table tbody th,.claims-table tbody td:nth-child(2){font-family:Consolas,monospace}.claims-table tbody td:nth-child(3){color:#475569}.error-display{color:#7f1d1d;background:#fef2f2;border:1px solid #fecaca;border-radius:12px;margin-top:16px;padding:16px 18px}.error-display__header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.error-display__header h3{margin:0 0 8px;font-size:1.05rem}.error-display__close{color:inherit;cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:1.25rem;line-height:1}.error-display__message{overflow-wrap:anywhere;margin:0 0 12px}.error-display__details{grid-template-columns:max-content 1fr;gap:4px 16px;margin:0 0 12px;font-size:.9rem;display:grid}.error-display__details dt{font-weight:600}.error-display__details dd{overflow-wrap:anywhere;margin:0}.error-display__label{margin:0 0 4px;font-size:.9rem;font-weight:600}.error-display__pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#7f1d1d0f;border-radius:8px;max-height:300px;margin:0 0 12px;padding:8px 10px;font-size:.8rem;overflow:auto}.error-display__stack summary{cursor:pointer;font-size:.9rem}.error-display__stack .error-display__pre{margin-top:8px}.error-display__actions{gap:10px;margin-top:12px;display:flex}@media (width<=560px){.error-display__details{grid-template-columns:1fr}.error-display__details dd{margin-bottom:6px}}
