*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100vh}#app{max-width:480px;margin:0 auto;padding:16px;min-height:100vh;display:flex;flex-direction:column}h2{margin-bottom:12px}h3{margin-bottom:8px}button{display:block;width:100%;padding:14px 20px;min-height:48px;border:1px solid #aaa;border-radius:8px;background:#eee;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.4;cursor:not-allowed}button.small{padding:8px 14px;min-height:40px}input[type=text],input[type=password]{display:block;width:100%;padding:12px 16px;min-height:48px;border:1px solid #aaa;border-radius:8px;touch-action:manipulation;outline:none;font-size:16px}input[type=range]{width:100%;touch-action:manipulation;cursor:pointer}.gap{height:12px}.gap-lg{height:20px}.card{border:1px solid #ddd;border-radius:8px;padding:16px;margin-bottom:12px}.room-code{text-align:center;padding:16px 0}.player-list{list-style:none}.player-list li{padding:10px 12px;border:1px solid #ddd;border-radius:8px;margin-bottom:6px;display:flex;align-items:center;gap:8px}.player-list li .dot{width:10px;height:10px;border-radius:50%;background:#bbb;flex-shrink:0}.player-list li.connected .dot{background:#555}.error-msg{padding:8px 0}.turn-badge{display:inline-block;padding:4px 10px;border-radius:20px;margin-bottom:8px}.tab-bar{display:flex;border-bottom:2px solid #ccc;margin-bottom:0}.tab{flex:1;padding:10px 12px;min-height:44px;border:none;border-right:1px solid #ddd;border-bottom:2px solid transparent;margin-bottom:-2px;border-radius:0;background:transparent;cursor:pointer;touch-action:manipulation}.tab:last-child{border-right:none}.tab:disabled{cursor:not-allowed;background:transparent}.tab-active{font-weight:700;border-bottom-color:#555}.tab-body{padding:14px 0 4px;display:flex;flex-direction:column;gap:10px}.inline-form{display:flex;gap:8px;margin-top:8px}.inline-form input{flex:1}.inline-form button{width:auto;flex-shrink:0;padding:12px 16px}.axis-panel{margin-bottom:16px}.axis-selects{display:flex;gap:10px;margin-top:4px}.axis-select-wrap{flex:1;display:flex;flex-direction:column;gap:4px}.axis-select{width:100%;padding:10px 12px;min-height:48px;border:1px solid #aaa;border-radius:8px;touch-action:manipulation;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;font-size:16px}.axis-select:focus{outline:none}.axis-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid #ddd;border-radius:8px;margin-bottom:6px;cursor:pointer;touch-action:manipulation}.things-list{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0}.thing-tag{padding:4px 10px;border:1px solid #ccc;border-radius:20px}.plot-container{border:1px solid #ddd;border-radius:8px;padding:16px;margin-bottom:16px}.plot-panel .plot-1d,.plot-panel .plot-2d-wrapper{margin-top:16px}.plot-1d{position:relative;height:80px;margin:20px 0}.plot-1d .axis-line{position:absolute;top:50%;left:0;right:0;height:2px;background:#999}.plot-1d .axis-labels{position:absolute;top:100%;left:0;right:0;display:flex;justify-content:space-between}.plot-1d .dot-wrapper{position:absolute;top:50%;transform:translate(-50%,-50%)}.plot-1d .dot{width:14px;height:14px;border-radius:50%;background:#555;border:2px solid #fff}.plot-1d .dot.secret{background:#f5c400}.plot-1d .dot-label{position:absolute;top:-22px;left:50%;transform:translate(-50%);white-space:nowrap}.plot-2d-wrapper{width:100%;aspect-ratio:1;position:relative}.plot-2d-wrapper canvas{width:100%!important;height:100%!important;border-radius:8px}.plot-row{display:flex;flex-direction:column;gap:8px;padding:10px 0;border-bottom:1px solid #ddd}.plot-row:last-child{border-bottom:none}.plot-row.plotted{opacity:.5}.plot-row-controls{display:flex;gap:10px;align-items:center}.plot-row-controls .value-display{min-width:28px;text-align:center}.na-checkbox{display:flex;align-items:center;gap:6px;cursor:pointer;touch-action:manipulation}.na-checkbox input{width:18px;height:18px;cursor:pointer}.broadcast-feed{list-style:none;max-height:200px;overflow-y:auto}.broadcast-feed li{padding:4px 0;border-bottom:1px solid #ddd}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal-box{border:1px solid #ddd;border-radius:8px;padding:24px;max-width:320px;width:90%;background:#fff;text-align:center}.modal-box canvas{border-radius:8px;max-width:100%}.top-bar{display:flex;justify-content:space-between;align-items:center;padding:8px 0 16px}.top-bar button{width:auto;padding:8px 14px}.inapplicable-msg{border:1px solid #aaa;padding:12px 16px;border-radius:8px;margin-bottom:12px}.winner-banner{text-align:center;padding:24px 0}.winner-banner .trophy{margin-bottom:8px}.winner-banner .secret-reveal{margin-top:12px}.host-gone-screen{text-align:center;padding:32px 0}.host-gone-screen h2{margin-bottom:12px}.host-gone-screen p{margin-bottom:24px}.divider{height:1px;background:#ddd;margin:16px 0}.your-turn-label,.waiting-label{margin-bottom:8px}.host-controls{margin-top:16px;padding:12px;border:1px solid #ddd;border-radius:8px}.host-controls .btns{display:flex;gap:8px}.host-controls .btns button{flex:1}
