:root{--bg: #e8eef5;--panel: rgba(255, 255, 255, .93);--line: rgba(20, 40, 70, .12);--text: #1d2733;--muted: #5b6b7d;--accent: #2f6fdb;--accent-hover: #255fc2;--danger: #c93c3c;--radius: 14px;--shadow: 0 6px 24px rgba(20, 40, 70, .14);font-family:Hiragino Sans,Noto Sans JP,Yu Gothic UI,Meiryo,system-ui,sans-serif;color:var(--text)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg)}#scene{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none;outline:none}button,select,input{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 12px;line-height:1.3}button:hover{background:#f2f5fa}button.primary{background:var(--accent);color:#fff;border-color:transparent;font-weight:700}button.primary:hover{background:var(--accent-hover)}button.danger{color:var(--danger)}select.full{width:100%;padding:8px;border-radius:10px;border:1px solid var(--line);background:#fff}kbd{font:600 11px/1 ui-monospace,Consolas,monospace;padding:3px 5px;margin-left:8px;border-radius:4px;background:#00000024}button.primary kbd{background:#ffffff40}.topbar{position:fixed;top:12px;left:12px;right:12px;z-index:10;display:flex;gap:12px;align-items:center;padding:8px 10px;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.brand{font-weight:800;font-size:18px;padding:0 6px;white-space:nowrap}.brand span{color:var(--accent);margin-left:2px}.space-picker{position:relative;display:flex;gap:6px;flex:1;min-width:0}.space-picker select{flex:0 1 280px;min-width:0;padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:#fff}.icon-btn{padding:8px 12px;font-weight:700}.menu{position:absolute;top:calc(100% + 6px);left:0;z-index:20;display:flex;flex-direction:column;min-width:200px;padding:6px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.menu button{border:0;text-align:left;border-radius:8px}.mode-tabs{display:flex;gap:4px;padding:4px;background:#eef2f7;border-radius:12px}.mode-tabs button{border:0;background:transparent;padding:8px 18px;border-radius:9px;font-weight:700;color:var(--muted)}.mode-tabs button[aria-selected=true]{background:#fff;color:var(--accent);box-shadow:0 1px 4px #0000001f}.admin-link{padding:8px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--muted);font-weight:700;line-height:1.3;text-decoration:none;white-space:nowrap}.admin-link:hover{background:#f2f5fa;color:var(--accent)}.menu .menu-admin{display:none;margin-top:4px;padding:10px 12px;border-top:1px solid var(--line);color:var(--text);line-height:1.3;text-decoration:none;white-space:nowrap}.menu .menu-admin:hover{background:#f2f5fa}.panel{position:fixed;z-index:9;overflow:auto;padding:14px;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.panel.left{top:84px;left:12px;bottom:12px;width:288px}.panel.right{top:84px;right:12px;width:248px}.panel h2{display:flex;justify-content:space-between;margin:0 0 8px;font-size:13px;font-weight:700;color:var(--muted)}.panel section+section{margin-top:18px}.panel .count{font-weight:600}.panel-toggle{display:none}.template-grid,.palette{display:grid;grid-template-columns:1fr 1fr;gap:6px}.template-grid button{display:flex;flex-direction:column;gap:2px;text-align:left;padding:8px 10px}.template-grid b{font-size:14px}.template-grid small{font-size:11px;color:var(--muted)}.row{display:flex;gap:12px;flex-wrap:wrap}.row label{display:flex;align-items:center;gap:4px;font-size:13px}.row input{width:64px;padding:6px;border:1px solid var(--line);border-radius:8px}.hint{margin:8px 0 0;font-size:12px;line-height:1.6;color:var(--muted)}.legend{list-style:none;display:grid;gap:4px;margin:10px 0 0;padding:0;font-size:12px}.legend li{display:flex;align-items:center;gap:6px}.dot{flex:none;width:12px;height:12px;border-radius:50%;border:1px solid rgba(0,0,0,.15)}.btn-row{display:flex;gap:6px;margin-top:8px}.btn-row button{flex:1}label.stack{display:flex;flex-direction:column;gap:6px;margin-top:14px;font-size:13px}.help{position:fixed;left:12px;top:84px;z-index:8;max-width:520px;padding:10px 14px;font-size:13px;line-height:1.6;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.help b{color:var(--text);margin-right:10px}.prompt{position:fixed;left:50%;bottom:28px;z-index:11;transform:translate(-50%);display:flex;align-items:center;gap:14px;width:max-content;max-width:calc(100vw - 24px);padding:10px 10px 10px 18px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 32px #14284638}.prompt-dest{display:flex;align-items:center;gap:8px;font-size:15px;white-space:nowrap}.prompt.seated .prompt-dest{white-space:normal}.prompt.seated{flex-direction:column;align-items:stretch;gap:4px;width:min(440px,calc(100vw - 32px));padding:14px 16px;left:auto;right:12px;bottom:12px;transform:none}.prompt.seated .btn-row button{padding:10px 12px}.seat-choices{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}.seat-choices .choice{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px 10px;font-size:13px;font-weight:700;line-height:1.35}.seat-choices .choice .dot{width:14px;height:14px}.seat-choices .choice kbd{position:absolute;top:5px;right:5px;margin:0}.seat-choices .choice small{font-size:10px;font-weight:700;color:var(--accent)}.seat-choices .choice.recommended{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.seat-choices .choice.picked{background:#eaf1fd}.chat{position:fixed;left:12px;bottom:12px;z-index:9;width:340px;display:flex;flex-direction:column;gap:6px;padding:10px;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.chat-head{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted)}.voice-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.voice-bar button{padding:5px 10px;font-size:13px;border-radius:999px}.voice-btn.on{background:#e9f7ef;border-color:#22a55b;color:#17663a}.mic-btn{background:#22a55b;border-color:#22a55b;color:#fff}.mic-btn.off{background:#fff;border-color:var(--danger);color:var(--danger)}.voice-info{font-size:12px;color:var(--muted)}.voice-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px}.voice-list li{display:flex;align-items:center;gap:4px;padding:2px 4px 2px 8px;font-size:12px;border:1px solid var(--line);border-radius:999px;background:#fff}.voice-list li.talk{border-color:#22a55b;box-shadow:0 0 0 2px #22a55b40}.voice-list li button{padding:1px 6px;font-size:11px;border-radius:999px}.panel .row-check{display:flex;align-items:center;gap:6px;font-size:13px}.net-status[data-state=on]{color:#1f7a4d}.net-status[data-state=off]{color:var(--danger)}.chat-log{list-style:none;display:grid;gap:3px;max-height:160px;overflow:auto;margin:0;padding:0;font-size:13px;line-height:1.5}.chat-log:empty:before{content:"4m以内にいる人に届きます。Enter で書けます。";color:var(--muted);font-size:12px}.chat-log li b{margin-right:6px}.chat-log li.me b{color:var(--accent)}.chat-log li.sys{font-size:12px;color:var(--muted)}.chat-form{display:flex;gap:6px}.chat-form input{flex:1;min-width:0;padding:8px 10px;font-size:15px;border:1px solid var(--line);border-radius:10px}.avatar-chip{position:fixed;right:12px;top:84px;z-index:8;display:flex;align-items:center;gap:8px;padding:6px 6px 6px 8px;background:var(--panel);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow);font-size:14px;font-weight:700}.avatar-chip img{width:36px;height:36px;object-fit:contain}.avatar-chip img[hidden]{display:none}.avatar-chip button{border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:16px;background:#141e2d73}.modal-card{position:relative;width:min(520px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:24px 22px 20px;background:#fff;border-radius:18px;box-shadow:0 20px 60px #0000004d}.modal-card h2{margin:0 0 6px;font-size:20px}.modal-card .lead{margin:0 0 14px;font-size:14px;line-height:1.7;color:var(--muted)}.modal-card .id-only{margin:0 0 12px;padding:8px 12px;border-radius:10px;background:#fff4d6;color:#6b4a00;font-size:14px;font-weight:700;line-height:1.6}.modal-close{position:absolute;top:10px;right:10px;width:36px;height:36px;padding:0;border:0;font-size:22px;color:var(--muted);background:transparent}.who-form{display:grid;gap:10px}.who-form label{display:grid;gap:4px;font-size:13px;font-weight:600}.who-form input:not([type=checkbox]),#pickSearch{width:100%;padding:10px 12px;font-size:16px;border:1px solid var(--line);border-radius:10px}.who-form .primary{padding:12px;margin-top:4px}.who-form .row-check{display:flex;align-items:center;gap:6px;font-weight:500}.linkish{border:0;background:none;padding:6px 0;color:var(--accent);font-size:13px;text-decoration:underline;text-align:left}.old-login{margin-top:14px;font-size:12px;color:var(--muted)}.old-login summary{cursor:pointer}.old-login form{margin-top:8px}.consent{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:grid;gap:6px}.consent legend{font-size:13px;font-weight:700;padding:0 4px}.consent p{margin:0;font-size:12px;line-height:1.6;color:var(--muted)}.mb-id{margin:0 0 8px;padding:10px 12px;background:#eaf1fd;border-radius:10px;font-size:14px}.mb-id code{font-size:18px;font-weight:800;letter-spacing:.08em}.error{margin:0;padding:8px 10px;font-size:13px;color:var(--danger);background:#fdecec;border-radius:8px}.or{display:flex;align-items:center;gap:10px;margin:16px 0;font-size:12px;color:var(--muted)}.or:before,.or:after{content:"";flex:1;height:1px;background:var(--line)}button.wide{width:100%;padding:11px}.link-state{list-style:none;display:grid;gap:4px;margin:4px 0 12px;padding:0;font-size:12px;color:var(--muted)}.link-state li:before{content:"○ "}.link-state li.ok{color:#1f7a4d;font-weight:600}.link-state li.ok:before{content:"✓ "}.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;max-height:46vh;overflow:auto;margin:12px 0;padding:2px}.pick-grid button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;font-size:12px;position:relative}.pick-grid img{width:64px;height:64px;object-fit:contain}.pick-grid .fav{position:absolute;top:4px;right:6px;color:#f0a500;font-size:13px}.pick-grid span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast{position:fixed;left:50%;top:84px;z-index:30;transform:translate(-50%);padding:10px 16px;border-radius:10px;font-size:14px;color:#fff;background:#1d2733eb}@media(max-width:760px){.topbar{top:8px;left:8px;right:8px;gap:8px}.brand{display:none}.mode-tabs button{padding:8px 12px}.admin-link{padding:8px 10px}.panel.left{top:auto;left:8px;right:8px;bottom:8px;width:auto;max-height:46vh}.panel.left.collapsed{max-height:56px;overflow:hidden}.panel-toggle{display:block;width:100%;margin-bottom:12px;font-weight:700}.panel.right{top:68px;left:8px;right:8px;width:auto}.help{left:8px;right:8px;top:68px;max-width:none}.avatar-chip{top:136px;right:8px}.place-badge{top:186px;right:8px}.chat{left:8px;right:8px;bottom:8px;width:auto}.chat-log{max-height:64px}.prompt,.prompt.seated{bottom:150px}.prompt{bottom:16px}.prompt.seated{left:50%;right:auto;bottom:8px;transform:translate(-50%)}}@media(max-width:480px){.admin-link{display:none}.menu .menu-admin{display:block}}.campus h3{margin:14px 0 6px;font-size:13px}.campus .bcard{margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff}.campus .bcard.active{border-color:var(--accent);box-shadow:0 0 0 2px #2f6fdb26}.campus .bhead{display:flex;gap:6px;align-items:center}.campus .bhead input{flex:1;min-width:0;padding:6px 8px;border:1px solid var(--line);border-radius:8px;font-weight:700}.campus .row select,.campus .row input{padding:5px 6px;border:1px solid var(--line);border-radius:8px}.campus .floor{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}.campus .floor-head{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:700}.campus .side{margin-top:6px;font-size:12px;color:var(--muted)}.campus .room{display:flex;gap:4px;margin-top:4px}.campus .room select{flex:1;min-width:0;padding:5px 6px;border:1px solid var(--line);border-radius:8px;font-size:12px}.campus .room button,.campus .mini{padding:4px 8px;font-size:12px}.campus .add-row{display:flex;gap:4px;margin-top:4px}.campus .add-row button{flex:1;padding:5px 6px;font-size:12px}.panel select{max-width:100%}.swatch-row{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:13px}.swatch-row>span{width:44px;flex:none}.swatches{display:flex;flex-wrap:wrap;gap:5px}.swatches button{width:24px;height:24px;padding:0;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}.swatches button[aria-pressed=true]{box-shadow:0 0 0 2px var(--accent)}.place-badge{position:fixed;right:12px;top:136px;z-index:8;padding:8px 12px;font-size:13px;font-weight:700;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}#stairsBtns{margin-top:0}#stairsBtns button{padding:8px 14px}.panel input.full{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:8px;font:inherit}
