:root{--ink: #2b2320;--paper: #faf6ee;--card: #ffffff;--muted: #7a6f66;--line: #e4dcd0;--leaf: #2f6b3f;--sun: #e0a428;--sky: #3a6ea5;--danger: #b3402e;--topbar-h: 48px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer}input{font:inherit}.screen{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:24px}.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:22px;letter-spacing:.02em}.brand-dot{width:14px;height:14px;border-radius:50%;background:var(--leaf);flex-shrink:0}.muted{color:var(--muted);font-size:14px;margin:0}.chooser-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;width:min(720px,100%)}@media(max-width:640px){.chooser-cards{grid-template-columns:1fr}}.role-card{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:22px 20px;background:var(--card);border:2.5px solid var(--ink);border-radius:16px;box-shadow:4px 4px 0 var(--ink);text-align:left;transition:transform .12s ease,box-shadow .12s ease}.role-card:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink)}.role-card:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.role-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;border:2.5px solid var(--ink);color:var(--ink)}.role-title{font-weight:800;font-size:17px}.role-desc{color:var(--muted);font-size:13px;line-height:1.4}.login-card{width:min(380px,100%);background:var(--card);border:2.5px solid var(--ink);border-radius:16px;box-shadow:4px 4px 0 var(--ink);padding:24px;display:flex;flex-direction:column;gap:14px}.login-title{font-weight:800;font-size:20px;margin:0}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:13px;font-weight:600;color:var(--muted)}.field input{padding:10px 12px;border:2px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink)}.field input:focus-visible{outline:2.5px solid var(--leaf);outline-offset:1px}.btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border-radius:10px;border:2.5px solid var(--ink);background:var(--card);color:var(--ink);font-weight:700}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--leaf);color:#fff}.btn-ghost{border-color:transparent;background:transparent;color:var(--muted);font-weight:600}.login-error{color:var(--danger);font-size:13px;margin:0}.login-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px}.login-divider:before,.login-divider:after{content:"";flex:1;height:2px;background:var(--line)}.shell{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.topbar{height:var(--topbar-h);flex-shrink:0;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--card);border-bottom:2.5px solid var(--ink)}.topbar .brand{font-size:15px}.topbar-spacer{flex:1}.tab-btn{padding:5px 12px;border-radius:999px;border:2px solid var(--ink);background:var(--card);font-weight:700;font-size:13px;display:flex;align-items:center;gap:6px}.tab-btn[data-active=true]{background:var(--sun)}.role-select{padding:5px 8px;border-radius:8px;border:2px solid var(--line);background:var(--card);font-weight:600;font-size:13px;color:var(--ink)}.icon-btn{display:flex;align-items:center;gap:6px;padding:5px 10px;border-radius:8px;border:2px solid var(--line);background:var(--card);color:var(--muted);font-weight:600;font-size:13px}.icon-btn:hover{border-color:var(--ink);color:var(--ink)}.frames{flex:1;position:relative;min-height:0}.frames iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:var(--paper)}.frame-error{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:5;display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--danger);color:#fff;border:2.5px solid var(--ink);border-radius:10px;font-size:13px;font-weight:600}.frame-error button{border:2px solid #fff;background:transparent;color:#fff;border-radius:6px;padding:3px 8px;font-size:12px;font-weight:700}
