.tool-head{background:linear-gradient(135deg,#1E3A5F 0%,#1E40AF 50%,#3B82F6 100%);color:#fff;padding:48px 0 32px;text-align:center;}
.tool-head h1{font-size:1.8rem;font-weight:700;margin-bottom:8px;}
.tool-head p{font-size:.93rem;opacity:.85;max-width:640px;margin:0 auto;padding:0 20px;}
.tool-main{max-width:960px;margin:0 auto;padding:32px 20px;}
.tool-card{background:var(--bg-card);border:1px solid var(--bd);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);}
.work-area{display:flex;flex-direction:column;gap:12px;}
.tw-input,.tw-select,.tw-textarea{width:100%;padding:10px 14px;border:1px solid var(--bd);border-radius:var(--radius-sm);background:var(--bg);outline:none;transition:border-color var(--trans),box-shadow var(--trans);font-family:inherit;font-size:.93rem;}
.tw-textarea{font-family:var(--font-mono);font-size:.85rem;line-height:1.6;min-height:100px;}
.tw-input:focus,.tw-select:focus,.tw-textarea:focus{border-color:var(--bd-focus);box-shadow:0 0 0 3px rgba(59,130,246,.12);}
.tw-output{width:100%;padding:14px;border:1px solid var(--bd);border-radius:var(--radius-sm);background:var(--bg);font-family:var(--font-mono);font-size:.85rem;color:var(--tx);white-space:pre-wrap;word-break:break-all;line-height:1.5;overflow:auto;min-height:60px;}
.tw-code{width:100%;min-height:100px;padding:14px;border:1px solid var(--bd);border-radius:var(--radius-sm);background:#1E293B;color:#E2E8F0;font-family:var(--font-mono);font-size:.82rem;white-space:pre-wrap;word-break:break-all;line-height:1.5;overflow:auto;}
.tw-btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;background:var(--bg);color:var(--tx);border:1px solid var(--bd);transition:all var(--trans);white-space:nowrap;}
.tw-btn:hover{background:var(--bg-hover);border-color:var(--tx-light);}
.tw-btn:focus-visible{outline:2px solid var(--bd-focus);outline-offset:2px;}
.tw-btn--primary{background:var(--ac);color:#fff;border-color:var(--ac);}
.tw-btn--primary:hover{background:var(--ac-hover);border-color:var(--ac-hover);}
.tw-btn--accent{background:var(--sc);color:#fff;border-color:var(--sc);}
.tw-btn--accent:hover{background:#059669;border-color:#059669;}
.tw-btn--sm{padding:5px 10px;font-size:.78rem;}
.tw-btn:disabled{opacity:.5;cursor:not-allowed;}
.tw-btn-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.tw-radio,.tw-checkbox{display:inline-flex;align-items:center;gap:4px;font-size:.8rem;color:var(--tx-sec);cursor:pointer;user-select:none;}
.tw-radio input,.tw-checkbox input{accent-color:var(--ac);}
.tw-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.tw-row>div{display:flex;flex-direction:column;}
.tw-row label{font-size:.78rem;color:var(--tx-sec);margin-bottom:2px;font-weight:500;}
.tw-checkbox-group{display:flex;flex-wrap:wrap;gap:8px;}
.hint{font-size:.85rem;color:var(--tx-sec);margin-bottom:8px;line-height:1.5;}
.tw-info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;margin-top:8px;}
.tw-info-item{background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:10px 14px;display:flex;flex-direction:column;gap:2px;}
.tw-info-item .label{font-size:.72rem;color:var(--tx-sec);}
.tw-info-item .value{font-family:var(--font-mono);font-size:1rem;font-weight:600;color:var(--tx);word-break:break-all;}
.tw-stat{background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:12px 14px;display:flex;flex-direction:column;gap:3px;}
.tw-stat .label{font-size:.72rem;color:var(--tx-sec);}
.tw-stat .value{font-family:var(--font-mono);font-size:1.15rem;font-weight:700;color:var(--ac);}
.tw-result-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-top:8px;}
.tw-color-preview{width:100%;height:48px;border-radius:var(--radius-sm);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:1rem;font-weight:700;transition:background .2s;}
.tw-qr-wrap{display:flex;justify-content:center;align-items:center;padding:16px;background:var(--bg);border-radius:var(--radius-sm);min-height:120px;}
.cmd-list{max-height:420px;overflow-y:auto;border:1px solid var(--bd);border-radius:var(--radius-sm);}
.cmd-row{display:flex;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--bd);font-size:.82rem;gap:12px;}
.cmd-row:last-child{border-bottom:none;}
.cmd-row code{color:var(--ac);font-weight:500;flex:1;}
.cmd-row span{color:var(--tx-sec);flex-shrink:0;text-align:right;}
.tw-hidden{display:none !important;}
.wol-send-section,.wol-ascii,.wol-note,.wol-links,.wol-help,.wol-row,.wol-form,.wol-result{display:flex;flex-direction:column;gap:12px;}
.cron-fields{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:16px;}
.cron-field label{display:block;font-size:.7rem;color:var(--tx-sec);margin-bottom:2px;text-align:center;font-weight:500;}
.cron-field input{width:100%;text-align:center;padding:8px 4px;border:1px solid var(--bd);border-radius:var(--radius-sm);background:var(--bg);font-family:var(--font-mono);font-size:.85rem;font-weight:600;outline:none;}
.cron-field input:focus{border-color:var(--bd-focus);}
.cron-expr{text-align:center;font-family:var(--font-mono);font-size:1.2rem;font-weight:700;color:var(--tx);background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:14px;margin-bottom:6px;}
.cron-desc{text-align:center;font-size:.85rem;color:var(--tx-sec);}
.ts-now{text-align:center;font-size:.93rem;margin-bottom:10px;color:var(--tx-sec);background:var(--bg);padding:10px;border:1px solid var(--bd);border-radius:var(--radius-sm);}
.ts-now strong{font-family:var(--font-mono);color:var(--ac);margin-right:6px;font-size:1.05rem;}
.kb-info-display{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding:12px;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);}
.kb-info-item{flex:1 1 90px;text-align:center;background:var(--bg-card);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:10px 6px;}
.kb-info-item .label{font-size:.7rem;color:var(--tx-sec);margin-bottom:4px;}
.kb-info-item .value{font-family:var(--font-mono);font-size:1.2rem;font-weight:700;color:var(--ac);}
.piano-keys{display:flex;justify-content:center;gap:3px;margin-top:16px;flex-wrap:wrap;}
.piano-key{width:44px;height:140px;background:#fff;border:1px solid var(--bd);border-radius:0 0 6px 6px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:10px;font-size:.78rem;font-weight:600;color:var(--tx-sec);cursor:pointer;transition:background .1s;user-select:none;}
.piano-key:hover{background:var(--ac-light);}
.piano-key:active{background:var(--ac);color:#fff;}
.tuner-display{text-align:center;font-size:4rem;font-weight:800;color:var(--ac);margin:24px 0 0;}
.tuner-hz{text-align:center;color:var(--tx-sec);font-size:1rem;font-family:var(--font-mono);margin-bottom:24px;}
.metro-control{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:16px;padding:16px;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);}
.metro-control input[type=range]{width:200px;}
.metro-bpm{font-family:var(--font-mono);font-size:1.3rem;font-weight:700;color:var(--ac);min-width:44px;text-align:center;}
.metro-beat{text-align:center;font-size:3rem;font-weight:800;color:var(--ac);margin:16px 0;}
.chord-result{margin-top:16px;padding:16px;text-align:center;font-family:var(--font-mono);font-size:1.1rem;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);min-height:100px;white-space:pre-wrap;}
.tw-tabs{display:flex;gap:4px;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:4px;margin-bottom:12px;}
.tw-tab{flex:1;padding:7px 12px;border-radius:6px;font-size:.82rem;font-weight:500;color:var(--tx-sec);background:transparent;transition:var(--trans);cursor:pointer;text-align:center;border:none;}
.tw-tab:hover{color:var(--tx);}
.tw-tab.active{background:var(--ac);color:#fff;font-weight:600;}
.rank-table table{width:100%;border-collapse:collapse;font-size:.82rem;}
.rank-table th{background:#F1F5F9;padding:8px 12px;text-align:left;font-weight:600;color:var(--tx);border-bottom:1px solid var(--bd);}
.rank-table td{padding:7px 12px;border-bottom:1px solid var(--bd);color:var(--tx-sec);}
.rank-table tr:last-child td{border-bottom:none;}
.diff-out{font-family:var(--font-mono);font-size:.84rem;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:14px;min-height:60px;white-space:pre-wrap;word-break:break-all;}
.md-preview{background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:16px;line-height:1.7;font-size:.9rem;}
.md-preview h1,.md-preview h2,.md-preview h3{margin:1em 0 .5em;line-height:1.3;}
.md-preview p{margin-bottom:.75em;}
.md-preview code{background:#E2E8F0;padding:2px 6px;border-radius:4px;font-family:var(--font-mono);font-size:.85em;}
.md-preview pre{background:#1E293B;color:#E2E8F0;padding:14px;border-radius:var(--radius-sm);overflow-x:auto;margin:1em 0;}
.md-preview pre code{background:transparent;padding:0;color:inherit;}
.md-preview ul,.md-preview ol{padding-left:1.5em;margin:.5em 0;}
.md-preview li{margin:.25em 0;}
.md-preview a{color:var(--ac);text-decoration:underline;}
.error-text{color:var(--er);font-size:.85rem;margin-top:4px;}
.loading-dots::after{content:'...';animation:dots 1.5s steps(4,end) infinite;}
@keyframes dots{0%,20%{content:''}40%{content:'.'}60%{content:'..'}100%{content:'...'}}
@media(max-width:768px){.tool-head h1{font-size:1.4rem;}.tool-card{padding:16px;}.cron-field input{font-size:.78rem;padding:6px 2px;}.piano-key{width:32px;height:100px;}.tw-row{grid-template-columns:1fr;}.tuner-display{font-size:3rem;}}
@media(max-width:480px){.piano-key{width:28px;height:80px;font-size:.65rem;}}
.p2p-wrap{display:flex;flex-direction:column;gap:16px;}.p2p-mode-tabs{display:flex;gap:4px;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:4px;}.p2p-tab{flex:1;padding:8px 16px;border-radius:6px;font-size:.85rem;font-weight:500;color:var(--tx-sec);background:transparent;border:none;cursor:pointer;text-align:center;transition:var(--trans);}.p2p-tab:hover{color:var(--tx);}.p2p-tab.active{background:var(--ac);color:#fff;font-weight:600;}.p2p-panel{display:flex;flex-direction:column;gap:12px;}.p2p-room-id label{font-size:.78rem;color:var(--tx-sec);font-weight:500;margin-bottom:4px;display:block;}.p2p-id-row{display:flex;gap:6px;align-items:center;}.p2p-id-row .tw-input{flex:1;font-family:var(--font-mono);font-size:1rem;font-weight:600;text-align:center;letter-spacing:2px;}.p2p-status{text-align:center;padding:10px;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);font-size:.85rem;color:var(--tx-sec);}.p2p-file-zone{display:flex;align-items:center;gap:12px;padding:12px;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);}.p2p-filename{font-size:.85rem;color:var(--tx-sec);}.p2p-progress{display:flex;align-items:center;gap:12px;}.p2p-progress-bar{flex:1;height:8px;background:var(--bg);border-radius:4px;overflow:hidden;}.p2p-progress-fill{height:100%;width:0;background:var(--ac);transition:width .2s;}.p2p-progress-text{font-family:var(--font-mono);font-size:.82rem;color:var(--tx-sec);min-width:110px;text-align:right;}.p2p-recv-meta{padding:12px;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);font-size:.85rem;}.p2p-note,.wol-help{margin-top:16px;padding:16px;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);font-size:.85rem;color:var(--tx-sec);line-height:1.7;}.p2p-note ol,.p2p-note ul,.wol-help ol,.wol-help ul{padding-left:1.5em;margin:.5em 0;}.p2p-note li,.wol-help li{margin:.25em 0;}.p2p-warning{color:#D97706;margin-top:8px;}.p2p-manual,.wol-result{display:flex;flex-direction:column;gap:12px;padding:12px;}.wol-row{display:grid;grid-template-columns:2fr 1fr;gap:12px;}.wol-row label{display:flex;flex-direction:column;gap:4px;font-size:.78rem;color:var(--tx-sec);font-weight:500;}.wol-result h3,.wol-result h4{margin-top:8px;}.wol-packet-info{background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);padding:12px;display:flex;flex-direction:column;gap:4px;}.wol-info-row{display:flex;gap:8px;font-size:.85rem;}.wol-label{color:var(--tx-sec);min-width:90px;}.wol-ascii{font-family:var(--font-mono);font-size:.75rem;background:#1E293B;color:#E2E8F0;padding:14px;border-radius:var(--radius-sm);white-space:pre-wrap;word-break:break-all;line-height:1.5;overflow:auto;}.wol-links{display:flex;gap:8px;}.wol-help details{border:1px solid var(--bd);border-radius:var(--radius-sm);padding:8px 12px;}.wol-help summary{cursor:pointer;font-weight:600;}.wol-help-content{margin-top:8px;}
.guitar-wrap{display:flex; flex-direction:column; gap:16px;}
.guitar-controls{display:flex; align-items:center; gap:12px; flex-wrap:wrap;}
.guitar-controls label{display:flex; flex-direction:column; gap:4px; font-size:.78rem; color:var(--tx-sec); font-weight:500;}
.guitar-diagram{background:var(--bg); border:1px solid var(--bd); border-radius:var(--radius-sm); padding:20px;}
.gtr-diagram{position:relative; max-width:240px; margin:0 auto;}
.gtr-chord-name{text-align:center; font-size:1.4rem; font-weight:700; color:var(--tx); margin-bottom:10px;}
.gtr-start-fret{text-align:right; font-size:.7rem; color:var(--tx-sec); margin-bottom:4px;}
.gtr-fretboard{position:relative; padding:0 10px;}
.gtr-string{display:flex; gap:0; height:2px; background:var(--tx-light); margin:10px 0; position:relative;}
.gtr-fret{width:25%; height:20px; border-right:2px solid var(--bd); position:relative; display:flex; align-items:center; justify-content:center;}
.gtr-fret:last-child{border-right:none;}
.gtr-fret-nut{border-right:3px solid var(--tx);}
.gtr-fret-marked{background:none;}
.gtr-finger-dot{width:16px; height:16px; background:var(--ac); border-radius:50%; box-shadow:0 1px 3px rgba(0,0,0,.3); cursor:default;}
.gtr-mute{font-size:.9rem; color:var(--er); font-weight:700; position:absolute; top:-18px;}
.gtr-fret-num{font-size:.65rem; color:var(--tx-sec); margin-top:2px; text-align:center;}
.gtr-fretboard .gtr-fret-num{display:inline-block; width:25%;}
.guitar-notes,.gtr-notes-list{font-size:.82rem; padding:12px; background:var(--bg); border:1px solid var(--bd); border-radius:var(--radius-sm);}
.gtr-notes-title{font-weight:600; color:var(--tx); margin-bottom:6px;}
.guitar-notes ul{margin:0; padding-left:1.2em; color:var(--tx-sec);}
.guitar-notes li{margin:.25em 0;}
.guitar-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(56px,1fr)); gap:6px;}
.gtr-grid-btn{padding:8px 4px; border:1px solid var(--bd); border-radius:var(--radius-sm); background:var(--bg); color:var(--tx-sec); font-weight:600; cursor:pointer; transition:all var(--trans); font-size:.85rem;}
.gtr-grid-btn:hover{border-color:var(--ac); color:var(--ac);}
.gtr-grid-btn.active{background:var(--ac); color:#fff; border-color:var(--ac);}
.utm-form{display:flex; flex-direction:column; gap:10px;}
.utm-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:10px;}
.utm-grid label,.utm-form label{display:flex; flex-direction:column; gap:4px; font-size:.78rem; color:var(--tx-sec); font-weight:500;}
.utm-hint{font-size:.7rem; color:var(--tx-sec); font-weight:400;}
.utm-result{display:flex; flex-direction:column; gap:8px; margin-top:12px; padding:14px; background:var(--bg); border:1px solid var(--bd); border-radius:var(--radius-sm);}
.utm-detail-table{width:100%; border-collapse:collapse; font-size:.82rem;}
.utm-detail-table th{background:#F1F5F9; padding:6px 10px; text-align:left; font-weight:600; border-bottom:1px solid var(--bd);}
.utm-detail-table td{padding:6px 10px; border-bottom:1px solid var(--bd);}
.utm-presets{margin-top:12px;}
.utm-presets details{border:1px solid var(--bd); border-radius:var(--radius-sm); padding:8px 12px;}
.utm-presets summary{cursor:pointer; font-weight:600;}
.utm-ref-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:12px; margin-top:8px;}
.utm-ref-item strong{font-size:.82rem;}
.utm-ref-item ul{margin:.5em 0 0; padding-left:1.2em; font-size:.82rem; color:var(--tx-sec);}
.rmb-form{display:flex;flex-direction:column;gap:4px;}
.rmb-result{padding:16px;text-align:center;background:var(--bg);border:1px solid var(--bd);border-radius:var(--radius-sm);}
.rmb-result-label{font-size:.78rem;color:var(--tx-sec);margin-bottom:4px;}
.rmb-result-value{font-size:1.4rem;font-weight:700;color:var(--ac);letter-spacing:1px;}
.rmb-detail summary{cursor:pointer;font-weight:600;padding:8px 0;}
.rmb-detail-summary{list-style:none;}
.rmb-detail-summary::-webkit-details-marker{display:none;}
#rmbExplain{font-size:.85rem;color:var(--tx-sec);padding:8px 0;line-height:1.7;}
.rmb-table table{width:100%;border-collapse:collapse;font-size:.82rem;margin-top:8px;}
.rmb-table th{background:#F1F5F9;padding:6px 12px;text-align:left;font-weight:600;border-bottom:1px solid var(--bd);}
.rmb-table td{padding:6px 12px;border-bottom:1px solid var(--bd);color:var(--tx-sec);}
.rmb-table tr:last-child td{border-bottom:none;}
